Como o redirecionamento para pv realmente funciona?

Como o redirecionamento para pv realmente funciona?

Estou tentando entender como o redirecionamento está funcionando exatamente emeste comando

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

Qual é a tradução para o inglês?

Todos os dados de tarsão redirecionados como entrada pve depois pvredirecionados para backup.tgz?

Então por que o colchete é pvnecessário?

Então como esse redirecionamento faz sentido?

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

Depois de pvqual é o significado de 2>&1?

Responder1

VerQuais são os operadores de controle e redirecionamento do shell?eOrdem de redirecionamentospara plano de fundo.

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

diz ao shell para executar tar -czf - ./Downloads/com a saída padrão redirecionada para (pv -p --timer --rate --bytes > backup.tgz).

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

diz ao shell para executar pv -p --timer --rate --bytescom a entrada padrão conectada ao canal from tare a saída padrão redirecionada para backup.tgz. O efeito geral, já que taré instruído a criar um arquivo compactado, gerando sua saída padrão ( f -), é construir um arquivo compactado, canalizá-lo pve, em seguida, pvgravá-lo em backup.tgz. pvexibe uma barra de progresso, atualizada à medida que os dados fluem através dela.

Os parênteses não são obrigatórios.

Seu segundo comando altera a segunda metade do primeiro tubo:

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

novamente grava em backup.tgz, mas também redireciona o erro padrão do subshell (introduzido pelos parênteses) para a saída padrão e alimentaqueno dialogqual produz sua própria exibição de progresso.

Os parênteses são necessários aqui se os redirecionamentos forem configurados na ordem dada em seu comando: pv -n > backup.tgz 2>&1iria redirecionar pva saída padrão e o erro padrão para backup.tgz, o que não é o que você deseja. O efeito desejado também pode ser alcançado redirecionando primeiro o erro padrão: pv -n 2>&1 > backup.tgz.

informação relacionada