Helyes sorrendbe állítja az Ubuntu ezeket a fájlokat? (ls, sort, nautilus)

Fórumok

$ ls -1
[hd]Az.txt
[hd]Fe.txt
[hd_hun]Cle.txt
[hd_hun]Cl.txt
[hd]In.txt
[hd]Li.txt
$ ls | sort
[hd]Az.txt
[hd]Fe.txt
[hd_hun]Cle.txt
[hd_hun]Cl.txt
[hd]In.txt
[hd]Li.txt

Ehhez képest a nautilus a két hd_hun-t felcserélve mutatja (fájlnév szerinti rendezésnél).

Nem tudok rájönni, hogy hogy kerül a két hd_hun a hd-k közé.

man ls:
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

http://alphabetizer.flap.tv/ :
[hd]Az.txt
[hd]Fe.txt
[hd]In.txt
[hd]Li.txt
[hd_hun]Cl.txt
[hd_hun]Cle.txt

Én nézek itt félre valamit vagy tényleg nem jól állít abc sorrendet a linux?

Hozzászólások

"Nem tudok rájönni, hogy hogy kerül a két hd_hun a hd-k közé."
"Én nézek itt félre valamit vagy tényleg nem jól állít abc sorrendet a linux?"
Jó az a sorrend, csak nem, vagy nem jól állítottad be az általad kívánt összehasonlítási elvet.


# LC_COLLATE=C.UTF-8 ls -1
[hd]Az.txt
[hd]Fe.txt
[hd]In.txt
[hd]Li.txt
[hd_hun]Cl.txt
[hd_hun]Cle.txt
# ls -1 | LC_COLLATE=C.UTF-8 sort
[hd]Az.txt
[hd]Fe.txt
[hd]In.txt
[hd]Li.txt
[hd_hun]Cl.txt
[hd_hun]Cle.txt
#

Nem állítottam be semmilyen összehasonlítási elvet. Honnan kéne tudnom, hogy oda kell írni, hogy "LC_COLLATE=C.UTF-8", hogy tényleg abc sorrendbe rakja a fájlokat?
Ha nem írom oda, akkor milyen elvet követ, ami alapján a hd_hun a hd-k közé kerül?

Tehát tényleg nem bug, hogy a _default_ rendezési elv nem abc sorrendet hoz ki?

Nincs olyan, hogy "az abc". Különböző nyelvek vannak, mindegyikhez saját ábécébe rendezési szabályhalmaz (például magyarban a "zz" előbb jön mint a "zs"), meg van egy-két technikai is (C, C.UTF-8).

A legtöbb nyelvhez tartozó szabályok a speciális írásjeleket átugorják, így lehetséges hogy [hd_hun]Cl.txt < [hd]In.txt (mivel hdhuncltxt < hdintxt).

A Nautilus tippem szerint a kiterjesztés lecsípésével kapott fájlnevet rendezi ábécébe, innen ered az eltérés.

"Honnan kéne tudnom, hogy oda kell írni, hogy "LC_COLLATE=C.UTF-8", hogy tényleg abc sorrendbe rakja a fájlokat?"
Rossz a kérdés. Sorrendbe (ABC-rendbe) rakja mindenképp, és az ABC-t te határozod meg. Mivel a rendezés nyelvfüggő, pontosabban a locale-től függő, azaz pl. magyarul másként soroljuk be az "gy" szövegrészt, mint angolul. Ugyanilyen módon az írásjelekre és speciális karakterere szintén nyelvfüggő besorolási elv vonatkozhat. A rendszert te telepíted illetve állítod be magadnak a default collationt, tehát az, hogy mi a default, nem lehet bug. Az írásjeleket pedig figyelmen kívül hagyják az angolban is, és a magyarban is.

"Ha nem írom oda, akkor milyen elvet követ, ami alapján a hd_hun a hd-k közé kerül?"
Amilyen collation illetve locale be van állítva nálad.

"Tehát tényleg nem bug, hogy a _default_ rendezési elv nem abc sorrendet hoz ki?"
De, pont ABC sorrendet hoz ki. Ami nem feltétlen egyezik meg a karakterek kódjai szerinti sorbarendezéssel. Neked kell tudnod, hogy milyen környezetben és milyen collation mentén rendezel, ha nem felel meg a default, akkor a rendezést végző programmal ezt tudatnod kell.