如何删除名为"〜"的文件在Mac?

时间:2014-12-23 11:08:19

标签: macos shell

我在Macbook上运行以下命令:

mkdir ~/tmp/~

现在,我要删除此~/tmp/~ 。 怎么做?它实际上不是一个链接,如果我运行rm -rf ~/tmp/~,主文件都会被删除。

4 个答案:

答案 0 :(得分:1)

太有趣了。这项任务可以通过这种方式完成。

# This form is safe and functional.
rm -rf ~/tmp/~

但是如果你试图这样做,你的家庭数据就会丢失:

# THIS FORM IS DANGEROUS; DO NOT USE IT
cd ~/tmp
rm -rf ~

答案 1 :(得分:0)

我同意Ivan X的评论,~在此上下文中不会导致任何特定问题,rmdir ~/tmp~会毫无问题地删除目录(请参阅下面的#1)。

但是,您所描述的是一个典型的Unix / BSD问题。要删除包含特殊字符的目录,必须确保shell忽略它们的插值。有两种方法可以实现这一目标。

  1. 您可以使用完整路径,例如rmdir ~/tmp/~或......
  2. 对于以-开头的文件或目录,您可以使用--告诉shell没有以下选项,ala rmdir -- -foo-

答案 2 :(得分:0)

  

太有趣了。这项任务可以通过这种方式完成。

# This form is safe and functional.
rm -rf ~/tmp/~
           

但是如果你试图这样做,你的家庭数据就会丢失:

# THIS FORM IS DANGEROUS; DO NOT USE IT
cd ~/tmp
rm -rf ~

非常简单,因为(见Tilde Expansion):

  

如果单词以不带引号的波浪号字符开头   ('〜'),所有字符都是第一个   是不带引号的斜杠(或者所有字符,如果没有未加引号的斜杠)   被认为是波浪号前缀。如果没有任何字符   引用了tilde-prefix,后面是tilde-prefix中的字符   代字号被视为可能的登录名。如果这   login name是空字符串,代字号替换为值   HOME shell变量。

因此,rm -rf ~扩展为rm -rf $HOME

答案 3 :(得分:-1)

使用文件浏览器可以更好地删除任何带有趣名称的文件。它更简单,更安全。

如果您不想使用Finder,请使用任何其他基于文本的文件浏览器,例如emacs dired模式。

[...]

如果您坚持使用shell执行此操作...

 ls -i # will show you the inode number of the files you have 

获得正确的inode后,例如123456789,您可以使用find将其删除。

 find . -maxdepth 1 -type f -inum 123456789 -delete