Как на самом деле работает перенаправление на pv?

Как на самом деле работает перенаправление на pv?

Я пытаюсь понять, как именно работает перенаправление.эта команда

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

Каков перевод на английский?

Все данные tarперенаправляются как входные данные в , pvа затем pvперенаправляют их в backup.tgz?

Тогда зачем нужна скобка вокруг pv?

Тогда какой смысл в этом перенаправлении?

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

После pvчего в чем смысл 2>&1?

решение1

ВидетьКаковы операторы управления и перенаправления оболочки?иПорядок перенаправленийдля фона.

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

указывает оболочке работать tar -czf - ./Downloads/со стандартным выводом, перенаправленным в (pv -p --timer --rate --bytes > backup.tgz).

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

сообщает оболочке о необходимости запуска pv -p --timer --rate --bytesсо стандартным вводом, подключенным к каналу из tar, и стандартным выводом, перенаправленным в backup.tgz. Общий эффект, поскольку tarсообщается о создании сжатого архива, выводимого на его стандартный вывод ( f -), заключается в создании сжатого архива, его передаче через pv, а затем pvзаписи в backup.tgz. pvотображает индикатор выполнения, обновляемый по мере прохождения данных через него.

Скобки не обязательны.

Вторая команда изменяет вторую половину первой трубы:

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

снова записывает в backup.tgz, но также перенаправляет стандартную ошибку подоболочки (введенную скобками) на стандартный вывод и передаетчтов dialogкоторый выводится собственный индикатор прогресса.

Скобки здесь необходимы, если перенаправления установлены в порядке, указанном в вашей команде: pv -n > backup.tgz 2>&1перенаправит и pvстандартный вывод , и стандартную ошибку в backup.tgz, что не то, что вам нужно. Желаемого эффекта можно также достичь, перенаправив сначала стандартную ошибку: pv -n 2>&1 > backup.tgz.

Связанный контент