Gnome-Terminal

打開 Gnome 終端視窗並執行 2 個命令

  • October 31, 2021

我有一個在後台執行的腳本(沒有終端視窗或 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'

*回答類似問題

引用自:https://unix.stackexchange.com/questions/373186