tmux script per avviare diversi comandi


21

Come posso scrivere quanto segue in uno 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.

Risposte:


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

Il new-sessioncomando (che crea una nuova tmuxsessione) e il split-windowcomando (che divide la finestra corrente in due riquadri) tmuxrichiede l'esecuzione di comandi shell opzionali. Alla fine detach-clientfa l'ovvio.

Se si desidera una divisione orizzontale (due riquadri affiancati), utilizzare split-window -hnel comando sopra.

Quando si inviano più tmuxcomandi tmuxè necessario separarli per ;. I ;deve essere protetto dal guscio citando / scampo ( ';', ";"o\; ), per arrestare la shell di interpretare come la fine del tmuxcomando.

Ho diviso il tutto in righe separate per leggibilità. Se lo fai in uno script (che raccomando), assicurati che non ci sia nulla dopo la finale\ su ogni riga.

Riattaccare alla sessione con tmux a,tmux attach o tmux attach-session(questi sono tutti equivalenti).

La tmuxsessione terminerà al termine dell'esecuzione di entrambi i comandi.


3

Questo non ha funzionato per me (stavo cercando di fare qualcosa come "ls -la"). Quello che ha fatto è stato:

tmux new-session -d bash
tmux split-window -h bash
#sends keys to first and second terminals
tmux send -t 0:0.0 "<my-first-command>" C-m
tmux send -t 0:0.1 "<my-second-command>" C-m
tmux -2 attach-session -d

Questo mi ha permesso di eseguire roba piuttosto generica e sebbene sembri brutta, è abbastanza funzionale.

Lasciandolo qui nel caso in cui altre persone stiano cercando la stessa cosa.

Fonte: https://gist.github.com/kizzx2/4739236

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.