Buat file berikut dalam direktori.
$ touch .a .b a b A B 你好嗎
ls
Pesanan default saya mengabaikan keberadaan titik-titik terkemuka, menggabungkannya dengan file-file lain.
$ 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 你好嗎
Saya dapat mengubah LC_COLLATE
untuk menempatkan dotfiles pertama.
$ 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 你好嗎
Sayangnya ini membuat jenis urutan case-sensitive, yaitu A
dan B
mendahului a
dan b
. Apakah ada cara untuk mencetak dotfile terlebih dahulu sambil tetap case-sensitive ( A
dan a
mendahului B
dan b
)?
Sunting: mencoba mengubah LC_COLLATE
Tidak ada jawaban sejauh ini sepenuhnya meniru fungsi ls
dengan mudah. Dapat dibayangkan, saya bisa membungkus beberapa dari mereka dalam suatu fungsi, tetapi ini harus menyertakan beberapa kode rinci tentang (misalnya) cara bekerja tanpa argumen vs memasok direktori sebagai argumen. Atau cara berurusan dengan -d
bendera eksplisit .
Atau, saya pikir mungkin ada yang lebih baik LC_COLLATE
untuk digunakan. Namun, sepertinya saya tidak bisa melakukan itu. Saya sedang menggunakan LC_COLLATE="en_AU.UTF-8"
. Saya memeriksa /usr/share/i18n/locales/en_AU
(walaupun saya tidak yakin apakah ini file yang tepat, karena saya tidak dapat melihat referensi apa pun UTF-8
); Saya menemukan yang berikut ini.
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1
berisi copy "iso14651_t1_common"
. Akhirnya, /usr/share/i18n/locales/iso14651_t1_common
berisi
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Saya menghapus baris ini, berlari sudo locale-gen
, dan me-restart komputer saya. Sayangnya, ini tidak mengubah apa pun.