linux替换rm命令为mv命令
一、目的
rm是Linux系统非常强大删除命令,但是使用rm命令删除文件后很难恢复。特别是对于将rm -rf ./*
误敲成rm -rf /*
,那可就欲哭无泪了。
为了给自己的操作留有余地,会使用mv命令来替换危险的rm命令。
二、步骤
实现命令替换的思想其实就是采用bash内置的alias命令进行命令别名设置。
2.1 代码演示
在家目录下的.bashrc文件的末尾添加如下命令:
trash(){
TRASH=~/.trash ;
if [ ! -d "$TRASH" ]; then
echo "创建垃圾回收站目录";
mkdir $TRASH ;
fi
str1=$@ ;
str2=${str1##-* } ;
mv $str2 ~/.trash/ ;
}
alias rm=trash
2.2 代码解释
首先定义了一个函数trash(),其实你可以把它当作一个命令来看待。在这个函数的内部,定义了变量
T
R
A
S
H
TRASH
TRASH为垃圾回收的目录’~/.trash’,是一个隐藏目录。然后会判断指定目录是否存在,如果不存在,则会使用mkdir
命令创建指定目录。
接下来,会对传递给trash函数的参数进行解析。由于rm命令可以接受-r
、-f
等参数,而我们最终只想把要删除的文件移动到指定的目录’~/.trash’,所以不需要解析rm命令后面的特殊参数。因此,使用特殊字符串处理。str1=$@
是将传递给trash函数参数全部存储为字符串,${str1##-* }
是截取字符串str1的最后一个特殊参数的右边的子串,也就是真正要处理的文件名。详细解释参见Bash Shell字符串操作小结。
最后就是调用mv命令将要处理的文件移动到指定的垃圾回收目录’~/.trash’。
2.3 代码生效
将上述代码添加到.bashrc文件结尾处后,记得保存。最后还有重要的一步,就是将.bashrc文件配置生效。运行下面的命令就可以了:
~$ source ~/.bashrc
三、总结
这个对于rm命令的替换基本可以满足日常使用了,但是也有缺陷,就是对于特殊的参数’-r、-f’等只是做了直接丢弃。但是目的已经达成了,我们使用rm命令时,如果发现误删了文件,就可以到指定目录恢复就好了。