これが私のスクリプトです:-
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"
私はいつもこの提案をしている人々を見てきました。 2>&1を入れます。ただし、これはlog.txtファイルの進行状況のみを表示し、ターミナルには何も表示されません。これは、log.txtファイルでの進捗状況の画像です。
2>&1
を削除してそのまま進むと
command | tee log.txt
端末のみが進行状況を表示し、log.txt
ファイルには何も表示されません
私も試しました:-
(command 2>&1) | log.txt
command 2> | log.txt
そして、もっと思い出せません。だから誰かが私を助けることができますか?
進行状況は、STDOUTではなくSTDERRに出力されます。書き込み中のファイルでtail -f
を実行すると、次のように目的のものを取得できます。
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
は、log.txt
に書き込まれているすべてを新しい小さな端末に出力し、バックグラウンドプロセスとして実行するため、実行中により多くのコマンドを発行できます。2>
は、STDERRストリームをlog.txt
に送信します。 STDOUTに出力がある場合、コマンドまたはスクリプトの実行元の端末に表示されます。
Bashで|&
を使用してstderrとstdoutの両方をリダイレクトします。
Sudo mate-terminal --geometry=50x10 -x bash -c "dd if=/dev/sda of=/dev/sdb status=progress |& tee log.txt"