Ist die Rückwärtsumleitung dasselbe wie eine Pipe?

11

Unter Linux, wenn Sie eingeben

sort < txtfile

ist das das gleiche wie

cat txtfile | sort
tony_sid
quelle

Antworten:

17

Zu Ihrer Titelfrage: Nein. Das Abrufen stdinvon Dateiinhalten ( Eingabeumleitung ) entspricht nicht dem Weiterleiten der Ausgabe eines Programms an die Eingabe eines anderen Programms.

Da Sie jedoch catnur den Inhalt einer Datei drucken, ist das Ergebnis in diesem Beispiel praktisch dasselbe.


Aber auch nur die folgenden Ergebnisse führen zu sehr unterschiedlichen Ergebnissen:

$ cat * | sort
$ sort < *

Wenn es mehr als eine übereinstimmende Datei gibt, wird diese erzeugt

-bash: *: ambiguous redirect

da es einfach nicht so flexibel ist wie das erstere, wodurch alle übereinstimmenden Dateien erfasst und als Eingabe weitergeleitet werden sort.

Daniel Beck
quelle
3
Was ist mit ... sort *? Keine nutzlose Verwendung von cat, keine nutzlose Verwendung von Indirektion, am kürzesten zu tippen, am einfachsten zu denken, und ich glaube, die GNU-Sortierung wird Sie mit Skalierbarkeitsoptimierungen für sehr große Dateien behandeln (nicht so sicher - die Hälfte erinnert sich an etwas dort)
sehen
1
@sehe wahrscheinlich. Ich habe nur das Beispiel verwendet, um zu zeigen, dass die beiden unterschiedlich sind. Hier geht es nicht um eine effiziente Sortierung. Die Sortierung ist jedoch flexibler als diese.
Daniel Beck
@ DanielBeck, in Bezug auf Effizienz, ist sort < txtfileviel effizienter als cat txtfile | sort?
Pacerier