问题
相信有不少同学和我一样,有因习惯了rm命令,好几次一不小心冲动就删除重要文件的惨痛经历。
像这种使用 rm 命令误删除文件的情况,我们会注意,但是我们不能保证百分百的不会
出现这种情况,毕竟事情总有偶然,那么对于这种情况我们是不是就束缚无策呢,不!我们有相应的解决办法,那就是使用 trash-cli。
修改rm命令使删除文件到回收站
目标:将删除成功的文件会放入系统回收站中,位置:~/.local/share/Trash/files
目标:将删除成功的文件会放入系统回收站中
位置:回收站的位置位于~/.local/share/Trash/files
之前旧版本的回收站也可能在~/.Trash
回收站命令行工具trash-cli
trash-cli
是一个使用 Python
开发的软件包,包含trash-put
、restore-tras
h、trash-list
、trash-empty
、trash-rm
等命令,
我们可以通过这写命令,将文件移动到回收站,或者还原删除了的文件。 trash-put
命令会把我们想要删除的文件移动到~/.local/share/Trash/files
中,
相关信息记录在~/.local/share/Trash/info
中。
命令概览:
Tables | Are | Cool |
---|---|---|
trash-put | 将文件或目录移入回收站 | |
trash-empty | 清空回收站 | |
trash-list | 列出回收站中的文件 | |
restore-trash | 还原回收站中的文件 | |
trash-rm | 删除回收站中的单个文件 |
安装
直接使用包管理器安装
现在我们来安装
trash-cli
加入我们使用 CentOS,Fedora,Ubuntu等主流操作系统,我们可以直接使用软件包管理命令安装如
安装trash-cli工具,其实就是回收站的命令行模式:
sudo apt-get install trash-cli
- 1
- 1
如果是centos系统
sudo yum install -y trash-cli
- 1
- 1
用源码安装
如果包管理器安装失败,可以使用源码的安装
trash-cli
我们可以在一下地址找到
trash-cli–https://github.com/andreafrancia/trash-cli
下载源码包
我们使用 git 克隆出来,
git clone git@github.com:andreafrancia/trash-cli.git
- 1
- 1
或者直接下载压缩包
tar xf trash-cli-master.tar.gz
- 1
- 1
编译
cd trash-cli-master
sudo python setup.py build
sudo python setup.py install
- 1
- 2
- 3
- 1
- 2
- 3
rm和trash
因为和 rm命令接口是兼容的,所以,可以使用 trash-put 代替 rm,
trash-cli 在删除文件时会记录文件的原始路径、删除时间和文件权限,并且兼容GNOME和 KDE的 trash实现。同时也实现了 FreeDesktop.org Trash Specification也支持除 home文件系统意外的其他文件系统和文件分区以及移动设备分区安装完毕之后我们可以通过一些配置,给trash命令添加别名”rm”,覆盖系统rm命令
如果只是想本用户使用,就修改~/.profile或者~/.bashrc
但是如果想要全局使用,就使用/etc/profile或者/etc/bashrc中
其实由于交互式shell和非交互式shell的一些区别,命令别名最好放在bashrc类文件中
在文件中加入
alias rm="trash"
- 1
- 1
或者
alias rm=”trush-put”
- 1
- 1
如果想要立即生效就source一下
一键删除回收站
其实为了安全的话,满可以在全局的profile或者bashrc中添加trash的,
我们的trash命令也是支持root的
由于Ubuntu默认没有root账户,但是可以sudo获取root权限,或者sudo su和sudo -sH切换为root
在Ubuntu中,root账户其实也是存在的,只需要使用sudo su此命令Ubuntu每次会为root生成一个动态密码我们只需要输入自己的密码,就可以切换为root,使用exit退出。
当然如果您觉得麻烦,也可以直接为Ubuntu添加root账户。
但是没有root账户,那么我们就无法通过root账户登陆图形界面,那么也就无法使用gui进入回收站删除文件,那么每次进入~/.local/share/Trash/files
就略显笨拙。
因此我们这时我们就需要一键删除回收站的命令
alias trash-rm="sudo rm -rf $HOME/.local/share/Trash/files/"
- 1
- 1
最后附上我的整个配置
#modify by gatieme at 2015-09-14 19:48 for the rm to move all files to Trash
alias rm="trash"
alias RM="trash"
alias trash-rm="/bin/rm -rf $HOME/.local/share/Trash/files/"
alias rm-trash="/bin/rm -rf $HOME/.local/share/Trash/files/"
alias rm-trash-root="/bin/rm -rf /root/.local/share/Trash/files/"
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
注意
使用过程发现的一些问题请不要使用
trash
删除回收站中的文件,你会发现一个奇特的现象,你删除了原文件,但是又多了一个后缀加上_1
的新文件如果您把alias放置在~/.bashrc中,你将无法使用sudo使用~/.bashrc的alias别名信息
如果您使用sudo trash删除的文件是放在自己的目录下的,而不是root下,但是回收站中文件的属用户和组用户都会变成root,您将只能使用root权限进行删除
转载:http://blog.csdn.net/gatieme/article/details/49101227