頑張りました
tmux -c "shell command" split-window
しかし、うまくいかないようです。
tmux split-window
新しいウィンドウを分割するために使用します。
修正する:
を使用するとtmux split-window 'exec ping g.cn'
pingコマンドを実行できますが、停止すると新しいウィンドウが閉じます。
答え1
使用:
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
最後にウィンドウをアクティブに保つために使用できるrunを使用します。
tmux split-window 'ping -c 3 127.0.0.1 ; read'
これにはシェルが使用されます。read
このコマンドは、メインコマンドが完了した後にユーザーが改行文字を入力するのを待ちます。この場合、コマンド出力はEnterウィンドウを押すまで保持され、自動的に閉じます。
答え2
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つだけ維持するのに役立ちます。
答え3
私が提案する
tmux split-window
tmux send "ping -c 3 127.0.0.1" ENTER
利点は、新しいウィンドウが常にアクティブになり、決して閉じられないことですが、以前の答えはtmux split-window 'ping -c 3 127.0.0.1 ; read'
ユーザーがを押した後にセッションを閉じることですEnter。