Evitar que o painel / janela feche quando o comando for concluído - tmux

26

No meu arquivo tmux.conf , eu o configurei para abrir janelas, nomeá-las, painéis de configuração etc. etc.

No entanto, um problema que tenho é que, se um dos painéis iniciar um comando, digamos ls , o painel se fechará após a conclusão do comando (instantaneamente). Existe alguma maneira de evitar esse comportamento? Ou deixá-lo cair para um shell normal depois que um comando for concluído?

Estou assumindo que preciso iniciar um shell - > execute o comando quando o painel for iniciado, mas serei amaldiçoado se conseguir descobrir como. Eu pesquisei um pouco sobre esse problema, mas não consegui.

    
por Stew 21.07.2011 / 11:41

3 respostas

18

Você tem algumas opções.

  1. Em vez de executar ls em sua janela, execute um shell e, em seguida, envie as combinações de teclas do shell para executar:

    tmux start-server  
    tmux new-session -d -s session  
    tmux new-window -t session:1  
    tmux send-keys -t session:1 ls C-m
    
  2. Você pode almoçar uma sequência de comandos de modo a deixar-se com um shell após seus outros comandos serem executados:

    tmux start-server  
    tmux new-session -d
    tmux new-window 'ls;bash -i'
    
  3. Veja jasonwryan's responda para obter detalhes sobre a opção remain-on-exit para manter os painéis vivos após o processo ter sido encerrado, para que você possa revisar a saída.

  4. Se a saída de algum comando valesse a pena ser vista uma vez, talvez valesse a pena ser atualizada. Se você estiver monitorando a saída de algo, você poderá watch obter periodicamente uma nova saída. Isso deve funcionar bem com os painéis em tmux :

    tmux start-server  
    tmux new-session -d
    tmux new-window 'watch -n 60 ls'
    
por 21.07.2011 / 12:02
11

Você pode usar a opção remain-on-exit :

remain-on-exit [on | off]
A window with this flag set is not destroyed when the program running in it exits. The window may be reactivated with the respawn-window command.

Para simplificar o processo de respawning, convém vinculá-lo a uma chave:

bind-key R respawn-window

Isso garantirá que você não fique com janelas mortas quando os programas saírem.

    
por 21.07.2011 / 12:17
0

Aqui está um exemplo estendido usando o método send-keys recomendado pelo @Caleb

#!/bin/sh
tmux start-server
tmux new-session -d -n 'mywindowname'
tmux send-keys -t mywindowname 'cd notes' Enter 'vim whiteboard/tasks.md' Enter
tmux new-window -d -n 'secondwindowname' # this -d prevents focus from changing to the new window
tmux -2 attach-session -d
    
por 18.04.2018 / 02:18

Tags