在我知道的所有 shell 中,rm [A-Z]*
删除所有以大写字母开头的文件,但使用 bash 删除所有以字母开头的文件。
由于此问题存在于具有 bash-3 和 bash-4 的 Linux 和 Solaris 上,因此它不可能是由 libc 中的错误模式匹配器或错误配置的区域设置定义引起的错误。
这种奇怪且冒险的行为是有意为之,还是只是一个多年未修复的错误?
假设我在一个目录中有 3 个文件:
苹果.txt:
apple
Run Code Online (Sandbox Code Playgroud)
蜂巢.txt:
beehive
Run Code Online (Sandbox Code Playgroud)
斑马.txt:
zebra
Run Code Online (Sandbox Code Playgroud)
如果我将此文件与:
cat *.txt > all_files.txt
我确实得到:
apple
beehive
zebra
Run Code Online (Sandbox Code Playgroud)
(我也在 5 个文件上进行了测试,我得到了相同的行为),
但我的这种行为有保证吗?