Se eu usar
tmux attach
Posso anexar a uma sessão em execução, mas se não houver uma sessão em execução, só recebo o erro
no sessions
Como posso iniciar automaticamente uma nova sessão se não houver nenhuma em execução? algo como
tmux attach-or-create-new-session
Respostas:
A resposta é muito mais simples. Basta colocar isso no seu
~/.tmux.conf
arquivo:Se você executar
tmux attach
e houver uma sessão, ela será anexada a essa sessão (se já estiver anexada ou não). Se ainda não houver uma sessão, ela criará uma para você.fonte
tmux
for invocado sem argumentos, ele criará uma nova sessão e criará uma segunda sessão assim que atingir essa linha no seu~/.tmux.conf
. Você pode ver esse problema executandotmux ls
após criar a primeira sessão. Na prática, depois de colocar isso em seu arquivo, você não pode chamartmux
sem argumentos maisalias tmux="tmux attach"
para evitar este problematmux
.Se nomear sua sessão estiver correto, é fácil usar o
new-session
comando:onde
main
é o nome da sessão que será anexado ou criado, se necessário.De
man tmux
:Observe também que a
-A
opção foi introduzida na versão tmux a1.8
partir de 26 de março de 2013 , para versões anteriores, usetmux attach || tmux
.fonte
alias "tmux-attach-or-create-main-session=tmux new-session -A -s main"
. Obrigado pela dica! Página do manual: openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1tmux: unknown option -- A
Isso parece estar disponível apenas nas versões recentes.[ -z "$TMUX" ] && exec tmux new -As .
é isso que eu uso no meu.bashrc
.Isso iniciará uma nova sessão se o anexo der um erro:
Portanto, um alias fará o trabalho:
fonte
tmux attach
paratmux a
Considere adicionar o seguinte ao seu
.bashrc
Você pode ver meu uso disso no meu arquivo de recursos ZSH no meu repositório do github
fonte
Para expandir a resposta de Wesley Baugh (que foi sessões de aninhamento duplo para mim quando usado no .bashrc em logins) e adicionar um pouco de flexibilidade, já que eu frequentemente uso
sudo -s
em servidores (que carregariam meu .bashrc de forma obediente novamente e aninham-se), aqui está o que tenho no meu .bashrc:Isso verifica uma sessão do tmux e garante que você não seja superusuário antes de criar uma nova sessão ou anexá-la àquela existente nomeada
main
.fonte
Drew Frank respondeu isso aqui: https://superuser.com/questions/487363/tmux-equivalent-of-screen-r
Aqui está o script que agora uso para isso (porém, retornei à tela devido a outro problema no tmux)
/somewhere/on/your/path/ttmux
ou como uma função de shell:As
-2
opções fazem com que o tmux assuma o suporte ao terminal de 256 cores, portanto, esses podem não ser apropriados para sua situação.fonte
Se você estiver usando isso dentro de um arquivo .shrc ou similar,
exec
recomendofonte
Melhorei um pouco a resposta do @SuperMagic. Coloquei esse bloco no topo da minha
.zshrc
fonte