複数のコマンドを実行する方法 gnome-terminal

複数のコマンドを実行する方法 gnome-terminal

次のようなアプリケーション (15 個以上) を実行するスクリプトがあります。

cd mypath
sleep 1
gnome-terminal -t App1 --tab -e "./App1" 
sleep 1
gnome-terminal -t App2 --tab -e "./App2" 
..
..
sleep 1
gnome-terminal -t App15 --tab -e "./App15"  

ご覧のとおり、これにより 15 個の異なる端末でアプリが起動します。

ここで、 +./AppXでany を kill すると、何らかの理由でプログラムが終了し、そのターミナルも終了します。 CtrlC

Ctrl私が望んでいるのは、 +を押したときに Cのみを終了し./AppX、ターミナルは開いたままにすることです。これは、AppXもう一度開始したいときに、上矢印キーと Enter キーのみを押す必要があるためです。

編集::
答えが見つかりました::askubuntu.com からの承認された回答を参照してください。

もう一つの疑問は: 次のように複数のコマンドを実行するにはどうすればよいですか?

gnome-terminal -e "sleep 1; AppX"  

これは機能しません。他のさまざまな方法 (&、&&、|) を試しましたが、すべて失敗しました。

答え1

次のコマンドは、マルチ gnome ターミナルで 15 個のタブを持つ新しいターミナルを開きます。

cd mypath
multi-gnome-terminal \
  --add-tab -tname App1 --tcommand "./App1" \
  --add-tab -tname App2 --tcommand "./App2" \
  ...
  --add-tab -tname App15 --tcommand "./App15" \

本当に睡眠が必要な場合は、次のように組み込むことができます。

cd mypath
multi-gnome-terminal \
  --add-tab -tname App1 --tcommand "sleep 1; ./App1" \
  --add-tab -tname App2 --tcommand "sleep 2; ./App2" \
  ...
  --add-tab -tname App15 --tcommand "sleep 15; ./App15" \

起動するコマンドの数やリストを動的に変更する必要がある場合は、以下を使用できます。

cd mypath
cmd=(multi-gnome-terminal)
cmd=("${cmd[@]}" --add-tab -tname App1 --tcommand "sleep 1; ./App1")
cmd=("${cmd[@]}" --add-tab -tname App2 --tcommand "sleep 2; ./App2")
  ...
cmd=("${cmd[@]}" --add-tab -tname App15 --tcommand "sleep 15; ./App15")
"${cmd[@]}"

関連情報