Wann sollten Pipes verwendet und wann umgeleitet werden?

Wann sollten Pipes verwendet und wann umgeleitet werden?

Obwohl das eine grundlegende Sache ist, wundere ich mich trotzdem. Betrachten Sie diese beiden Beispiele.

Fall 1:

[root@dhcppc0 practice]# cat file1 > wc -l
cat: invalid option -- l
Try `cat --help' for more information.

Fall 2:

[root@dhcppc0 practice]# cat file1 | wc -l
7

Ich frage mich, warum die Umleitung im ersten Fall nicht funktioniert. Wann soll ich eine Umleitung und wann Pipes verwenden? Ich verwende Linux schon lange, aber diese grundlegenden Dinge verwirren mich immer noch.

Bitte helfen Sie.

Antwort1

DerUmleitungsoperatorwird verwendet, um einen Befehl stdoutin eine Datei zu streamen ( >) oder um den Inhalt einer Datei stdinfür einen Befehl zu streamen ( <).

DerRohroperator( |) überträgt die Ausgabe ( ) des Prozesses stdoutan den nächsten Prozess stdin.

Die einzige Möglichkeit, Ihren ersten Fall zum Laufen zu bringen, wäre die Verwendung einer temporären Datei. Sie müssten also zwei Schritte ausführen:

cat file1 > tmpfile
wc -l < tmpfile

Antwort2

Sie verwenden Pipes, wenn Sie ein FD einer ausführbaren Datei mit einem FD einer anderen verbinden möchten. Sie verwenden eine Umleitung, wenn Sie ein FD einer ausführbaren Datei mit einer Datei verbinden möchten.

verwandte Informationen