Chr*_*per 6 unix bash command-line rm
这个问题说明:
令人惊讶的是,有多少用户不了解这些
rm ./-rf或rm -- -rf技巧.
我不敢尝试这些,但对他们的所作所为感到好奇.它们也很难搜索......
有人可以开导我吗?
rm ./-rf和/或rm -- -rf尝试删除一个名为的文件,具体来说,-rf
这里唯一的技巧是您通常无法删除以" - "开头的文件,因为该命令将假定它是一个命令参数.通过在文件前面加上完整路径,或使用--选项(这意味着,结束所有选项),命令将不再认为它是一个参数.
应该注意的是--,这个技巧的版本可能也可能不适用于所有shell命令,因此最好使用第一个版本.
如果您-rf的目录中有一个文件,如果您不知道该技巧,则很难删除该文件.那是因为:
rm -rf
Run Code Online (Sandbox Code Playgroud)
提供两个命令行选项(-r和-f)作为单个参数,并告诉rm递归和强制删除的东西.
如果你写:
rm ./-rf
Run Code Online (Sandbox Code Playgroud)
参数不再以短划线开头,因此它只是一个文件名.类似地,通过常见(但不是通用)约定,--标记选项参数的结尾,之后的任何内容都不再是一个选项(通常意味着它是文件名).所以:
rm -- -rf
Run Code Online (Sandbox Code Playgroud)
删除文件,因为rm知道后面的参数--是文件名,而不是它要处理的选项.
-rf如果使用通配符,该文件甚至更危险:
rm *rf*
Run Code Online (Sandbox Code Playgroud)
突然,这将删除目录和文件(但不会损害文件-rf).
| 归档时间: |
|
| 查看次数: |
2435 次 |
| 最近记录: |