rya*_*lon 3 bash directory alias rm
我使用别名来防止我不小心删除文件,我想对目录做类似的事情。
对于文件,我将以下内容添加到我的.bashrc
:
alias rm="rm -i"
Run Code Online (Sandbox Code Playgroud)
我还想防止自己意外删除一个目录,我已经尝试过这样做:
alias rm -rf="rm -rfi"
Run Code Online (Sandbox Code Playgroud)
和这个:
alias "rm -rf"="rm -rfi"
Run Code Online (Sandbox Code Playgroud)
但两者都不起作用。有什么建议?
来自 bash(1):
别名
[...] 每个简单命令的第一个单词,如果不带引号,则检查它是否有别名[...] 字符 [...] 和上面列出的任何 shell 元字符或引用字符可能没有出现在别名中。
所以别名只能是一个没有任何引用字符的单词。
在对 rm 的调用中同时使用-f
和-i
也没有多大意义,因为它们有些矛盾(rm(1)):
-f, --force 忽略不存在的文件和参数,从不提示
-i 每次删除前都会提示
但这是一件好事 -rm
即使在您打电话时rm -r
,您的别名实际上也被使用了,因为第一个单词 - rm
- 有一个别名 - rm -i
,所以它会被那个替换!
$ alias rm
bash: alias: rm: not found
$ alias rm='rm -i'
$ mkdir test
$ rm -r test
rm: remove directory ‘test’?
Run Code Online (Sandbox Code Playgroud)
/edit:Raphael Ahrens 在评论中还提到,使用-f
(force) 不是删除目录所必需的(正如在我的示例中已经看到的那样),-r
(递归)就足够了:
-r, -R, --recursive 递归删除目录及其内容
归档时间: |
|
查看次数: |
430 次 |
最近记录: |