博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为rm命令增加回收站功能
阅读量:5337 次
发布时间:2019-06-15

本文共 4283 字,大约阅读时间需要 14 分钟。

rm是个强大的命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有文件和目录时,很简单

$sudo rm -rf ./*

 

这没什么,但是,但是如果不小心打成这样

$sudo rm -rf /*

 

兄弟,请节哀!

还 有其他各种各样的杯具,比如打开了很多窗口,有本地机器还有远程的几台服务器,本来想从这台机器执行rm -rf命令,却错误的输

入到了其他机器的终端窗口,总之rm太危险了,特别是带有-rf参数时一定要慎之又慎,但老虎也有打盹的时候啊,所以为什么不给 rm

一剂后悔药呢,嗯,就是它,trash-cli

 

trash-cli就是带有回收站(Trash)功能的命令行删除工具,其主要特点有

 

兼容rm命令行接口,可以alias rm为trash-cli

为删除的每一个文件记录原始路径,删除时间和文件访问权限

兼容GNOME和KDE桌面的trash,实现桌面和terminal操作的统一

实现了FreeDesktop.org Trash Specification

支持除home文件系统以外的其他文件系统,比如不同的分区或移动设备分区

安装trash-cli

 

Ubuntu和Debian仓库里面的版本太低了,而且有严重的bug,去官方网站下载最新版本的trash-cli,然后执行以下命令完成安装

 

1 $tar xvfz

2 $cd trash-cli-0.12.9.14

3 $sudo python setup.py install

 

配置trash-cli替代rm

 

$vim ~/.bashrc

 

增添一行

alias rm="trash-put"

 

以后用rm删除文件的时候,文件会被移动到~/.local/share/Trash/files文件夹下,另一个文件夹~/.local/share/Trash/info下保

存了被删除文件的相关信息

 

trash-cli命令介绍

 

trash-put 删除文件

$trash-put foo

foo文件会被放入回收站(trashcan)

 

trash-list 列出回收站里面的文件

restore-trash 恢复指定的文件

1 $restore-trash

2 ...

3 ...

4 What file to restore [0..n]:

 

restore-trash会列出回收站里面的所有文件,每个文件前面有一个编号,从0开始,根据提示输入要恢复的文件的编号即可

 

trash-empty 清空回收站

trash-empty days 删除回收站里面超过指定天数的文件

 


 

转载:

trash-cli trashes files recording the original path, deletion date, and permissions. It uses the same trashcan used by KDE, GNOME, and XFCE, but you can invoke it from the command line (and scripts).

It provides these commands:

trash-put           trashes files and directories.trash-empty         empty the trashcan(s).trash-list          list trashed file.restore-trash       restore a trashed file.

Usage

Trash a file:

$ trash-put foo

List trashed files:

$ trash-list2008-06-01 10:30:48 /home/andrea/bar2008-06-02 21:50:41 /home/andrea/bar2008-06-23 21:50:49 /home/andrea/foo

Search for a file in the trashcan:

$ trash-list | grep foo2007-08-30 12:36:00 /home/andrea/foo2007-08-30 12:39:41 /home/andrea/foo

Restore a trashed file:

$ restore-trash0 2007-08-30 12:36:00 /home/andrea/foo1 2007-08-30 12:39:41 /home/andrea/bar2 2007-08-30 12:39:41 /home/andrea/bar23 2007-08-30 12:39:41 /home/andrea/foo24 2007-08-30 12:39:41 /home/andrea/fooWhat file to restore [0..4]: 4$ ls foofoo

Remove all files from the trashcan:

$ trash-empty

Remove only the files that have been deleted before <days> ago:

$ trash-empty 

Example:

$ dateTue Feb 19 20:26:52 CET 2008$ trash-list2008-02-19 20:11:34 /home/einar/today2008-02-18 20:11:34 /home/einar/yesterday2008-02-10 20:11:34 /home/einar/last_week$ trash-empty 7$ trash-list2008-02-19 20:11:34 /home/einar/today2008-02-18 20:11:34 /home/einar/yesterday$ trash-empty 1$ trash-list2008-02-19 20:11:34 /home/einar/today

Using it as 'rm' alias

trash-put accept all the options that GNU rm does, if you prefer (I don't) you can set up this alias in your .bashrc:

alias rm='trash-put'

At the present the semantic of trash-put is sligthly different from the one of rm, for example, while rm requires -R for deleting directories trash-put does not. This may change in future.

Keep in mind that Bash aliases are used only in interactive shells, so using this alias should not interfere with scripts that expects to use rm.

Installation (the easy way)

Requirements:

  • Python 2.7
  • setuptools (use apt-get install python-setuptools on Debian)

Installation command:

easy_install trash-cli

Installation from sources

# grab the latest sourceswget https://github.com/andreafrancia/trash-cli/tarball/master# unpack and installtar xfz andreafrancia-trash-cli-xxxxxxxx.tar.gzcd andreafrancia-trash-cli-xxxxxxxxsudo python setup.py install

Bugs and feedback

If you discover a bug please report it to:

You can reach me via email at . For twitter use @andreafrancia or #trashcli

Development

Environment setup:

virtualenv env --no-site-packagessource env/bin/activatepip install -r requirements-dev.txt

Running tests:

nosetests unit_tests           # run only unit testsnosetests integration_tests    # run all integration testsnosetests -A 'not stress_test' # run all tests but stress testsnosetests                      # run all tests

Check the installation process before release:

python check_release_installation.py

Profiling unit tests:

pip install gprof2dotnosetests --with-profile --profile-stats-file stats.pf --profile-restrict=unit_tests unit_testsgprof2dot -w  -f pstats stats.pf | dot -Tsvg >| stats.svgopen stats.svg

转载于:https://www.cnblogs.com/pengdonglin137/p/3625006.html

你可能感兴趣的文章
magento 安装
查看>>
《结对-HTML贪吃蛇游戏项目-测试过程》
查看>>
Python数据结构与语法
查看>>
UVA 1400 线段树
查看>>
C# ref
查看>>
接口API测试和返回值JSON解析的插件
查看>>
Shiro学习笔记
查看>>
Contest2195 - 2019-4-25 高一noip基础知识点 测试8 题解版
查看>>
EL表达式总结
查看>>
WCF的应用与说明
查看>>
JSON
查看>>
ibatis批量添加数据
查看>>
将 Shiro 作为应用的权限基础 二:基于SpringMVC实现的认证过程
查看>>
管理C++类中的指针成员
查看>>
生成函数与指数生成函数
查看>>
4.接口隔离原则(Interface Segregation Principle)
查看>>
wcf系列学习5天速成——第四天 wcf之分布式架构
查看>>
LeetCode "Maximum Product of Word Lengths"
查看>>
linux 用户与权限管理
查看>>
Api demo源码学习(9)--App/Activity/Receive Result --Activity间传递数据
查看>>