Die Ausgabe von ls
(ohne Argumente) scheint Dateinamen durch Zeilenumbrüche zu trennen.
Beweis:
ls | grep foo
Funktioniert wie erwartet, wobeigrep
jeder Dateiname als separate Eingabezeile behandelt wird.ls > files.txt; vim files.txt
-> In Vim befindet sich jede Datei in einer separaten Zeile
Und doch werden bei der Ausgabe von im Terminal ls
mehrere Dateien in einer Zeile abgelegt, wobei die Dateinamen durch Leerzeichen getrennt werden, um gut ausgerichtete Spalten zu erstellen:
$ ls
a.txt b.txt c.txt
Meine Frage ist also, wie macht man das?
Verwenden Sie ein spezielles Steuerzeichen, um eine neue Zeile zu "fälschen"? Oder weiß es, wann seine Ausgabe an einen anderen Befehl weitergeleitet wird, und formatiert seine Ausgabe in diesem Fall anders?
ls
, ob der Ausgang ein Terminal ist oder nichtisatty(3)
.