Pipes vs. Redirects

22

Ich habe lange Zeit Pipes und Redirects verwendet und festgestellt, dass ich nicht genau weiß, wie sie sich unterscheiden. Ich weiß nur, dass Sie> verwenden, wenn Sie die Ausgabe in einer Datei speichern möchten. Andernfalls verwenden Sie meistens nur |. Kann jemand den Unterschied zwischen Pipes und Redirects erklären?

tony_sid
quelle

Antworten:

24

Beide machen dasselbe Grundlegende; Sie leiten einen Dateideskriptor des ausgeführten Prozesses um. Der Unterschied liegt im Wie. Eine Pipe verbindet die Standardausgabe eines Prozesses mit der Standardausgabe eines anderen Prozesses, wohingegen die Umleitung von / zu einer Datei ( >von Standardausgabe zu einer Datei, <von einer Datei zu Standardausgabe) erfolgt.

Ignacio Vazquez-Abrams
quelle
1
Die Unterscheidung Art von Unschärfen in Linux und anderen Systemen, die haben /dev/fd. Wenn Sie beispielsweise ausführen echo foo > >(somecommand), wird es auf erweitert echo foo > /dev/fd/3. Es ist immer noch Umleitung, aber zu einem Prozess.
user1686