*アルファベット拡張シーケンス

*アルファベット拡張シーケンス

POSIX準拠のシェル(例:dash、bash、zsh ...)を使用するときは、常にアルファベット順に拡張されていることを確認できますか*(で決定LC_COLLATE)?

例:

$ echo 1 > file_a
$ echo 2 > file_b
$ echo 3 > file_c
$ cat *
1
2
3

ベストアンサー1

この行動はPOSIXの要件、安心して信頼できます。

Cまた、一貫した動作を得るには、ロケールを設定する必要があります。ロケールで同じソート順序を持つデータソート要素を使用すると、次のようになります。奇妙な結果

UTF-8ロケールを使用するGNUシステム:

$ printf '%b\n' '\U2461' '\U2460' | sort

または:

$ printf '%s\n' A B a b | sort
a
A
b
B

ロケール設定C:

$ printf '%b\n' '\U2461' '\U2460' | LC_ALL=C sort

$ printf '%s\n' A B a b | LC_ALL=C sort
A
B
a
b

一部のシェルは、マルチバイト文字(例:)をサポートしていないか、サポートしていますがdash無効mkshなバイトシーケンス(例:)をブロックしますyash

おすすめ記事