linux ls dziwna kolejność
kwiecień 3, 2008 autor rofrol
tworzymy trzy pliki w katalogu ls_test
[ls_test]$ touch product_reviews_info.php
[ls_test]$ touch product_reviews.php
[ls_test]$ touch product_reviews_write.php
a następnie wyświetlamy zawartość
[ls_test]$ ls -l
razem 0
-rw-r–r– 1 rofrol rofrol 0 kwi 3 15:32 product_reviews_info.php
-rw-r–r– 1 rofrol rofrol 0 kwi 3 15:32 product_reviews.php
-rw-r–r– 1 rofrol rofrol 0 kwi 3 15:32 product_reviews_write.php
i jak widać kropka i podkreślenie nie brane są w tym wypadku pod uwagę tylko następny znak za nimi. git status pokazuje w innej kolejności.
Uaktualnienie
brakkvatn z #linux na freenode dał mi wskazówkę aby używać
ls -lX
dzięki temu plik z kropką nie będzie pomiędzy tylko na końcu. Ale to jeszcze nie to.
Pojawia się pytanie według jakiego wzorca ls sortuje? Kropka w ascii ma numer 46 a podreślenie 96. Więc kropka powinna być pierwsza sortowana
Uaktualnienie2 Kilka linków:
http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#The-ls-command-is-not-listing-files-in-a-normal-order_0021
http://www.gnu.org/software/libc/manual/html_mono/libc.html#String_002fArray-Comparison
http://www.opengroup.org/onlinepubs/009695399/utilities/ls.html
Uaktualnienie3
Rozwiązaniem tymczasowym mojego problemu jest stosowanie przełącznika -v który nie bierze pod uwagę ustawień LC_COLLATE.
http://ubuntuforums.org/showthread.php?t=718355
http://savannah.gnu.org/bugs/?1212
Uaktualnienie4
inne rozwiązanie to ustawić alias w ~/.bashrc
alias ls=”LC_COLLATE=C ls”
albo z kilkoma opcjami
alias ls="LC_COLLATE=C ls -xA1 --color=always"
-x wyświetla wierszami najpierw
-A wyświetla ukryte pliki oprócz . i ..
-1 wyświetla tylko jedną kolumnę (niepotrzebne wtedy -x)
-color=always trzeba to włączyć bo pewne opcje mogą wyłączyć
Napisz odpowiedź
Musisz być zalogowany aby móc dodać komentarz.