Utwórz następujące pliki w katalogu.
$ touch .a .b a b A B 你好嗎
Moja domyślna ls
kolejność 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. A
I B
poprzedzają a
i b
. Czy istnieje sposób, aby najpierw wydrukować pliki kropkowe bez rozróżniania wielkości liter ( A
i a
poprzedzać B
i 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ą -d
flagą.
Alternatywnie myślałem, że może być lepszy LC_COLLATE
w 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_t1
zawiera copy "iso14651_t1_common"
. Wreszcie /usr/share/i18n/locales/iso14651_t1_common
zawiera
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Usunąłem tę linię, uruchomiłem sudo locale-gen
i ponownie uruchomiłem komputer. Niestety nic to nie zmieniło.