Не уверен, что ваша оригинальная команда работает, поскольку в опциях, заданных для tar, есть несколько ошибок.
Учитывая, что ../MyFolder
существует, ваша первая команда должна быть
pv large_file.tar.gz | tar -xz -C ../MyFolder
Если вы вставляете тройной вызов между pv
и tar
вызовами, тогда вся цепочка работает.
pv large_file.tar.gz | tee /tmp/strout.log | tar -xz -C ../MyFolder
Однако я не уверен, что он делает то, что вы ожидаете. Если вы передадите вывод pv в tee, tee направит его в tar и выгрузит то же содержимое, что и исходный tar, в /tmp/strout.log, в результате чего ваш tar извлечется в ../MyFolder
и скопирован в /tmp/strout.log .
РЕДАКТИРОВАТЬ
Как предлагает @DownloadPizza, вы можете использовать подстановку процесса (см. Как мне записать stderr в файл при использовании «tee» с конвейером? ). Используя флаг -f
с pv, ваша команда станет
pv -f large_file.tar.gz 2> >(tee /tmp/strout.log) > >(tar -xz -C ../MyFolder)
и выдаст ожидаемый результат.