shell:通配符是否保证按字母顺序排列?

时间:2015-05-26 14:22:45

标签: bash dash-shell

当我有文件a.txt时,b.txtc.txt 保证

cat *.txt > all_files.txt

cat ?.txt > all_files.txt

会按字母顺序合并文件吗?

(在我的所有测试中,字母顺序都保留了下来,但我不确定,因为例如ls订单未定义且不必是字母顺序 - 但它通常是,因为文件经常按字母顺序写入目录)

1 个答案:

答案 0 :(得分:5)

不,这取决于区域设置。顺序由区域设置中的归类序列决定,可以使用LC_COLLATELC_ALL环境变量进行更改。请注意,bash在这方面与其他一些shell(例如Korn shell)的行为不同。

如果您的区域设置设置为CPOSIX,则它将按字符集顺序排列。否则你可能只会注意到混合大小写字母的差异,例如: en_ locales的序列是aAbBcC ... xXyYzZ。例如,请参阅http://collation-charts.org/fc6/fc6.en_GB.iso885915.html

可以使用locale -a列出可用的区域设置。

编辑:另一个变量LANG可用,但现在通常不会使用它。根据单一UNIX规范,它使用:,没有LC_ALL和其他LC_ * ...环境变量