Ada*_*son 10 shell filenames rm
我需要删除主目录中的“~”文件夹。
我现在意识到这rm -R ~
是一个糟糕的选择。
我可以安全使用rm -R "~"
吗?
fro*_*utz 20
理论上是的。在实践中通常也是如此。如果您调用的 shell 脚本或别名执行了一些奇怪的操作,那么可能不会。
您可以使用echo
查看特定命令将被 shell 扩展为什么:
$ echo rm -R ~
rm -R /home/frostschutz
$ echo rm -R "~"
rm -R ~
Run Code Online (Sandbox Code Playgroud)
请注意,echo
删除了""
所以你不应该复制粘贴它打印的内容。它只是表明,如果你给"~"
,命令字面上看到,~
而不是扩展的/home/frostschutz
路径。
如果您对任何命令有任何疑问,如果出现问题,从致命性较低的命令开始如何?在您的情况下,您可以从重命名而不是彻底删除它开始。
$ mv "~" delete-me
$ ls delete-me
# if everything is in order
$ rm -R delete-me
Run Code Online (Sandbox Code Playgroud)
对于通常甚至不应该存在的混淆文件名(例如~
其他名称以~
or开头,或包含换行符等),安全总比抱歉好。
还可以考虑使用制表符补全(类型ls ~<TAB><TAB><TAB>
),大多数 shell 会尽力照顾你,这也有助于避免输入错误的常规文件名。
正如 Kalvin Lee 提到的,您可以cd
到目录并删除其内容,然后使用rmdir
删除目录。我推荐这种rm -R
方法,因为您不太可能对命令进行粗指并破坏您的主目录。
通常,您可以将不希望 shell 展开的内容放在单引号中。这将删除一个名为 的空目录~
:
rmdir '~'
Run Code Online (Sandbox Code Playgroud)
除了froschutz的双引号方法,还有Andy的简单引用方法,还有更短的:
rm -r \~
Run Code Online (Sandbox Code Playgroud)
和相对路径一:
rm -rf ./~
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7970 次 |
最近记录: |