当以 root 身份退出文件时,我输入:x!~
并按 Enter 键。现在我有以下内容:
root@host:/etc/shinken/services$ ll
total 64K
-rw-r--r-- 1 0 0 515 Sep 1 18:24 ~
drwxr-xr-x 2 10003 10003 4.0K Sep 1 18:24 .
drwxr-xr-x 29 10003 10003 4.0K Aug 8 17:11 ..
<other files omitted>
如果是的话cd ~
,它会带我达到/root
预期的效果。如何删除新的~
而不意外删除我的实际的家?
答案1
cd /etc/shinken/services
rm ./~
对此确实没什么好说的。通过./
在前面指定~
,可以阻止 shell 执行波浪号扩展,并将其视为当前目录中的文件名。
另一种选择是
cd /etc/shinken/services
rm '~'
要不就
rm /etc/shinken/services/~
在 Vi 和 Vim 中,:x
将像:wq
退出前写入文件一样工作。通过附加文件名(~
在本例中),将写入具有给定名称的文件。这两个命令之间的区别在于,:x
仅当当前缓冲区自上次保存以来已被修改时才写入文件。覆盖!
写入只读文件。
答案2
rm -- '~'
周围的单引号~
阻止 bash 扩展路径并将其简单地传递给rm
.
--
阻止 rm 将更多参数解释为标志并假设它们都是文件(在这种情况下不那么重要,但如果您有一个带有前导的文件则很有用-
)。
你可以ls
先测试一下。
ls -- '~'
例如,在不包含文字“~”的目录中,您将得到
ls: cannot access '~': No such file or directory
显示ls
已收到未修改的路径。