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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.