ディレクトリに次のファイルを作成します。
$ 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
して実行し、コンピューターを再起動しました。残念ながら、これは何も変わりませんでした。