Buat file berikut dalam direktori.
$ touch .a .b a b A B 你好嗎
lsPesanan 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 Adan Bmendahului adan b. Apakah ada cara untuk mencetak dotfile terlebih dahulu sambil tetap case-sensitive ( Adan amendahului Bdan b)?
Sunting: mencoba mengubah LC_COLLATE
Tidak ada jawaban sejauh ini sepenuhnya meniru fungsi lsdengan 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 -dbendera eksplisit .
Atau, saya pikir mungkin ada yang lebih baik LC_COLLATEuntuk 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_t1berisi copy "iso14651_t1_common". Akhirnya, /usr/share/i18n/locales/iso14651_t1_commonberisi
<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.