我试图找出如何将至 tmux session 如果一个名为tmux届会议存在,如果不是我想创建一个新的名字。

目前,我知道一些 tmux 命令可以部分实现什么我找的,但不清楚如何将它们结合在一起,以得到什么,我在寻找:

  • tmux attach 重视的一个自动的现有会议,但错误,如果不会存在
  • tmux new 创建一个新的会议,但它这样做的每一时间,所以我不能离开我 .tmux.conf
  • tmux has-session 测试是否一届会议存在的-但是我不知道怎么缝在一起,与其他命令

因此,我想创建一个tmux脚本,这样,这会自动发生,而不必手动创建它每次我需要登录到会议。

我怎么可以写一个自动脚本,以便创造一个新的tmux届会议(如果鉴于会议的名称不存在)或将来的一届会议的名称(如果存在)?

有帮助吗?

解决方案

或者,你也可以加入

new-session

你的 .tmux.conf -将建立一个默认会议在服务器开始。

然后 tmux attach 无论附于本届会议(服务器运行,这是),或者创建一个新的会议(开始发服务器、读配置文件,问题的 new-session 命令)并附上。

其他提示

我想通了(并已向我指出).

tmux attach || tmux new

如指出的评论意见 Petr Viktorin, jkoelkerpjincz, 你可以使用以下命令附上来 mySession 如果存在,并创建它,如果它不:

 tmux new -A -s mySession

man tmux:

new-session[-AdDEP] [-cstart-directory] [-Fformat] [-nwindow-name] [-ssession-name] [-tgroup-name] [-xwidth] [-yheight] [shell-command]

(别名: new)

创建一个新的会议名称 session-name.

[...]

-A 标志使得 new-session 表现得像 attach-session 如果 session-name 已经存在;在这种情况下, -D 就像 -dattach-session.

new-session 支持 -A 由于tmux-1.8.

虽然我找到rampion的答案是足够的使用1届会议,这个脚本可以让你安装的多个会议:

SESSIONS="work play"

function has-session {
    tmux has-session -t $1 2>/dev/null
}

function except 
{
    if [ "$?" -eq 1 ] ; then
        $1
    fi
}

# Configure your sessions here
function session-work
{
    tmux new-session -d -s work
    tmux neww -k -t work:1
}

function session-play
{
    tmux new-session -d -s play
    tmux neww -k -t play:1
}

#
#MAIN 
for x in $SESSIONS
do
    echo $x
    has-session $x
    except session-$x
done

注:

-k  --> new-window will not be created if already exists
-d  --> start session or window, but don't attach to it yet
-s  --> name the session
-t  --> specify a target location in the form session:window.pane 

适应阿历克斯的建议,包括基于项目的配置在启动时,我开始使用如下:

# ~/bin/tmux-myproject shell script
# The Project name is also used as a session name (usually shorter)
PROJECT_NAME="myproject"
PROJECT_DIR="~/myproject"

tmux has-session -t $PROJECT_NAME 2>/dev/null
if [ "$?" -eq 1 ] ; then
    echo "No Session found.  Creating and configuring."
    pushd $PROJECT_DIR
    tmux new-session -d -s $PROJECT_NAME
    tmux source-file ~/bin/tmux-${PROJECT_NAME}.conf
    popd
else
    echo "Session found.  Connecting."
fi
tmux attach-session -t $PROJECT_NAME

哪里 tmux-myproject.conf 是我启动一系列tmux命令来建立我的窗和窗,以及开始我的编辑。

我用的别名,以创建一个新的会议,如果需要,并附有我的默认会议如果已经存在:

alias tmuxre='tmux new-session -t default || tmux new-session -s default'

我加入这个给我。登录在我的服务器。

我之所以这样做是因为我不想重视同实际的会议,我想要一个新的会议使用同一集团的窗口。

这也是类似于 screen -xRR.

对于那些想做同样的事情 fish:

tmux attach -t mysesh; or tmux new -s mysesh
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top