Bash перенаправляет «интерактивный» вывод в специальный файл

Я хочу перенаправить, например, вывод, то есть индикатор выполнения от pv до / dev / tty1 .

 ...  | pv -perts 100G |  ... 2> /dev/tty1

Но что я получаю, так это то, что когда индикатор выполнения обновляется, это происходит с новой строкой, в то время как старый статус остается в строке выше.

Есть ли способ его обновить? Я слышал о col , но я предполагаю, что он будет печататься после завершения вывода, что, конечно, не подходит для визуального отслеживания прогресса.

0
16.09.2017, 04:48
1 ответ

Я предполагаю, что tty и pty будут вести себя одинаково. Сейчас у меня есть доступ только к последнему.

Попробуйте это...

... | pv --force -perts 100G 2> /dev/tty1 |...

В моем тестировании индикатор выполнения нормально отображается в терминале, связанном с /dev/tty1, хотя я запускаю его с другого терминала.

(Мне пришлось добавить --force, хотя на справочной странице pvсказано, что это необходимо только в том случае, если стандартная ошибка не указывает на терминал. Я использовал псевдо-терминалы -, поэтому, возможно, они не считаются одинаковыми. Оставьте его, если что-то работает без него.)


Пример запуска...

cat file_250M | pv --force -perts 250M 2> /dev/pty7 | wc

Клемма "Местный":

0       0 262144000

/dev/pty7 терминал (одна меняющаяся строка):

0:00:06 [36.7MiB/s] [======================================================================>] 100%
1
28.01.2020, 02:45

Теги

Похожие вопросы