Voici mon 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"
J'ai vu des gens faire cette suggestion tout le temps; mettre 2> & 1. Mais cela affichera uniquement la progression dans le fichier log.txt et le terminal n’affiche rien. Voici une image de l'état d'avancement du fichier log.txt.
Si je supprime 2>&1
et que je vais simplement avec
command | tee log.txt
Seul le terminal affichera la progression et rien ne s'affichera dans le fichier log.txt
J'ai aussi essayé: -
(command 2>&1) | log.txt
command 2> | log.txt
et beaucoup d'autres dont je ne me souviens plus. Alors quelqu'un peut-il m'aider?
La progression est sortie dans STDERR plutôt que dans STDOUT. Vous pouvez obtenir quelque chose comme ce que vous voulez en faisant tail -f
sur le fichier en cours d'écriture de la manière suivante:
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
imprimera tout ce qui est en cours d'écriture sur log.txt
sur le nouveau terminal plus petit et s'exécutera en arrière-plan afin que vous puissiez émettre plus de commandes pendant son exécution.2>
envoie le flux STDERR à log.txt
. S'il y a une sortie sur STDOUT, elle s'affichera dans le terminal à partir duquel la commande ou le script est exécuté.
Redirigez stderr et stdout avec |&
dans bash:
Sudo mate-terminal --geometry=50x10 -x bash -c "dd if=/dev/sda of=/dev/sdb status=progress |& tee log.txt"