ディレクトリに次のファイルを作成します。
$ touch .a .b a b A B 你好嗎
私のデフォルトのls順序では、先頭のドットの存在を無視し、他のファイルと混在させています。
$ ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
私がすることができます 変更する LC_COLLATE最初のドットファイルを置くこと。
$ LC_COLLATE=C ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
残念ながら、これはソート順、大文字と小文字を区別し、すなわち作るAとBに先行aしてb。大文字と小文字を区別しない(滞在しながら最初のドットファイルを印刷する方法があるAとaに先行Bしてはb)?
編集:LC_COLLATEを変更しようとしています
これまでのところ、ls簡単に機能を完全に複製する答えはありません。おそらく、それらのいくつかを関数でラップすることもできますが、これには、引数なしで作業する方法と引数としてディレクトリを指定する方法に関する詳細なコードを含める必要があります。または、明示的な-dフラグの処理方法。
あるいは、LC_COLLATE使用する方が良いかもしれないと考えました。しかし、私はそれを機能させることができないようです。現在使用していLC_COLLATE="en_AU.UTF-8"ます。私はチェックしました/usr/share/i18n/locales/en_AU(ただし、これが正しいファイルであるかどうかはわかりませんが、参照が表示されないためUTF-8)。以下を見つけました。
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1を含むcopy "iso14651_t1_common"。最後に、/usr/share/i18n/locales/iso14651_t1_common含まれています
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
この行を削除sudo locale-genして実行し、コンピューターを再起動しました。残念ながら、これは何も変わりませんでした。