Answers:
使用:
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
“ Windows和窗格”部分)。请注意,顺序很重要-该命令必须在出现的任何上述选项之后执行,并且该命令必须是单个参数,因此,如果有空格,则需要用引号引起来。
对于这样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'
在这里,您可以使用shell read
命令在main命令完成后等待用户输入的换行符。在这种情况下,命令输出将一直保留到您Enter在窗格中按之前,然后它会自动关闭。
remain-on-exit
或使用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,在新Shell中运行命令,然后将控制权交还给用户?| 堆栈溢出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 "$@"
)
如果先前的分割已经存在,则会杀死该分割,并始终确保仅保留一个额外的分割。
man tmux | less -p remain-on-exit
...