midnight commander nie lubi liter "ł" i "Ł"

Wyłącznie system! Wątpliwości dotyczące aplikacji proszę umieszczać niżej, w odpowiednich forach.
jureq
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 10 lip 2011, 15:08
Płeć: Mężczyzna
Wersja Ubuntu: 24.04
Środowisko graficzne: Brak
Architektura: x86_64

midnight commander nie lubi liter "ł" i "Ł"

Post autor: jureq »

ls * wyświetla pliki w poprawnej "polskiej" kolejności alfabetycznej, natomiast według mc ta kolejność to: A...LM....Ża....lm....żŁł
W samym mc jest ustawione użycie UTF-8, ustawienie zmiennej LANG jest poprawne.
Czy ktoś zna metodę jak poprawić to sortowanie?
Awatar użytkownika
emstrang
Sędziwy Jeż
Sędziwy Jeż
Posty: 56
Rejestracja: 01 mar 2022, 20:07
Wersja Ubuntu: 24.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64

Re: midnight commander nie lubi liter "ł" i "Ł"

Post autor: emstrang »

Podobne sortowanie jest na Androidzie np. w przypadku listy kontaktów, ciekawe.

Dodane.
Może chodzić o ilość bajtów potrzebnych by określić znak narodowy.
A coś takiego proponuje AI:

Aby ustalić własną kolejność alfabetu w systemie Linux, należy zmodyfikować ustawienia regionalne (locale). Można to zrobić poprzez zmianę zmiennej środowiskowej LC_COLLATE. Opcjonalnie, można też utworzyć plik z definicją nowej reguły sortowania i wskazać go w zmiennej.
Kroki:

Zdefiniuj własną kolejność sortowania:
Możesz użyć narzędzia localedef do utworzenia nowej definicji ustawień regionalnych. Wymaga to znajomości specyficznych reguł sortowania.
Możesz też utworzyć plik tekstowy (np. my_collation.txt) z własną kolejnością znaków. Format pliku jest specyficzny i wymaga odpowiedniego zdefiniowania każdego znaku (zobacz dokumentację localedef).
Przykład: Plik my_collation.txt może zawierać linie:

Kod: Zaznacz cały

        <A  <a
        <B <b
        <C <c
co posortuje litery A, B, C niezależnie od wielkości liter.

Zmień zmienną środowiskową LC_COLLATE:
Aby zastosować nową kolejność sortowania dla bieżącej sesji terminala, ustaw zmienną:

Kod: Zaznacz cały

        export LC_COLLATE="pl_PL.UTF-8:my_collation.txt"
(lub odpowiednią nazwę pliku z definicją). pl_PL.UTF-8 to przykład lokalizacji, możesz użyć innej, a my_collation.txt to nazwa pliku z regułami.

Aby zmiany były trwałe, dodaj tę linię do pliku konfiguracyjnego profilu (np. .bashrc, .zshrc).

Użyj sortowania z nową kolejnością:

Polecenie sort będzie teraz używać zdefiniowanej przez Ciebie kolejności sortowania.

Kod: Zaznacz cały

        sort plik_wejsciowy.txt
Możesz też użyć polecenia ls -l z opcją --sort=extension (lub podobną) i odpowiednim ustawieniem LC_COLLATE, aby sortować pliki wg rozszerzeń w oparciu o własny alfabet.

Przykłady:
Sortowanie tekstu z użyciem własnej reguły.

Kod: Zaznacz cały

    echo -e "b\na\nc" | LC_COLLATE="pl_PL.UTF-8:my_collation.txt" sort
Sortowanie plików wg rozszerzeń z własną regułą:

Stwórz plik my_collation.txt (jak wyżej).

Ustaw zmienną:

Kod: Zaznacz cały

export LC_COLLATE="pl_PL.UTF-8:my_collation.txt"
Wykonaj:

Kod: Zaznacz cały

 ls -l --sort=extension
Ważne uwagi:

Skorzystaj z dokumentacji localedef w celu zapoznania się z formatem pliku konfiguracyjnego definicji sortowania.
Ustawianie zmiennych środowiskowych w plikach konfiguracyjnych profilu jest zalecane, aby zmiany były trwałe.
Sprawdź, czy używasz odpowiedniej lokalizacji (np. pl_PL.UTF-8) dla Twojego języka.
Polecenia takie jak sort i ls respektują ustawienia LC_COLLATE, więc inne programy mogą nie być tym dotknięte.
Ostatnio zmieniony 22 lip 2025, 19:58 przez emstrang, łącznie zmieniany 4 razy.
Awatar użytkownika
kobrawerde
Gibki Gibbon
Gibki Gibbon
Posty: 2207
Rejestracja: 10 wrz 2006, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 22.04
Środowisko graficzne: Cinnamon
Architektura: x86_64
Kontakt:

Re: midnight commander nie lubi liter "ł" i "Ł"

Post autor: kobrawerde »

może zaktualizować mc do najnowszej wersji ?
mc --version
...albo rozważyć zgłoszenie buga w projekcie mc lub poszukać patcha.

ponoć niektórych dystrybucjach (np. Arch, Debian sid) są już wersje z poprawkami. ? najnowsza wersja u mnie :
mc --version
GNU Midnight Commander 4.8.30...choć na github-ie najnowsza to 4.8.33 ...skompilowałem do vx.x.33 u mnie w systemie i jest to samo więc raczej to nie to na 99.9 % to bug :-( ...pewnie tylko zgłoszenie błędu w projekcie mc odnośnie polskiego języka / sortowaniu np tu : https://github.com/MidnightCommander/mc/issues
Serwer: LinuxMint/Ubuntu 22.04/HWE kernel/Vsftpd/Kodi/Jellyfin/iptv-dvbt2/etc.
CPU: Intel N100 / RAM: 32GB DDR5
Storage: Lexar NM620 2TB M.2 - (x2)
Mobo: MiniPC (Topton X6C )
Laptop: Lenovo Legion 5 Pro 16ITH6H /Ram32GB/ssd500GB/ssd1TB
ODPOWIEDZ

Wróć do „Instalacja, aktualizacja i konfiguracja Ubuntu”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości