如何帅气随意地使用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的主要内容,如果未能解决你的问题,请参考以下文章

如何让用户在Android中随意绘制长画布?

rm 删除文件&文件夹

爬取知乎“凡尔赛语录”话题下的所有回答,我知道点开看你的很帅气,但还是没我帅

如何在 Linux 中恢复已删除的文件-

PHP有些随意地停止渲染页面

linux命令——rm