如何重新加入现有的 tmux 会话 - 但如果我没有正在运行的会话,请创建一个新的会话

如何重新加入现有的 tmux 会话 - 但如果我没有正在运行的会话,请创建一个新的会话

我经常使用 tmux,尤其是在通过 SSH 连接到远程服务器上。我只需运行 即可启动新的 tmux 会话tmux,并且可以使用 重新连接到现有会话tmux a。但是,如果我运行tmux a,而我还没有正在运行的会话,它只会显示以下内容:

$ tmux a
no sessions

这很有道理,因为我没有运行一个。有没有办法检测会话是否正在运行,如果已经有一个会话正在运行,则连接到它,但如果没有不是一个正在运行,开始一个新的?

不同于这个问题,我不关心会话名称,因为我不使用它们

答案1

略有不同且更简短的解决方案:运行tmux ls- 如果输出为空,则创建一个新会话 - 如果没有附加。

$ if [[ -z $(tmux ls) ]]; then tmux; else tmux a; fi

此外,也许这更合乎逻辑且更容易理解,因为您不必考虑错误重定向和退出代码。

答案2

一种可能性是尝试重新连接到现有会话,如果失败(可能是由于没有会话),则启动一个新会话:

$ tmux a > /dev/null 2>&1; if [[ "$?" == "1" ]]; then tmux; fi

> /dev/null 2>&1隐藏的no sessions消息"$?"是退出代码,我们检查它来确定是否需要启动一个新的)

虽然有点长,但这个方法似乎可行。也许有更好/更短的方法?

相关内容