Bash
管道命令輸出到 Yad 並將輸出記錄到日誌文件
需要讓命令過程通常使用yad顯示更新,同時將所有輸出記錄到設置的給定日誌文件中。這就是我所擁有的
apt-get update | yad --width=400 --height=300 \ --title="Updating debian package list ..." --progress \ --pulsate --text="Updating debian package list ..." \ --auto-kill --auto-close \ --percentage=10
上面的命令為程序創建了一個脈動指示器並在完成時關閉,但我需要讓它記錄我嘗試過的所有輸出
apt-get update >>${logfile} 2>&1 | yad --width=400 --height=300 \ --title="Updating debian package list ..." --progress \ --pulsate --text="Updating debian package list ..." \ --auto-kill --auto-close \ --percentage=10
但這給了我一個錯誤並從那裡掛起,沒有對話,也沒有記錄,只是凍結了。這是錯誤
GLib-CRITICAL **: g_source_remove: assertion `tag > 0' failed
幫助表示讚賞
該錯誤是因為您將所有輸出重定向到,
$logfile
因此沒有輸出可供yad
處理。您正在尋找的工具是tee
:NAME tee - read from standard input and write to standard output and files SYNOPSIS tee [OPTION]... [FILE]... DESCRIPTION Copy standard input to each FILE, and also to standard output.
所以,你可以這樣做:
apt-get update 2>&1 | tee -a ${logfile} | yad --width=400 --height=300 \ --title="Updating debian package list ..." --progress \ --pulsate --text="Updating debian package list ..." \ --auto-kill --auto-close \ --percentage=10