回答:
つかいます:
tmux split-window "shell command"
split-window
コマンドの構文は次のとおりです。
split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t target-pane] [shell-command] [-F format]
(man tmux
セクション「ウィンドウとペイン」から)。順序が重要であることに注意してください。コマンドは、表示される前述のオプションのいずれかより後に来なければならず、単一の引数でなければならないため、スペースがある場合は引用する必要があります。
そのようなコマンドがping -c
すぐに終了する場合は、remain-on-exit
最初にオプションを設定できます。
tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'
ペインはping
終了後も開いたままですが、手動で閉じるまで「デッド」とマークされます。
全体的なオプションを変更したくない場合は、別のアプローチがあります。コマンドはで実行されsh -c
、これを悪用してウィンドウを最後まで生き続けることができます:
tmux split-window 'ping -c 3 127.0.0.1 ; read'
ここでは、シェルread
コマンドを使用して、メインコマンドの終了後にユーザー入力の改行を待ちます。この場合、コマンド出力はEnterペインを押すまで残り、その後自動的に閉じます。
remain-on-exit
またはuseを参照してくださいcmd ; read
。
bash --rcfile
この手法は、新しいシェルを開き、コマンドを実行し、コマンドが終了した後もそこに残ります
tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'
または、コマンドに次のような特別な終端文字がない場合;
:
tmux-split-cmd ping google.com
これは以下を使用します:
--rcfile
:bashを呼び出し、新しいシェル内でコマンドを実行し、ユーザーに制御を戻す方法 | スタックオーバーフローTMUX_PANE
:現在のコマンドの代わりに「tmux split-window」コマンドを実行したウィンドウを分割する方法は?別の興味深いバリアントは次のとおりです。
tmux-split-cmd-uniq() (
if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
tmux kill-pane -t 1
fi
tms "$@"
)
前の分割が既に存在する場合はそれを強制終了し、常に1つの余分な分割のみを保持するのに役立ちます。
man tmux | less -p remain-on-exit
...