我正在尝试编写用于在tmux中创建窗格的shell脚本。
#!/bin/sh
tmux rename-window user
tmux new-session -d
tmux split-window -h
tmux selectp -t 1
tmux split-window -h
tmux select-layout even-horizontal
tmux selectp -t 2
tmux split-window -v
但是当执行上面的代码时,并没有产生所需的输出。
图片显示执行代码时产生的输出:
相反,当所有命令都写入tmux时,它会产生所需的输出。
图片显示手动输入命令时产生的输出:
如何修改代码以产生预期的结果?
答案 0 :(得分:3)
试试这个,看起来它可以满足您的需求(通过“期望输出”图像判断):
tmux split-window -h
tmux split-window -h
tmux select-layout even-horizontal
tmux split-window -v
tmux select-pane -t 0
您还可以尝试使用https://github.com/tmux-plugins/tmux-resurrect等内容来保持布局。
答案 1 :(得分:0)
#!/bin/bash
ssh_list=( `cat $1` )
split_list=()
round=0
i=0
for ssh_entry in "${ssh_list[@]:1}"; do
if (( $((round%2)) == 0 ))
then
split_list+=( split-window -v -t $((2*i)) -p 50 ssh "$ssh_entry" ';' )
else
split_list+=( split-window -h -t $((2*i)) -p 50 ssh "$ssh_entry" ';' )
fi
mxrd=$((2**round))
i=$((i+1))
if ((round==0)) || ((i>=mxrd))
then
i=0
round=$((round+1))
fi
done
tmux new-session ssh "${ssh_list[0]}" ';' \
select-layout tiled ';' \
"${split_list[@]}" \
set-option -w synchronize-panes
答案 2 :(得分:0)
您可以在一次调用中执行所有 tmux
命令:
tmux new-session -d \; split-window -h \; split-window -h\; split-window -v