tmux 相当于“screen -R”吗?

tmux 相当于“screen -R”吗?

tmux attach命令的作用更像是screen -r和的组合screen -x——首先,它尝试附加到最近的分离的会话,然后如果没有可用的会话,它将附加到当前附加的会话。我想模拟以下行为screen -R:首先尝试附加到分离的会话,然后如果没有分离的会话,则启动新会话。在 tmux 中实现此目的的最佳方法是什么?

答案1

在咨询了 IRC 的专家后,我确信没有任何一个 tmux 命令具有这种行为。幸运的是,使用 shell 模拟起来相当容易:

(tmux ls | grep -vq attached && tmux at) || tmux

答案2

尽管 tmux 手册中说:

             The target-session rules for attach-session are slightly
         adjusted: if tmux needs to select the most recently used session,
         it will prefer the most recently used unattached session.

在以下情况下,Drew 的答案将无法正常工作:

0: 1 windows (created Wed Nov  7 23:51:08 2012) [177x47]
1: 1 windows (created Wed Nov  7 23:51:33 2012) [177x47] (attached)

tmux at将附加到最后一个会话 (#1)(即使此会话仍附加到其他地方)。这破坏了运行多个 tmux 会话并仅附加到分离会话的整个想法(使用 mosh + tmux + iterm2 创建完美的漫游终端)。

另一种方法是手动选择一个非附加会话:

tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`

答案3

我倾向于一次只进行两个 tmux 会话,因此我在每个终端窗口中都执行类似这样的操作。

终端窗口 0:

tmux attach -t 0 || tmux new

终端窗口 1:

tmux attach -t 1 || tmux new

答案4

关于什么

tmux attach || tmux new

~/.tmux.conf或者如果文件不存在则创建它,然后添加

new-session

对其进行设置,以便在运行时如果没有会话,则会创建一个新的会话tmux attach

tmux为 创建一个别名可能也会很方便tmux attach

相关内容