ls -l
私はディレクトリを使用し、ソート順序が空白と下線を無視するという事実に驚きました。例えば、
$ echo $LANG
en_AU.UTF-8
$ ls -l
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:12 a_a
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a b
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a_c
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a d
$ LANG=en_AU ls -l
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a b
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a d
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:12 a_a
-rw-r--r-- 1 sparhawk sparhawk 0 Nov 20 21:13 a_c
私のデフォルトのロケールでは、スペースとアンダースコアを入れ替えて使用できます。UTF-8がない場合、スペースはアンダースコアの前にあります。en_US
と同様の結果が表示されますen_US.UTF-8
。
2つの質問があります。
- 私の説明は正しいですか?入れ替えて使えますか?
- 私のロケールのソートされたリストはありますか?下線の前にある文字を見つけたいです。
答え1
これは完全な答えではありませんが、いくつかの記事と考えです。
ここでは、ソート順序に関するいくつかの注意事項を見つけることができます。http://www.gnu.org/software/coreutils/faq/#Sort-does-not-sort-in-normal-order_0021
ロケールを定義する方法の標準です。http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03
以下は、Unicode標準と照合順序(ソート用)です。http://www.unicode.org/reports/tr10/。私はUTF-8ロケールの照合順序がこのように実装されていると固く信じていませんが、それは主張しません。