Gnome-Terminal
打開 Gnome 終端視窗並執行 2 個命令
我有一個在後台執行的腳本(沒有終端視窗或 TTY),偶爾會做一些事情。
我現在希望它在做某事時做另一件事,即打開一個 Gnome 終端視窗並執行 2 個命令。實際上,我只需要執行 1 個命令,但我想讓終端視窗保持打開狀態,這樣我就可以看到命令的輸出。該命令會在 stdout 和 stderr 上列印,並且它的輸出會隨著時間而變化,因此僅將其寫入文件並發送某種通知並不能很好地完成這項工作。
我可以讓 Gnome 終端打開一個視窗並執行 1 個命令:
gnome-terminal -e "sleep 10"
為簡單起見,我選擇
sleep
了長時間執行的命令。但是,當添加另一個命令時,不會打開任何終端視窗:gnome-terminal -e "echo test; sleep 10"
有什麼辦法解決這個問題?
gnome-terminal
將引號中的所有內容視為一個命令,因此為了連續執行其中的許多命令,您需要啟動解釋器(通常是 shell),並在其中執行一些操作,例如:gnome-terminal -e 'sh -c "echo test; sleep 10"'
順便說一句,即使命令完成它們的工作,您可能希望視窗保持打開狀態,在這種情況下只需啟動新的 shell,或者用新的替換目前的:
gnome-terminal -e 'sh -c "echo test; sleep 10; exec bash"'
截至 2020 年 1 月,該
-e
選項gnome-terminal
仍然有效,但會引發警告選項“-e”已棄用,可能會在更高版本的 gnome-terminal 中刪除。
使用“–”終止選項並在其後放置要執行的命令行。
您可以在沒有警告的情況下執行這兩個命令
gnome-terminal -- /bin/sh -c 'echo test; sleep 10'
而且,正如這個答案中提到的,如果你想讓視窗在之後保持打開狀態,你可以這樣做
gnome-terminal -- /bin/sh -c 'echo test; sleep 10; exec bash'