====== Záludné chování či chyby základních programů ======
===== bash =====
==== "Verbatim expansion" ====
Velmi užitečná je konstrukce ''$'...''' v bashi, provádí jen interpretaci zpětného lomítka podle standardu ANSI a jinak ničeho jiného:
09:22 obo-desktop ~$ echo $'\x41'
A
===== sort =====
==== Nastavení locale ovlivňuje výsledek ====
''sort'' je známý tím, že třídí různě podle toho, jak máte nastavené ''locale''. Jestli třídění proběhne korektně česky v českém locale jsem nestudoval.
Takto ''sort'' přesvědčíte, aby třídil podle bytů (čísel znaků), nikoli podle nějaké interpretace, jak asi vypadá obrázek písmene toho čísla:
env LC_ALL=C sort < vstup > výstup
Nastavení je dobré i pro případy, kdy vaše řádky obsahují různé symboly. Ukázkový rozdíl:
08:56$ sort < clipin
ahoj
==== Kódování souboru může vést ke špatným výsledkům ====
Pokud máte na konzoli UTF-8 a soubor ''clipin'' v ISO-8859-2, může vás ''sort -u'' nemile překvapit: neodliší ''ě'' od ''š'' nebo ''č''.
23:01 sol8 ~$ iconv -f latin2 -t utf8 < clipin
ě
š
ě
č
23:01 sol8 ~$sort -u < clipin | iconv -f latin2 -t utf8
ě
23:00 sol8 ~$env LC_ALL=C sort -u < clipin | iconv -f latin2 -t utf8
š
č
ě
''iconv'' jsem ve všech případech přidal, abych na konzoli vypsal soubor v UTF-8, jak konzole čeká.
===== uniq =====
Stejně jako ''sort'', i ''uniq'' podléhá locale.
Stejně jako ''sort'', i ''uniq'' se divně chová k souborům v nějakém kódování. (Ano, rozumíte správně, opravdu říkám, že uniq se chová divně ke všem souborům ;-))