====== 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 ;-))