我想知道是否有一种方法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-session
tmux 配置文件中的选项。如果文件~/.tmux.conf
不存在则创建,并添加
new-session
到它。另外,我别名tmux
为tmux 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