如果我在 *nix 机器上的终端(模拟器)中输入"rm *.txt",究竟会发生什么?



究竟发生了什么?在当前目录中是否存在线性搜索,并且所有扩展名为.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删除目录中的所有文本文件,它们将永远丢失。

最新更新