Die Ausgabe von ls(ohne Argumente) scheint Dateinamen durch Zeilenumbrüche zu trennen.
Beweis:
ls | grep fooFunktioniert wie erwartet, wobeigrepjeder 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 lsmehrere 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).