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

JAN*_*JAN 2 command-line tmux

考虑代码:

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 \;
Run Code Online (Sandbox Code Playgroud)

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

Art*_*ild 7

在脚本中尝试以下代码 - 在 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
Run Code Online (Sandbox Code Playgroud)

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

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