Bash redireciona a saída 'interativa' para um arquivo especial

0

Eu quero redirecionar, por exemplo a saída, ou seja, a barra de progresso de pv to /dev/tty1 .

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

Mas o que obtenho é sempre que a barra de progresso é atualizada em uma nova linha, enquanto o status antigo permanece na linha acima.

Existe uma maneira de atualizar? Ouvi falar de col , mas suponho que ele será impresso depois que a saída terminar, o que não é adequado para acompanhar visualmente o progresso, é claro.

    
por rudib 16.09.2017 / 03:23

1 resposta

1

Estou assumindo que tty e pty se comportarão da mesma maneira. Eu só tenho acesso a este último agora.

Tente isso ...

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

No meu teste, a barra de progresso é renderizada normalmente no terminal associado a /dev/tty1 , mesmo que eu esteja sendo executado a partir de um terminal diferente.

(Eu tive que adicionar --force mesmo que a página pv man diga que é necessário apenas se o erro padrão não estiver apontando para um terminal. Eu usei pseudo-terminais, então talvez ele não os considere iguais. se as coisas funcionarem sem ele.)

Um exemplo executado ...

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

Terminal "local":

0       0 262144000

terminal / dev / pty7 (uma única linha em mudança):

0:00:06 [36.7MiB/s] [======================================================================>] 100%
    
por 16.09.2017 / 05:41