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 trash-cli-0.12.9.14.tar.gz

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 删除回收站里面超过指定天数的文件


转载:https://pypi.python.org/pypi/trash-cli/

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-list
2008-06-01 10:30:48 /home/andrea/bar
2008-06-02 21:50:41 /home/andrea/bar
2008-06-23 21:50:49 /home/andrea/foo

Search for a file in the trashcan:

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

Restore a trashed file:

$ restore-trash
0 2007-08-30 12:36:00 /home/andrea/foo
1 2007-08-30 12:39:41 /home/andrea/bar
2 2007-08-30 12:39:41 /home/andrea/bar2
3 2007-08-30 12:39:41 /home/andrea/foo2
4 2007-08-30 12:39:41 /home/andrea/foo
What file to restore [0..4]: 4
$ ls foo
foo

Remove all files from the trashcan:

$ trash-empty

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

$ trash-empty <days>

Example:

$ date
Tue Feb 19 20:26:52 CET 2008
$ trash-list
2008-02-19 20:11:34 /home/einar/today
2008-02-18 20:11:34 /home/einar/yesterday
2008-02-10 20:11:34 /home/einar/last_week
$ trash-empty 7
$ trash-list
2008-02-19 20:11:34 /home/einar/today
2008-02-18 20:11:34 /home/einar/yesterday
$ trash-empty 1
$ trash-list
2008-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 sources
wget https://github.com/andreafrancia/trash-cli/tarball/master # unpack and install
tar xfz andreafrancia-trash-cli-xxxxxxxx.tar.gz
cd andreafrancia-trash-cli-xxxxxxxx
sudo python setup.py install

Bugs and feedback

If you discover a bug please report it to:

https://github.com/andreafrancia/trash-cli/issues

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

Development

Environment setup:

virtualenv env --no-site-packages
source env/bin/activate
pip install -r requirements-dev.txt

Running tests:

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

Check the installation process before release:

python check_release_installation.py

Profiling unit tests:

pip install gprof2dot
nosetests --with-profile --profile-stats-file stats.pf --profile-restrict=unit_tests unit_tests
gprof2dot -w -f pstats stats.pf | dot -Tsvg >| stats.svg
open stats.svg

为rm命令增加回收站功能的更多相关文章

  1. linux下rm命令修改,增加回收站功能【笔记】

    一个脚本,linux的用户根目录下.bashrc最后加入如下代码,可以修改rm命令,让人们rm时候不再会全部删除,而是会加入到回收站里,以下是根据别人的资料参考修改的,不是原创 加入后,需要sourc ...

  2. Linux将rm命令设置为回收站【转】

    一个方案就是重定向 rm 命令以嫁接为 mv 命令,相当于给 Linux 系统定制了一个回收站. 实现方式如下: ### 重定义rm命令 ### # 定义回收站目录 trash_path='~/.tr ...

  3. 重新嫁接rm命令

    ### 重定义rm命令 #### 定义回收站目录trash_path='~/.trash'# 判断 $trash_path 定义的文件是否存在,如果不存在,那么就创建 $trash_path.if [ ...

  4. 将linux下的rm命令改造成移动文件至回收站【转】

    转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移 ...

  5. ubuntu 修该rm命令使删除文件到回收站

    ubuntu下删除文件到回收站 相信有不少同学和我一样,有因习惯了rm命令,好几次一不小心冲动就删除重要文件的惨痛经历! 目标:将删除成功的文件会放入系统回收站中,位置:~/.local/share/ ...

  6. windows 增加右键功能 -->用命令行打开

    windows 增加右键功能 -->用命令行打开 实现 注册表 以管理员权限CMD 到指定文件夹 Windows Registry Editor Version 5.00 [HKEY_CLASS ...

  7. linux中使用rm命令将文件移到回收站的方法

    今天在终端下,看到我的用户目录下有个-的文件夹(maven生成),相要删除收回点空间,习惯性的用命令 rm -rf ~ ,一回车,猛然想起的时候已经来不及了,世界一下子清静了,想死的心都有了! 没错, ...

  8. 将linux下的rm命令改造成移动文件至回收站

    将linux下的rm命令改造成移动文件至回收站 rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有 ...

  9. 【Linux下禁用rm命令之建立回收站】

    第一步 创建回收站目录 # 根据自己的习惯,找个位置创建一个用作回收文件的目录 # 我们这里将在root目录下面创建一个名为".trash"的隐藏文件 [root@fedora ~ ...

随机推荐

  1. Xcode集成Google Test

    Xcode集成Google Test 1.下载源代码https://github.com/google/googletest 2.进入下载文件目录下googletest/make中运行make gte ...

  2. css 简单的 before after 笔记

    元素::first-line  段落得第一行样式 元素::first-letter 第一个字母 元素::first-before {  content:“mayufo”; } contentd的内容插 ...

  3. 子元素过滤器nth-child解释

    jQuery中的子元素过滤器nth-child是指:选取每个父元素下的第index个子元素或者奇偶元素(index从1算起) 这里有几点要注意: 1. index 从1开始算 2. 过滤器filter ...

  4. spring的annotation-driven配置事务管理器详解

    http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html ——————————————————————————————————————————————— ...

  5. HTML5每日一练之OL列表的改良

    在HTML5中的OL被改良了,为它增加了两个新属性. start属性:start属性用来定义列表编号的起始位置,比如下面的代码,列表将从50开始51...55以此类推 <ol start=&qu ...

  6. 《Java程序员修炼之道》

    原子类:java.util.concurrent.atomic 线程锁:java.util.concurrent.locks 对付死锁:boolean acquired = lock.tryLock( ...

  7. 微信get post请求到微信服务器 模版 素材操作

    1:素材管理 官方文档 package org.konghao.weixin.media; import java.io.File; import java.io.IOException; impor ...

  8. 【原创】省市二级联动纯javascript

    // 北京 上海 天津 重庆 河北 山西 内蒙古 辽宁 吉林 黑龙江 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 四川 贵州 云南 西藏 陕西 甘肃 宁夏 青海 新疆 香港 ...

  9. SpinLock 自旋锁, CAS操作(Compare & Set) ABA Problem

    SpinLock 自旋锁 spinlock 用于CPU同步, 它的实现是基于CPU锁定数据总线的指令. 当某个CPU锁住数据总线后, 它读一个内存单元(spinlock_t)来判断这个spinlock ...

  10. SAE/ISO standards for Automotive

    On-Board Diagnostics J1962 Diagnostic Connector Equivalent to ISO/DIS 15031-3: December 14, 2001J201 ...