Ich glaube, ich übersehe einen relativ grundlegenden Punkt in Bezug auf Shell. Ausgabe von ls Der Befehl trennt die Ausgabe standardmäßig durch Zeilenumbrüche, aber die Shell zeigt die Ausgabe in einer einzigen Zeile an.
Kann mir das jemand erklären? Ich war immer davon ausgegangen, dass die Ausgabe einfach durch Leerzeichen getrennt wurde, aber jetzt, wo ich die Ausgabe durch Zeilenumbrüche getrennt sehe, würde ich erwarten, dass die Ausgabe in separaten Zeilen angezeigt wird.
Beispiel:
[email protected]:~/lpi103-4$ ls text*
text1 text2 text3
od zeigt, dass die Ausgabe durch Zeilenumbrüche getrennt ist:
[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
Wenn Zeilenumbrüche vorhanden sind, warum wird die Ausgabe dann nicht wie folgt angezeigt:
text1
text2
text3
Akzeptierte Antwort:
Wenn Sie die Ausgabe weiterleiten, ls
verhält sich anders.
Diese Tatsache ist in der Info-Dokumentation versteckt:
Wenn die Standardausgabe ein Terminal ist, erfolgt die Ausgabe in Spalten (vertikal sortiert) und Steuerzeichen werden als Fragezeichen ausgegeben; andernfalls wird die Ausgabe einzeln pro Zeile aufgelistet und die Steuerzeichen werden unverändert ausgegeben.
Um es zu beweisen, versuchen Sie es mit Laufen
ls
und dann
ls | less
Das heißt, wenn Sie wollen, dass die Ausgabe garantiert eine Datei pro Zeile ist, unabhängig davon, ob sie geleitet oder umgeleitet wird, müssen Sie
ausführenls -1
(-1
ist die Nummer eins)
Oder Sie können ls | less
spaltenweise ausgeben durch Ausführen
ls -C
(-C
ist ein großes C)