tmux скрипт для запуску декількох команд


21

Як я можу записати наступне в баш-скрипті?

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.

Відповіді:


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

new-sessionКоманда (яка створює нову tmuxсесію) і split-windowкоманда (яка розбиває поточне вікно на дві панелі) в tmuxдодаткові команди оболонки для запуску. Це detach-clientочевидно в кінці.

Якщо ви хочете горизонтальний розкол (дві панелі поруч), скористайтеся split-window -hкомандою вище.

При надсиланні декількох tmuxкоманд tmuxвам потрібно розділити їх на ;. Ці ;потреби повинні бути захищені від оболонки процитувати / уникнути його ( ';', ";"або \;), щоб зупинити оболонку інтерпретувати його як кінець tmuxкоманди.

Я розділив цілу річ на окремі рядки для читабельності. Якщо ви робите це в сценарії (який я рекомендую), переконайтеся, що після остаточного \в кожному рядку нічого немає .

Повторно приєднайте до сеансу за допомогою tmux a, tmux attachабо tmux attach-session(всі вони еквівалентні).

tmuxСеанс закінчиться , як тільки обидві команди закінчили виконання.


3

Для мене це не вийшло (я намагався зробити щось на кшталт 'ls -la'). Що було:

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

Це дозволило мені запустити досить загальні речі, і хоча це виглядає некрасиво, він є досить функціональним.

Просто залиште його тут, якщо інші люди шукають те саме.

Джерело: https://gist.github.com/kizzx2/4739236

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.