Create new tmux session from inside a tmux session

前端 未结 6 838
挽巷
挽巷 2021-01-29 20:02

I\'m writing a shell script that creates / attaches or switches to a given session, depending on whether one is inside tmux and the session exists.

I\'ve got everything

6条回答
  •  野性不改
    2021-01-29 20:30

    How to create the script

    This script will check if a session exists. If session does not exist create new session and attach to it. If session does exist nothing happens and we attach to that session. Feel free to replace `~/development' with project name.

    $ touch ~/development && chmod +x ~/development

    # ~/development
    
    tmux has-session -t development
    if [ $? != 0 ]
    then
      tmux new-session -s development
    fi
    tmux attach -t development  
    

    New session from terminal

    Let's create two detached sessions, list them, attach to one and then from within tmux cycle through sessions.

    tmux new -s name -d works from inside tmux because we're creating a new detached session. Otherwise you'll get a nesting error.

    $ tmux new -s development -d
    $ tmux new -s foo -d
    $ tmux ls
    > development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
    > foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
    $ tmux attach -t
    $ tmux ls
    > development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
    > foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
    

    New session from within tmux

    We are now inside or better known as attached to our target session. If we try to create a new session while attached it will result in a nesting error.

    $ tmux new -s bar
    > sessions should be nested with care, unset $TMUX to force
    

    To solve this we create a new detached session. e.g.,

    $ tmux new -s bar -d
    $ tmux ls
    > development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
    > foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
    > bar: 1 windows (created Wed Jan 13 17:19:35 2016) [204x54]
    

    Cycle (switch) Sessions

    • Prefix ( previous session
    • Prefix ) next session

    note: Prefix is Ctrl-bby default. You can bind Prefix to Ctrl-a and in Mac OSX you can change Caps Lock to ctrl system preferences > keyboard > modifier keys

    Attach to a session using command mode while inside tmux

    Trying to attach to a session without detaching will result in an error.

    $ tmux attach -t development
    > sessions should be nested with care, unset $TMUX to force
    

    Instead use command mode Prefix : then type attach -t session_name and hit enter.

提交回复
热议问题