Terminal
Tmux:如何創建“會話 > 視窗 > 窗格”並在窗格中執行命令?
我想從 bash 腳本中執行下一個操作:
- 創建一個名為“my_session”的會話。
- 在該會話中創建一個名為“my_window”的視窗。
- 在該視窗內創建兩個名為“my_pan1”和“my_pan2”的平底鍋。
- 在“my_pan1”中發送命令。
- 在“my_pan2”內發送命令。
你會如何處理這個問題?
這個 tmux.sh 腳本在我的 tmux 3.0a 上執行,並且在添加了這個之後:
set -g pane-border-format "#{@mytitle}"
在我的 .tmux.conf 中(請參閱下面的註釋中的原因)。您可能還必須set -g pane-border-status bottom
在 .tmux.conf 中添加以下內容。使用以下命令,您將會話命名為“ses”,將視窗命名為“win”,將窗格 0 命名為“p1”,將窗格 1 命名為“p2”:tmux.sh ses win p1 p2
#!/bin/bash session=$1 window=$2 pan1=$3 pan2=$4 #Get width and lenght size of terminal, this is needed if one wants to resize a detached session/window/pane #with resize-pane command here set -- $(stty size) #$1=rows, $2=columns #start a new session in dettached mode with resizable panes tmux new-session -s $session -n $window -d -x "$2" -y "$(($1 - 1))" tmux send-keys -t $session 'echo "first command in 1st pane"' C-m #rename pane 0 with value of $pan1 tmux set -p @mytitle "$pan1" #split window vertically tmux split-window -h tmux send-keys -t $session 'echo "first command in 2nd pane"' C-m tmux set -p @mytitle "$pan2" #At the end, attach to the customized session tmux attach -t $session
我在重命名窗格時遇到了很多麻煩,因為
tmux select-pane -t $window.0 -T $pan1
應該可以工作,但如此處所述:https ://stackoverflow.com/questions/60106672/prevent-tmuxs-pane-title-from-being-updated窗格標題的一些更新可以是由 tmux 中的應用程序完成。所以我使用了上一個連結中答案中給出的技巧(Nicholas Marriott 還給出了 tmux 版本早於 3.0a 的解決方案)