Warum gibt ls beim Pipettieren eine andere Ausgabe?

8

Direkt zum Terminal drucken:

%Vor%

Piping zu cat

%Vor%

Warum gibt ls eine andere Ausgabe basierend auf dem Ziel?

    
kev 21.12.2011, 02:15
quelle

3 Antworten

6

ls kann tatsächlich feststellen, ob es an ein Terminal oder eine Datei ausgegeben wird (mit dem isatty -Bibliotheksaufruf). Wenn es eine Konsole erkennt, wird es versuchen, es für eine einfachere Anzeige kompakter zu machen.

    
Chris Eberle 21.12.2011, 02:18
quelle
6

ls verhält sich automatisch wie ls -1 beim Pipettieren.

Dies ist normalerweise das, was Sie wollen, wenn Sie ls zu awk oder etwas ähnliches pipen, da es die Ausgabe von ls Zeile für Zeile behandelt.

Um dieses Standardverhalten zu überschreiben, können Sie ls -C | cat verwenden.

    
Dennis 21.12.2011 02:18
quelle
1

Damit jede Zeile nur einen Eintrag enthält, kann der Befehl, über den die Ausgabe geleitet wird, so funktionieren, wie es wahrscheinlich wäre. Zum Beispiel (die Ausgabe ls vorausgesetzt) ​​würde Folgendes wahrscheinlich nicht das sein, was Sie wollen:

%Vor%

Aber weil sort nicht wusste, dass es mehr als ein Element pro Zeile gab, konnte es nichts machen. Vergleichen Sie dies mit dem, was tatsächlich passiert:

%Vor%

Sie können das (unerwartete) erste Verhalten erreichen, indem Sie -C an ls übergeben.

    
Andrew Marshall 21.12.2011 02:20
quelle

Tags und Links