Gnomeターミナルウィンドウを開き、2つのコマンドを実行します。

Gnomeターミナルウィンドウを開き、2つのコマンドを実行します。

時々、タスクを実行するバックグラウンド(ターミナルウィンドウやTTYなし)で実行されるスクリプトがあります。

これで、Gnomeターミナルウィンドウを開き、2つのコマンドを実行する別のタスクを実行しながら、1つのタスクを実行したいと思います。実際には1つのコマンドを実行すればいいのですが、コマンドの出力を見ることができるようにターミナルウィンドウを開いたままにしたいと思います。コマンドはstdoutとstderrに印刷され、時間の経過とともに出力が変わるため、ファイルに書き込んで通知を送信するだけでは操作が正しく行われません。

Gnome Terminalを使用してウィンドウを開き、1つのコマンドを実行できます。

gnome-terminal -e "sleep 10"

sleep簡単にするために、長期実行コマンドを選択しました。ただし、別のコマンドを追加すると、ターミナルウィンドウは開きません。

gnome-terminal -e "echo test; sleep 10"

この問題に対する解決策は何ですか?

答え1

gnome-terminal引用符内のすべての内容は1つのコマンドとして扱われるため、多くのコマンドを連続して実行するにはインタプリタ(通常はシェル)を起動し、その中で次のことを行う必要があります。

gnome-terminal -e 'sh -c "echo test; sleep 10"'

ただし、コマンドが操作を完了した後でもウィンドウを開いたままにしたい場合があります。この場合は、新しいシェルを起動するか、現在のシェルを新しいシェルに置き換えます。

gnome-terminal -e 'sh -c "echo test; sleep 10; exec bash"'

答え2

2020年1月現在、この-eオプションは引き続きgnome-terminal使用できますが、警告が表示されます。

# '-e'オプションは廃止され、将来のバージョンのgnome-terminalから削除される可能性があります。

#オプションを終了するには、「--」を使用し、その後に実行するコマンドラインを配置します。

警告なしでこれら2つのコマンドを実行できます。

gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

そして、で述べたようにこの回答、後でウィンドウを開いたままにするには、次のようにします。

gnome-terminal -- /bin/sh -c 'echo test; sleep 10; exec bash'

*同様の質問に答えてください

答え3

コマンドを外部スクリプトに入れて、2番目のGNOME端末ベースのスクリプトで実行する方が良かったです。

スクリプト1:command.sh

#bin/bash
precommand
app
postcommand

次に、gnome-terminal runscript.shでこれらのスクリプトを実行するスクリプト:

gnome-terminal --full-screen --hide-menubar -- /bin/sh commands.sh

関連情報