複数のタブでターミナルを開き、アプリケーションを実行します


16

Linuxシェルスクリプトの初心者です。複数のタブでターミナルを開くシェルスクリプトを書きたいです。各タブでrtspクライアントアプリを実行する必要があります。

このため、私はこのフォーラムでここで質問を行って、次のようなコードを作成しようとしましたが、

tab="--tab-with-profile=Default -e "
cmd="java RunRTSPClient"
for i in 1 2 3 4 5
   do
#   
   foo="$foo $tab $cmd"         
   done
gnome-terminal $foo
exit 0

これは実行中で、タブでターミナルウィンドウを開きますが、突然閉じます。エラーが発生していません。

回答:


13

このスクリプトのバリアントを使用して、必要なことを実行します。

#!/bin/bash

tab="--tab-with-profile=Default"
cmd="bash -c 'java RunRTSPClient';bash"
foo=""

for i in 1 2 3 4 5; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

通常、次のようなスクリプト:

#!/bin/bash

tab="--tab"
cmd="bash -c '<command-line_or_script>';bash"
foo=""

for i in 1 2 ... n; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

n個のタブで新しいターミナルを開き、<command-line_or_script>各タブでを実行します。これは、たとえば、特定のパスにあるインタープリターを使用cd /pathして、上記のスクリプトで使用するいくつかのタブでターミナルを開く場合に非常に便利です。

また、変更を理解するにはman bashこの投稿この投稿を読んでください。

これらのスクリプトをテストしましたが、動作します。


私が言ったのと同じように、それは表示されて閉じられ、エラーも発生しません この問題を修正するには?
user172001

OK、タブ付きのウィンドウを表示しますが、どのタブでもアプリを実行しません。また、これによりウィンドウ表示の問題がどのように修正されたかを少し説明します。
user172001

@ user172001これで動作します。新しい編集を確認してください!
ラドゥラデアヌ

これはかなりクールです。+1
Nishant

1
cmd1 && cmd2コマンド文字列に追加して複数のコマンドを実行しようとしました。最初のものだけを実行するようです。私は露骨に間違ったことをしていますか?
-Byxor

7

私は自分の答えを思いつきました。私はこれがより良いアプローチだと思います:

  1. 理解できます。私は、bashの専門家ではないし、何の説明がある何のために、より人気のある答えで与えられなかった...${}-e、または@
  2. 各タブのタイトルとコマンドを簡単にカスタマイズできます
  3. わかりやすいと言いましたか?

; $SHELL各gnome-terminalコマンドの最後に、ターミナルウィンドウを開いたままにすることに注意してください。それ以外の場合は、すぐに閉じられます。

title1="tab 1"
title2="tab 2"
title3="tab 3"

cmd1="cd /etc"
cmd2="cd ~/Documents"
cmd3="cd /usr/local"

gnome-terminal --tab --title="$title1" --command="bash -c '$cmd1; $SHELL'" \
               --tab --title="$title2" --command="bash -c '$cmd2; $SHELL'" \
               --tab --title="$title3" --command="bash -c '$cmd3; $SHELL'" 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.