Wie funktioniert eigentlich die Umleitung auf PV?

Wie funktioniert eigentlich die Umleitung auf PV?

Ich versuche zu verstehen, wie die Umleitung genau funktioniert indieser Befehl

# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)

Wie lautet die englische Übersetzung?

Alle Daten von tarwerden als Eingabe umgeleitet pvund dann pvweiter zu backup.tgz?

Warum ist dann die Klammer pverforderlich?

Welchen Sinn ergibt dann diese Umleitung?

tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70

Was pvbedeutet 2>&1?

Antwort1

SehenWas sind die Steuer- und Umleitungsoperatoren der Shell?UndReihenfolge der Weiterleitungenfür den Hintergrund.

tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)

tar -czf - ./Downloads/weist die Shell an , die Standardausgabe mit Umleitung nach auszuführen (pv -p --timer --rate --bytes > backup.tgz).

(pv -p --timer --rate --bytes > backup.tgz)

weist die Shell an, pv -p --timer --rate --bytesmit der Standardeingabe zu laufen, die mit der Pipe von verbunden ist tar, und die Standardausgabe nach umzuleiten . Da angewiesen wird, ein komprimiertes Archiv zu erstellen und an die Standardausgabe () auszugeben , besteht backup.tgzder Gesamteffekt darin, ein komprimiertes Archiv zu erstellen, es durchzuleiten und es dann nach zu schreiben . zeigt einen Fortschrittsbalken an, der aktualisiert wird, während Daten hindurchfließen.tarf -pvpvbackup.tgzpv

Die Klammern sind nicht erforderlich.

Ihr zweiter Befehl ändert die zweite Hälfte der ersten Pipe:

(pv -n > backup.tgz) 2>&1

schreibt wieder nach backup.tgz, leitet aber auch die Standardfehlerausgabe der Subshell (eingeleitet durch die Klammern) auf die Standardausgabe um und speistDasin dialogdas eine eigene Fortschrittsanzeige erstellt wird.

Die Klammern sind hier erforderlich, wenn die Umleitungen in der in Ihrem Befehl angegebenen Reihenfolge eingerichtet werden: pv -n > backup.tgz 2>&1würde sowohl pvdie Standardausgabe als auch die Standardfehlerausgabe von nach umleiten backup.tgz, was nicht das ist, was Sie wollen. Der gewünschte Effekt kann auch erreicht werden, indem zuerst die Standardfehlerausgabe umgeleitet wird: pv -n 2>&1 > backup.tgz.

verwandte Informationen