【问题标题】:Rm behavior in linux [closed]linux中的RM行为[关闭]
【发布时间】:2014-04-29 15:30:57
【问题描述】:

如果我在这样的目录中:

/home/usr_name/Documents/test

而且,我不小心启动了:

rm .*

会发生什么?
我以为它会删除所有包含点的文件..但我绝对错了!

【问题讨论】:

  • 例如,您可以通过ls *. 来查看匹配的内容。
  • ls: 无法访问 *.: 没有这样的文件或目录
  • 那么它什么都不匹配:)
  • 它可能已经删除了隐藏目录(名称以.开头的文件)、当前目录(.)和当前目录上方的所有文件(..)。所以如果你在/home/me,你可能已经删除了/home/home/me/home/me/.dir中的文件
  • 看我的回答。但一般来说,如果您执行rm (something),然后立即使用ls (something),则ls 将报告没有匹配的文件,因为您已经删除了它们。

标签: linux shell rm


【解决方案1】:

它根据你的 shell 的通配规则匹配.*。对于我熟悉的 shell (bash, tcsh),它将匹配所有文件 beginning 与一个点。对包含点的所有文件使用*.*,对以点结尾的所有文件使用*.

一般来说,* 匹配任何字符序列;但是,它通常不会匹配前导点(即 * 本身不会匹配以点开头的文件名,但 .* 会匹配)。

【讨论】:

  • 请看编辑,命令是 rm .*
  • 我已经相应地编辑了答案。
【解决方案2】:

当使用rm 并且不确定是否使用通配符* 时,请始终执行

ls .*  

无论输出是什么,当您执行 rm .* 时,这就是 rm 将要处理的内容

【讨论】:

  • ls: 无法访问 *.: 没有这样的文件或目录
  • 那么rm 不会在这里做任何事情。此外,它意味着文件名以. 结尾。你的目录中有这样的文件吗?在您的问题中添加ls -al 输出。
  • 请看编辑,命令是 rm .*
  • 它删除了以.开头的所有内容!
猜你喜欢
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多