
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 stdout
in eine Datei zu streamen ( >
) oder um den Inhalt einer Datei stdin
für einen Befehl zu streamen ( <
).
DerRohroperator( |
) überträgt die Ausgabe ( ) des Prozesses stdout
an 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.