Answers:
答案要简单得多。只需将其放在您的~/.tmux.conf
文件中:
# if run as "tmux attach", create a session if one does not already exist
new-session -n $HOST
如果您运行tmux attach
并且有一个会话,则它将附加到该会话(无论是否已附加)。如果还没有会话,它将为您创建一个会话。
tmux
在不带参数的情况下调用它,它将创建一个新会话,然后在到达您的这一行时立即创建第二个会话~/.tmux.conf
。您可以通过tmux ls
在创建第一个会话后执行来查看此问题。实际上,将其放入文件中后,您将无法再不tmux
带任何参数调用
alias tmux="tmux attach"
以防止出现此问题
tmux
。
如果可以命名您的会话,那么使用以下new-session
命令很容易:
tmux new-session -A -s main
main
如果需要,将在何处附加或创建会话名称。
来自man tmux
:
该
-A
标志使new-session
行为类似attach-session
,如果会话的名称已经存在; 在这种情况下,-D
行为就像-d
到attach-session
。
另请注意,此-A
选项自2013年3月26日起在tmux版本中1.8
引入,对于早期版本,请使用tmux attach || tmux
。
alias "tmux-attach-or-create-main-session=tmux new-session -A -s main"
。谢谢你的提示!手册页:openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1
tmux: unknown option -- A
这似乎仅在最新版本中可用。
[ -z "$TMUX" ] && exec tmux new -As .
这就是我用在我的.bashrc
。
如果attach出现错误,这将启动一个新会话:
tmux attach || tmux new
因此,别名将完成这项工作:
tm="tmux attach || tmux new"
tmux attach
了tmux a
考虑将以下内容添加到您的 .bashrc
if [ -z "$TMUX" ]; then
base_session='my_session'
# Create a new session if it doesn't exist
tmux has-session -t $base_session || tmux new-session -d -s $base_session
# Are there any clients connected already?
client_cnt=$(tmux list-clients | wc -l)
if [ $client_cnt -ge 1 ]; then
session_name=$base_session"-"$client_cnt
tmux new-session -d -t $base_session -s $session_name
tmux -2 attach-session -t $session_name \; set-option destroy-unattached
else
tmux -2 attach-session -t $base_session
fi
fi
您可以在我的github存储库的 ZSH资源文件中看到我对此的使用
Drew Frank在这里回答了这个问题:https : //superuser.com/questions/487363/tmux-equivalent-of-screen-r
这是我现在用于此的脚本(尽管由于tmux的另一个问题,我已切换回屏幕)/somewhere/on/your/path/ttmux
或作为shell函数:
#!/bin/sh
# many thanks to Drew Frank: https://superuser.com/questions/487363/tmux-equivalent-of-screen-r
(tmux ls | grep -vq attached && tmux -2 at) || tmux -2
这些-2
选项使tmux假定支持256色终端,因此这些可能不适用于您的情况。
如果您在.shrc文件或类似文件中使用此文件,exec
我建议您
if tmux ls
exec tmux attach
else
exec tmux
fi