Como capturar o nome da sessão na variável tmux?

4

Eu quero executar um comando externo com base no valor do nome da minha sessão. Eu sei que o :display-message '#S' vai me dar o nome da sessão, mas eu quero que esse nome seja enviado automaticamente para o meu comando externo.

Eu tentei :run-shell "my-command #S" , mas isso não funciona, já que "#S" não é substituído.

Existe algo como :MY_VAR=$(display-message -p "#S") que eu poderia usar?

    
por src 07.08.2012 / 20:03

3 respostas

1

Como você pode executar quase todos os comandos tmux diretamente de um shell (não apenas de um prompt tmux : ), você pode fazer isso:

:run-shell "my-command \"$(tmux display -p '#S')\""

Claro que isso também pode ser feito a partir de uma ligação:

:bind C run-shell "my-command \"$(tmux display -p '#S')\""
    
por 08.08.2012 / 07:22
1

Se você estiver executando o tmux 1.8 (você pode verificar com tmux -V ), você pode simplesmente usar :run-shell "my-command '#S'" . Isso não funciona no 1.6, no entanto.

    
por 15.07.2014 / 00:07
0

Você poderia usar sed + xargs para passar o resultado como um parâmetro para o comando desejado, por exemplo:

tmux bind-key "C" run-shell "tmux display-message -p '#{S}' | sed 's/.*/\"&\"/' | xargs my_command"
    
por 31.07.2015 / 05:35