tmux 腳本啟動多個指令

tmux 腳本啟動多個指令

如何在 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.

答案1

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需要執行可選的 shell 命令。detach-client最後的作用顯而易見。

如果您想要水平分割(兩個並排的窗格),請split-window -h在上面的命令中使用。

發送多個tmux命令時,tmux需要用 分隔;。需要透過引用/轉義它( 、或);來保護它免受 shell 的影響,以阻止 shell 將其解釋為命令的結尾。';'";"\;tmux

為了方便閱讀,我將整個內容分成單獨的行。如果您在腳本中執行此操作(我建議),請確保每行的最後一行之後沒有任何內容\

tmux a使用、tmux attach或重新附加到會話tmux attach-session(這些都是等效的)。

tmux一旦兩個指令執行完畢,會話就會結束。

答案2

這對我不起作用(我試圖做類似“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

答案3

要運行一個簡短的命令而不最終退出:

tmux \
    new-session  'ls ; bash' \; \
    split-window 'ls ; bash' 

或者

tmux \
    new-session  'ls ; bash' \; \
    new-window   'ls ; bash' 

相關內容