Utwórz następujące pliki w katalogu.
$ touch .a .b a b A B 你好嗎
Moja domyślna lskolejność ignoruje obecność wiodących kropek, mieszając je z innymi plikami.
$ 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 你好嗎
I może zmienić LC_COLLATE umieścić dotfiles pierwszy.
$ 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 你好嗎
Niestety powoduje to, że w kolejności sortowania rozróżniana jest wielkość liter, tzn. AI Bpoprzedzają ai b. Czy istnieje sposób, aby najpierw wydrukować pliki kropkowe bez rozróżniania wielkości liter ( Ai apoprzedzać Bi b)?
Edycja: próba modyfikacji LC_COLLATE
Żadna z dotychczasowych odpowiedzi nie w pełni powiela funkcjonalność lsłatwego. Możliwe, że mógłbym zawinąć niektóre z nich w funkcję, ale musiałoby to zawierać szczegółowy kod dotyczący (np.) Pracy bez argumentu w porównaniu z podaniem katalogu jako argumentu. Lub jak radzić sobie z wyraźną -dflagą.
Alternatywnie myślałem, że może być lepszy LC_COLLATEw użyciu. Jednak nie wydaje mi się, żeby to działało. Obecnie używam LC_COLLATE="en_AU.UTF-8". Sprawdziłem /usr/share/i18n/locales/en_AU(chociaż nie jestem pewien, czy jest to właściwy plik, ponieważ nie widzę żadnych odniesień do UTF-8); Znalazłem następujące.
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1zawiera copy "iso14651_t1_common". Wreszcie /usr/share/i18n/locales/iso14651_t1_commonzawiera
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Usunąłem tę linię, uruchomiłem sudo locale-geni ponownie uruchomiłem komputer. Niestety nic to nie zmieniło.