![Wie funktioniert eigentlich die Umleitung auf PV?](https://rvso.com/image/192225/Wie%20funktioniert%20eigentlich%20die%20Umleitung%20auf%20PV%3F.png)
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 tar
werden als Eingabe umgeleitet pv
und dann pv
weiter zu backup.tgz
?
Warum ist dann die Klammer pv
erforderlich?
Welchen Sinn ergibt dann diese Umleitung?
tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
Was pv
bedeutet 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 --bytes
mit 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.tgz
der 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.tar
f -
pv
pv
backup.tgz
pv
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 dialog
das 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>&1
würde sowohl pv
die 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
.