Redireciona stderr e stdout com |&
no bash:
sudo mate-terminal --geometry=50x10 -x bash -c "dd if=/dev/sda of=/dev/sdb status=progress |& tee log.txt"
Aqui está o meu script: -
sudo mate-terminal --geometry=50x10 -x sh -c "dd if=/dev/sda of=/dev/sdb status=progress 2>&1 | tee log.txt | md5sum > hash.txt | sha1sum > hash1.txt"
Eu vi pessoas dando essa sugestão o tempo todo; colocando 2 > & amp; 1. Mas isso só exibirá o progresso no arquivo log.txt e o terminal não exibirá nada. Aqui está uma imagem de como é o progresso no arquivo log.txt.
Se eu remover 2>&1
e apenas prosseguir com
command | tee log.txt
Apenas o terminal mostrará o progresso e nada será exibido no arquivo log.txt
Eu também tentei: -
(command 2>&1) | log.txt
command 2> | log.txt
e muito mais que não consigo lembrar. Então alguém pode me ajudar?
Redireciona stderr e stdout com |&
no bash:
sudo mate-terminal --geometry=50x10 -x bash -c "dd if=/dev/sda of=/dev/sdb status=progress |& tee log.txt"
O progresso é enviado para STDERR em vez de STDOUT. Você pode obter algo parecido com o que deseja, fazendo tail -f
no arquivo que está sendo escrito:
mate-terminal --geometry=50x10 -x sh -c 'tail -f log.txt'
sudo dd if=/dev/sda of=/dev/sdb status=progress 2> log.txt"
tail -f log.txt
imprimirá tudo que está sendo gravado em log.txt
no novo terminal menor e será executado como um processo em segundo plano para que você possa emitir mais comandos enquanto ele é executado.
2>
envia o fluxo STDERR para log.txt
. Se houver alguma saída no STDOUT, ela será exibida no terminal a partir do qual o comando ou script é executado.
Tags command-line bash stdout