プログラムでgnome-terminalのタブを開き、コマンドを実行し、タブを開いたままにします


12

いくつかのターミナルタブを起動し、各タブで何かを実行し、コマンドの終了後に各タブを開いたままにするコマンドを記述しようとしています。そのため、出力を見て各タブにさらにコマンドを入力できます。

このようなもの:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

しかし、これに関する問題は、「ls」コマンドが終了するとすぐにタブが閉じることです。誰でもタブを開いたままにする方法を知っていますか?

回答:


11

Gnome-terminalはコマンドを実行するかシェルを開くことができますが、両方はできません。

コマンドをカプセル化することと、それに続くシェルの呼び出しを1つのコマンドに入れることにより、両方を行う回避策があります。

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

より多くの代替案については、スタックオーバーフローに関する同様の質問に対する私の答えを読んでくださいhttps : //stackoverflow.com/questions/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426


10

あなたが持っている場合xdotoolwmctrlインストール、その後、次のシェルスクリプトかもしれない仕事:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

私はこれを次のように使用します:

$ run-in-new-tab 'ls -l'

Trustin Leeのブログでこのアイデアを見つけました。


ありがとう。これはかなりうまくいきます。sleep 1ctrl + shift + tの後にaを追加して、機能させる必要があります。すぐに他に何も起こらない場合はこれを受け入れます

うん-私はsleep 2それを時間の100%動作させる必要がありました。素晴らしい解決策-8つのタブを開いて、さまざまなサーバーにSSH接続したり、さまざまなプロセスを開始したり、これを使用しています:朝のセットアップが完全にスクリプト化されました:)
Max Williams

実際にwmctrlは必要ありません。
ネディム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.