是否有相当于“screen -D -R”的 tmux

是否有相当于“screen -D -R”的 tmux

我想知道是否有一种方法tmux可以像screen -D -R我所说的那样,将该命令作为 Putty 中的默认命令。

这些screen开关将强制分离我的用户的现有屏幕会话(即使它仍然处于活动状态并在其他地方登录)并将其重新附加到当前会话。此外,如果不存在屏幕会话,它将创建一个新的屏幕会话。

我喜欢 tmux,并且可以在屏幕上看到明显的好处,但此功能的存在将真正敲定交易。

tmux attach如果没有的话,似乎不会创建一个新会话。

tmux 的手册页显示:

如果没有启动服务器,attach-session(attach)会尝试启动它; 除非在配置文件中创建会话,否则这将失败。

粗体部分是什么意思? (我找不到在conf文件中创建会话的示例)。

答案1

是的:tmux attach -d || tmux new

-d有必要表现得像 screen -D,即,分离其他人。

通过 ssh 连接,然后附加或创建可能类似于:

$ cat bin/stmux
#!/bin/sh
exec ssh -t "$@" 'tmux attach -d || tmux new'

$ stmux my.remote.box

答案2

tmux attach在没有会话时创建一个新会话,请使用new-sessiontmux 配置文件中的选项。如果文件~/.tmux.conf不存在则创建,并添加

new-session

到它。另外,我别名tmuxtmux attach:)

答案3

您可以使用 shell 函数来模拟它,这应该适用于任何兼容 POSIX 的 shell:

tmux() {
    if [ "$#" -ge 1 ] && [ "$1" = -z ]; then
        shift
        command tmux detach 2>/dev/null
        command tmux attach "$@" || command tmux new-session "$@"
    else
        command tmux "$@"
    fi
}

现在,如果您将其启动为tmux -z,它应该执行您正在寻找的操作。

答案4

我发现这在 .bashrc 上最适合我

if [[ -z $TMUX ]]; then
  tmux attach-session || tmux new-session
fi

相关内容