Myslím, že možná přehlížím poměrně zásadní bod týkající se shellu. Výstup z ls příkaz ve výchozím nastavení odděluje výstup pomocí nových řádků, ale shell zobrazuje výstup na jednom řádku.
Může mi to někdo vysvětlit? Vždy jsem předpokládal, že výstup je jednoduše oddělen mezerami, ale teď, když vidím výstup oddělený novými řádky, očekával bych, že se výstup zobrazí na samostatných řádcích.
Příklad:
[email protected]:~/lpi103-4$ ls text*
text1 text2 text3
od ukazuje, že výstup je oddělen novými řádky:
[email protected]:~/lpi103-4$ ls text* | od -c
0000000 t e x t 1 n t e x t 2 n t e x t
0000020 3 n
0000022
Pokud jsou přítomny nové řádky, proč se výstup nezobrazuje jako:
text1
text2
text3
Přijatá odpověď:
Když výstup zprostředkujete, ls
působí jinak.
Tato skutečnost je skryta v informační dokumentaci:
Je-li standardním výstupem terminál, výstup je ve sloupcích (seřazených svisle) a řídicí znaky jsou na výstupu jako otazníky; jinak je výstup uveden jeden na řádek a řídicí znaky se vypisují tak, jak jsou.
Chcete-li to dokázat, zkuste spustit
ls
a poté
ls | less
To znamená, že pokud chcete, aby výstup byl zaručen jako jeden soubor na řádek, bez ohledu na to, zda je zprostředkován nebo přesměrován, musíte spustit
ls -1
(-1
je číslo jedna)
Nebo můžete vynutit ls | less
pro výstup ve sloupcích spuštěním
ls -C
(-C
je velké C)