【问题标题】:Controlling a nested tmux session from bash script从 bash 脚本控制嵌套的 tmux 会话
【发布时间】:2017-11-06 22:37:28
【问题描述】:

我正在尝试编写一个 bash 脚本来设置一个 tmux 会话会话,其中包含 2 个嵌套会话,如下图所示。

x: 外部会话的名称

x-left:左侧嵌套会话的名称

x-right:右侧嵌套会话的名称

------------------------------
|   -----------  ----------   |
|  |          | |          |  |
|  |  x-left  | |  x-right |  |
|  |  pane 1  | |  pane 1  |  |
|   ----------| |----------   |
|  |          | |          |  |
|  | x-left   | |  x-right |  |
|  | pane 2   | |  pane 2  |  |
|   ----------   ----------   |
--------session name: x--------

我目前的脚本如下:

SESSIONNAME=$1

tmux new-session -s $SESSIONNAME \; \
   split-window -h \; \
   setw synchronize-panes \; \
   send-keys 'unset TMUX' C-m \; \
   setw synchronize-panes off \; \
   send-keys 'tmux new-session -s ' $SESSIONNAME-right C-m \; \
   select-pane -t 1 \; \
   send-keys 'tmux new-session -s ' $SESSIONNAME-left C-m \; \
   split-window -v \;

这在脚本“split-window -v \;”的最后一行之前都可以正常工作这适用于外部会话。如何控制此脚本中的嵌套会话?

【问题讨论】:

    标签: bash tmux


    【解决方案1】:

    我没有找到我正在寻找的确切答案,但对我有用的解决方法是首先设置我计划用作嵌套会话的 tmux 会话,然后最后设置外部主机会话并附加从那里到嵌套会话。这是我想出的用于生成原始帖子中描述的环境的脚本:

    SESSIONNAME=$1
    
    # set up right hand side nested session, dont attach to it yet
    tmux new-session -d -s $SESSIONNAME-right \; \
       rename-window remote-work \; \
       split-window -v -p 50 \; \
       setw synchronize-panes \; \
       send-keys 'clear' C-m \; \
       setw synchronize-panes off \;
    
    # set up left hand side nested session, dont attach to it yet
    tmux new-session -d -s $SESSIONNAME-left \; \
       rename-window local-work \; \
       split-window -v -p 50 \; \
       setw synchronize-panes \; \
       send-keys 'clear' C-m \; \
       setw synchronize-panes off \;
    
    # attach and set up host session, and from there attach to nested sessions
    tmux new-session -s $SESSIONNAME \; \
       set status off \; \
       split-window -h -p 50 \; \
       setw synchronize-panes \; \
       send-keys 'unset TMUX' C-m \; \
       setw synchronize-panes off \; \
       select-pane -t 0 \; \
       send-keys 'tmux attach -t ' $SESSIONNAME-left C-m \; \
       select-pane -t 1 \; \
       send-keys 'tmux attach -t ' $SESSIONNAME-right C-m \;
    

    【讨论】:

      猜你喜欢
      • 2014-07-28
      • 1970-01-01
      • 2020-07-10
      • 2014-03-04
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多