Estou escrevendo um roteiro. Eu realmente quero saber disso. Espero que o executável do tmux possa me dizer isso.
eu acho
tmux rename <newname>
pode renomear a sessão atual. Mas não consigo encontrar um comando para buscar seu próprio nome.
Com o tmux 1.2 (e posterior), você pode usar a -p
opção de display-message
enviar uma mensagem para o stdout (em vez de exibi-la para um cliente conectado):
tmux display-message -p '#S'
#S
está formatado como o nome da sessão (consulte a descrição da status-left
opção na página de manual).
Estou surpreso que, após quase 5 anos, ninguém apontou que nenhuma dessas respostas é adequada. Enquanto os dois funcionam bem, desde que o TTY atual esteja anexado à única sessão do tmux no host, essas respostas ficam fracas se:
No primeiro caso, as duas respostas aqui relatam o nome da sessão anexada (independentemente de o tty atual ser governado por essa sessão). Neste último caso, o resultado é provavelmente indeterminado ou resultará em várias respostas.
A pergunta correta deve ser: "Qual é o nome da sessão tmux à qual minha sessão de terminal atual está anexada?"
Para ele responder a essa pergunta, execute:
Isso funciona independentemente do número de sessões tmux (anexadas ou não) e independentemente de a sessão atual do terminal ser ou não parte de uma sessão tmux.
fonte
tmux list-panes -a -F '#{pane_tty} #{session_name}'
para listar os painéis de todas as sessões. Não tenho certeza de quão novo-a
é, então YMMV.TMUX
variável de ambiente antes da execuçãotmux display-message -p '#S'
de uma instalação típica da área de trabalho.Extensão / corrigido resposta de Tim-povos conforme o comentário de don_crissti on Porque é que este
grep -v
não está funcionando como esperado? .Comando "$ (tty)" na resposta dos tim-people
não funcionaria nesse contexto conforme o esperado. Ele avalia como uma string 'não um tty'.
Substituí-lo por uma variável resolve esse problema.
Além disso, quando não existem sessões tmux, o código original produziria
Mensagem de erro "nenhum servidor em execução no / tmp / tmux-1000 / default" .
Adicione
2>/dev/null
e o código seria executado sem imprimir a mensagem de erro.O código modificado é lido como:
fonte
tty
.Em vez disso, achei que isso funcionava corretamente para mim:
fonte
Não é o ideal, mas você pode extrair o nome da sessão anexada com
awk
:O formato personalizado é um pouco mais fácil de analisar do que o padrão.
fonte