script tmux para iniciar vários comandos

13

Como posso escrever o seguinte em um script bash?

tmux # Start tmux session.
compass watch /path/to/project1/compass/ # Run the first process.
Ctrl + B, " # Split the pane.
compass watch /path/to/project2/compass/ # Run the second process.
Ctrl + B, D # Exit the session.
    
por GTS Joe 26.06.2016 / 02:05

1 resposta

15

tmux \
    new-session  'compass watch /path/to/project1/compass/' \; \
    split-window 'compass watch /path/to/project2/compass/' \; \
    detach-client

O comando new-session (que cria uma nova sessão tmux ) e o comando split-window (que divide a janela atual em dois painéis) em tmux usam comandos shell opcionais para serem executados. O detach-client faz o óbvio no final.

Ao enviar vários comandos tmux para tmux , você precisa separá-los por ; . O ; precisa ser protegido do shell, citando / escapando ( ';' , ";" ou \; ), para impedir que o shell o interprete como o final do comando tmux .

Eu dividi a coisa toda em linhas separadas para facilitar a leitura. Se você fizer isso em um script (o que eu recomendo), verifique se não há nada após o \ final em cada linha.

Reconecte-se à sessão com tmux a , tmux attach ou tmux attach-session (todos são equivalentes).

A sessão tmux terminará assim que os dois comandos terminarem a execução.

    
por 26.06.2016 / 08:16