web-dev-qa-db-ja.com

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

いくつかのターミナルタブを起動し、各タブで何かを実行し、コマンドが終了した後も各タブを開いたままにするコマンドを作成しようとしています。これにより、出力を確認して、各タブにさらにコマンドを入力できます。

このようなもの:

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

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

12
Mark

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

11
lesmana

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のブログ で見つけました。

10
Jim Blandy