複数のタブを持つgnome端末を開き、各タブでいくつかのコマンドを実行します。

複数のタブを持つgnome端末を開き、各タブでいくつかのコマンドを実行します。

これが私が達成したいものです:

  1. 5つのタブを持つgnome端末を開きたいです。
  2. 各タブで一連のコマンド(5~10個のコマンド)を自動的に実行したいと思います。
    最初のタブ:明確なケースビューを設定してから、1つ以上のコマンドを実行する必要があります。
    2番目のタブ:サーバーにログインし、いくつかのコマンドを実行する必要があります。
    3番目のタブ:実行のみを実行する必要があります。いくつかのコマンド

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab(うまく機能し、ビューが設定されていますが、それ以降はコマンドは実行されません)

私はこれを試して、以下のスクリプトで実行してみました。

gnome-terminal --geometry 125x18-0-26 --tab -t "some title" -e /home/ekido/Desktop/MyScripts/myScript

#!/usr/bin/expect
exec gnome-terminal --geometry 125x49-0+81 –tab
spawn ssh usert@server
expect "password"
send "*******\r"
expect "user@server100:~>"
send “some command\r"
expect "user@server100:~>"
send “some command"
interact 

例では、その行を削除して別のファイルからスクリプトを呼び出すとexec gnome-terminal --geometry 125x49-0+81 –tab正常に動作します。サーバーにログインしてすべてのコマンドを実行します。誰でもこの問題を解決するのに役立ちますか?

各タブに対して呼び出されるスクリプトを作成することはオプションではありません。それぞれ5〜7個のタブがある5つの端末で終わるので、25〜30個のスクリプトを作成する必要があります(助けになるよりも費用がかかります)。

答え1

これは私のコンピュータで動作するようです。

gnome-terminal --geometry=260x25-0+0 --tab -e "bash -c 'date; read -n1'" --tab -e "bash -c 'echo meow; read -n1' " --tab --tab

-eで実行されたプロセスは、実行が終了すると終了します。この場合、bashはロードされ、渡されたコマンドを実行し、すぐに存在します。ユーザー入力を待つために読み取りステートメントを配置しました。これにより、この例に示すように、キーが押されるまでタブは閉じられません。それ以外の場合は、他の2つのタブがすぐに実行されて閉じるため、2つのタブだけが開いているように見えます。

答え2

コマンドが完了すると bash が終了するため、bashコマンドの後に別のインスタンスを呼び出して対話型シェルを取得できます。

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"

答え3

以下をscript.shとして保存してください。

#!/usr/bin/env bash

me=$(realpath $0)

commands=(
"echo"
"ls -l && echo 'yes'"
"top"
"ps"
)
len=${#commands[@]}

if [ $# -eq 0 ];then
    num=$len
else
    num=$1
fi

n=$((len-num))
command=${commands[$n]}
num=$((num-1))

xdotool key ctrl+shift+t

if [ $num -gt -1 ]; then
    sleep 1; xdotool type --delay 1 --clearmodifiers "$me $num; ${command}"; xdotool key Return;
fi

$ PATHにscript.shを追加して実行してください。

gnome-terminal -x script.sh

バラよりコマンドラインを使用してgnome-terminalで新しいタブを開きます。

答え4

GUI を厳密に使用するには、次の手順を実行します。

  1. (終了文字を入力した後)端末領域を右クリックして[タブを開く]を選択して、必要に応じてタブを開きます。
  2. 代替案:ターミナルエリア(タイトルバーではない)の右上隅にあるアイコンをクリックして[すべてブロードキャスト]を選択するか、[新しいグループ - 名前の選択]を選択します。各タブでこのアイコンをクリックし、作成したばかりのグループを選択します。アイコンをクリックして選択します。放送グループ

これで、タブに入力したすべての内容がすべてのタブにコピーされます。ブロードキャストをオフにすると、この機能はオフになります。

バリエーションの場合は、KDE ​​の konsole をインストールします。複数のタブを作成するには、下部の空き領域をダブルクリックします。次に、編集 - >入力コピー先を選択し、コピー方法を選択します。そのタブに入力したすべてのコンテンツ(終了者の「すべてのタブ」とは反対)は、選択したすべてのタブにコピーされます。入力を-> Noneにコピーすると機能がオフになります。

最後のバリエーションはClustershです。

この機能を使用する場合は、viの使用に非常に注意してください(または使用しないでください)。 viは、必要に応じて動作することを確認するために特定のキーストロークを解釈する方法の設定が多すぎます。 bashの検索履歴機能を使用する場合も同様です(他の理由で)。すべての端末セッションで同じ項目を見つけます。

関連情報