究竟发生了什么?在当前目录中是否存在线性搜索,并且所有扩展名为.txt的内容都会被删除,仅此而已?或者背景中有什么奇特的东西?
*.txt首先由shell展开,然后对该参数列表调用rm
。
这就是为什么如果文件数量非常大并且超过了允许的最大参数数量,有时命令会失败。
例如:
directory1/
a.txt
b.txt
cd directory1
rm *.txt
相当于:
cd directory1
rm a.txt b.txt
Bash手册中的报价:
分词后,除非设置了-f选项(请参阅set Builtin(,否则Bash会扫描每个单词中的字符"*"、"?",和"["。如果出现其中一个字符,则该单词被视为模式,并且被替换为与模式匹配的按字母顺序排序的文件名列表(请参阅模式匹配(。
Bash用目录中的实际文件替换*.txt。您可以检查Bash将尝试删除的内容:
echo *.txt
后台没有什么花哨的东西(我想你想知道是否有一个回收站,就像在Windows中一样(。
没有!
rm *.txt
删除目录中的所有文本文件,它们将永远丢失。