Skrypt tmux, aby uruchomić kilka poleceń

21

Jak mogę napisać poniższe w skrypcie 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.
GTS Joe
źródło

Odpowiedzi:

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

new-sessionKomenda (która tworzy nową tmuxsesję) i split-windowkomenda (która dzieli bieżącego okna na dwa panele) w tmuxtrwa opcjonalnych poleceń powłoki do uruchomienia. detach-clientRobi to oczywiste na końcu.

Jeśli chcesz podzielić poziomo (dwa panele obok siebie), użyj split-window -hpowyższego polecenia.

Wysyłając wiele tmuxpoleceń tmux, musisz je rozdzielić ;. W ;musi być chroniony od zbiornika przytoczyć / ucieczki (to ';', ";"czy \;), aby przerwać powłokę interpretacji jako koniec tmuxpolecenia.

Podzieliłem to wszystko na osobne linie dla czytelności. Jeśli robisz to w skrypcie (który polecam), upewnij się, że po finale \w każdym wierszu nie ma nic .

Dołącz ponownie do sesji za pomocą tmux a, tmux attachlub tmux attach-session(wszystkie są równoważne).

tmuxSesja zakończy raz oba polecenia zakończeniu wykonywania.

Kusalananda
źródło
3

Nie działało to dla mnie (próbowałem zrobić coś takiego jak „ls -la”). Co to było:

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

To pozwoliło mi uruchomić dość ogólne rzeczy i chociaż wygląda brzydko, jest całkiem funkcjonalne.

Zostawiam to tutaj, na wypadek, gdyby inni szukali tego samego.

Źródło: https://gist.github.com/kizzx2/4739236

użytkownik27221
źródło