Depoly your flask app into Heroku Fix shit IE code manually ISBN to Book Category by Scraping DangDang A Generic Makefile for C/C++ Program Configure Raspberry pi Remove watermark with PyPDF2 tips for docker Anaconda+TensorFlow+CUDA Snippets Configure Remote Mathematica Kernel Build your own ngrok server Access Array SSL VPN 使用Rstudio制作html5幻灯片 tips for Mac OS X system Tips for ipython notebook 配置Ubuntu server + Openbox (Obuntu) tips for Vimperator tips for Vim 安装CUDA My First Jekyll Blog rsync常见选项 在Linux中读取Ipod touch的文件 tip for texmacs 在VPS上建站的一些tip Gnuplot绘图札记 Samba系统和autofs自动挂载 Linux中alsamixer声卡无法录音 搭建自己的RSS订阅器——Tiny Tiny RSS Grub2引导安装Ubuntu awk tips 将Ubuntu系统装入U盘 The Great Rtorrent 编译GCC 再这样剁手!!!该死的libgd 使用ulimit进行资源限制 使用SSH代理上IPV6 使用RCurl抓取网页数据 修复Ubuntu Grub记 openbox中的文件关联 在Ubuntu 12.04下编译qtiplot 处理BCM4312网卡驱动纪实 配置我的Ubuntu Server记 Cygwin杂记 Linux 使普通用户具有以超级权限执行脚本 让firefox自定义地处理文件类型 WordPress优秀主题及插件 在phpcloud上搭建wordpress UBUNTU下用pptpd做VPN server ubuntu升级内核过后的一些问题 安装telnet服务 kubuntu札记 64位kubuntu札记 统计软件R virtualbox stardict星际译王 Ubuntu重装windows系统后的grub引导修复 SSH服务及花生壳域名解析 采用cbp2make工具由code::blocks工程创建makefile文件 UBUNTU 札记

更改rm命令为移动到回收站

2013年04月02日

前两天很悲愤的是用命令rm不小心将刚改好的代码全部删除了,顿时那叫一个悔啊,干嘛手要那么快!!!

诚然,Linux的哲学假定用户知道自己在干什么,能为自己的行为负责。可是我真不是想要删除啊!幸亏使用了版本控制,不至于将所有代码历史丢失,但是这个问题还是需要解决。

在网上初略搜索了一下,Ubuntu的回收站位于~/.local/share/Trash/,而各个分卷下的回收站位置为该分卷根下.Trash-1000/文件夹中。很多帖子提到通过将文件使用mv命令移动到Trash文件夹从而实现删除到回收站,为了方便还可以使用重命令:

alias rm='mv --target-directory=$HOME/.local/share/Trash/files'

但是这样有一个很大的弊病就是删除的文件可能会覆盖掉以前回收站中已有的同名文件,同时还不能记录文件删除的时间,权限等。实际上,Trash文件夹下info子文件夹中存放了回收站中文件的删除前位置,删除时间等信息。

本想自己写个脚本来实现写info文件来着,上网一查才发现早就有人写好了包了,实现了命令行端的回收站功能,强大的apt安装:

sudo apt-get install trash-cli

此包以python写成,提供命令trash-list(列出回收站文件), restore-trash(恢复文件,此命令挺奇怪,为什么要倒过来写?), trash-empty(清空回收站), trash-put(删除到回收站)。

为了使用方便可以在bashrc文件下加入命令重定义:

alias rm='trash-put'
alias rM='/bin/rm'

这样,再使用rm删除文件时就是将文件删除到回收站了。

为了方便,还可以装另外一个自动清除回收站的包autotrash:

sudo apt-get install autotrash

关于此包的介绍可见ubuntu定时清空回收站:Autotrash