![Como o redirecionamento para pv realmente funciona?](https://rvso.com/image/192225/Como%20o%20redirecionamento%20para%20pv%20realmente%20funciona%3F.png)
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 tar
são redirecionados como entrada pv
e depois pv
redirecionados para backup.tgz
?
Então por que o colchete é pv
necessário?
Então como esse redirecionamento faz sentido?
tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
Depois de pv
qual é 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 --bytes
com a entrada padrão conectada ao canal from tar
e 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 pv
e, em seguida, pv
gravá-lo em backup.tgz
. pv
exibe 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 dialog
qual 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>&1
iria redirecionar pv
a 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
.