我不小心用 :x!~ 退出了 vim,现在我的 ~ 显示在不同的路径中

我不小心用 :x!~ 退出了 vim,现在我的 ~ 显示在不同的路径中

当以 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已收到未修改的路径。

相关内容