打开 TMUX 的 8 个窗格并转到每个窗格中的不同目录,然后在每个窗格中运行命令?

打开 TMUX 的 8 个窗格并转到每个窗格中的不同目录,然后在每个窗格中运行命令?

考虑以下代码:

tmux new-session \; split-window -h \; split-window -v -p 66 \; split-window -v \; split-window -v \; select-pane -t 0 \; split-window -v -p 66 \; split-window -v -p 66 \; split-window -v \;

我们如何在该代码中添加以不同路径打开每个窗格(cd ...) 以及在每个窗格中运行命令的功能:npm run dev

答案1

在脚本中尝试以下代码 - 在 Tmux 3.1 上对我有效:

#!/bin/bash

# Create a new session named "newsess", split panes and change directory in each
tmux new-session -d -s newsess
tmux send-keys -t newsess "cd /path/to/directory1" Enter
tmux split-window -h -t newsess
tmux send-keys -t newsess "cd /path/to/directory2" Enter
tmux split-window -v -p 66 -t newsess
tmux send-keys -t newsess "cd /path/to/directory3" Enter
tmux split-window -v -t newsess
tmux send-keys -t newsess "cd /path/to/directory4" Enter
tmux split-window -v -t newsess
tmux send-keys -t newsess "cd /path/to/directory5" Enter
tmux select-pane -t newsess:0.0
tmux split-window -v -p 66 -t newsess
tmux send-keys -t newsess "cd /path/to/directory6" Enter
tmux split-window -v -p 66 -t newsess
tmux send-keys -t newsess "cd /path/to/directory7" Enter
tmux split-window -v -t newsess
tmux send-keys -t newsess "cd /path/to/directory8" Enter
# Set pane synchronization
tmux set-window-option -t newsess:0 synchronize-panes on
# Run command in all 8 panes
tmux send-keys -t newsess "npm run dev" Enter
# Attach to session named "newsess"
tmux attach -t newsess

为了进行测试,我建议运行pwd您希望同时在 8 个窗格中运行的任何命令(也检查目录是否正确)。;-)

如果您想在每个窗格中运行不同的命令,您当然只需send-keys在更改目录后运行命令即可。但我的印象是您想在每个窗格中运行相同的命令,这就是窗格同步可以工作的原因。

答案2

微小的改进;如果您希望所有窗格大小相同,则脚本将变为如下形式:

# Create a new session named "newsess", split panes and change directory in each
tmux new-session -d -s newsess
tmux send-keys -t newsess "cd /path/to/directory1" Enter
tmux split-window -h -t newsess
tmux send-keys -t newsess "cd /path/to/directory2" Enter
tmux split-window -v -p 75 -t newsess
tmux send-keys -t newsess "cd /path/to/directory3" Enter
tmux split-window -v -p 66 -t newsess
tmux send-keys -t newsess "cd /path/to/directory4" Enter
tmux split-window -v -p 50 -t newsess
tmux send-keys -t newsess "cd /path/to/directory5" Enter
tmux select-pane -t newsess:0.0
tmux split-window -v -p 75 -t newsess
tmux send-keys -t newsess "cd /path/to/directory6" Enter
tmux split-window -v -p 66 -t newsess
tmux send-keys -t newsess "cd /path/to/directory7" Enter
tmux split-window -v -p 50 -t newsess
tmux send-keys -t newsess "cd /path/to/directory8" Enter
# Set pane synchronization
tmux set-window-option -t newsess:0 synchronize-panes on
# Run command in all 8 panes
tmux send-keys -t newsess "npm run dev" Enter
# Attach to session named "newsess"
tmux attach -t newsess

相关内容