如何帅气随意地使用rm -rf
Posted 罪途
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何帅气随意地使用rm -rf相关的知识,希望对你有一定的参考价值。
鉴于自己手残的问题,已经不止一次在服务器上误用rm -rf指令。终究是涨了点教训,利用shell脚本实现一个虚拟回收站(称之为垃圾中转站更合适)
该功能实现原理:将原本的rm指令替换为现在的cp+rm指令(也可以配合mv使用,但在使用习惯上略有不适),然后就会复制一份待删除的文件或目录放进指定的文件夹内(我们这里是使用的home目录下的.trash文件夹),并为它加上时间标签,然后再将目标文件删除。
具体实现方法如下(以下操作基于Linux)
1. 首先随便找个地方新建一个shell文件,路径、名字均随意。(这里将路径设置在了“~/.basic_scipt”,命名为"trash.sh",可参考)。shell文件内容如下:
TRASH_DIR="~/.trash"
for i in $*;do
if [[ $i == *"-"* ]];then
optname+=$i" "
else
optname+=""
fi
if [[ $i == "+super" ]];then
optsuper="super"
fi
done
for i in $*;do
STAMP=`date +%y%m%d%H%M%S`
if [[ $i != *"-"* && $i != *"+super"* ]];then
filename=`basename $i`
if [[ $optsuper == "super" ]];then
rm $filename $optname
else
mkdir -p $TRASH_DIR
cp $filename $TRASH_DIR/$STAMP_$filename $optname
rm $filename $optname
fi
fi
done
2. 找到home目录下的".bashrc"文件(或".cshrc"文件,均为隐藏文件。这里用的是bashrc文件)。进入文件后编辑,随意找个位置添加一行指令,内容如下:
alias rm='sh ~/.basic_scipt/trash.sh'
3. 完成以上操作之后,记得保存并退出。然后在命令终端执行如下指令,以使bashrc文件的更改生效
$ source ~/.bashrc
4. 在source命令执行完之后,就已经大功告成了,可以随意找个文件删除一下试试。然后再看看"~/.trash/"路径下是不是新增了文件。如果有,那就是成功了;没有的话,那就再检查一下步骤吧。
5. 另外,如果我们想真正删除某个文件或目录时,应该怎么办呢?就比如说,想要清空我们的虚拟回收站的时候。这时候我们可以先进入到我们的回收站目录,然后执行一条带有"+super"选项的rm指令,即可真正删除目标文件。如下指令便实现了对虚拟回收站的清空。
$ cd ~/.trash
$ rm ./* -rf +super
6. 需要注意的是,该功能实现多少是有点毛病的。bug如下:参数中不能含有相对路径或绝对路径,即只能对当前路径下的文件操作,不过该bug并无大碍(水平有限,懒得修)。
7. 除上述毛病之外,暂未发现其它bug。日常使用中和原来的rm指令选项并无太大差异,该咋用还是咋用。偶尔去清一下回收站即可。
如果您在实际使用中出现问题或者有更好的解决办法,欢迎留言。
以上是关于如何帅气随意地使用rm -rf的主要内容,如果未能解决你的问题,请参考以下文章