如何在 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
這使我能夠運行非常通用的東西,雖然它看起來很醜,但它非常實用。
把它留在這裡,以防其他人正在尋找同樣的東西。
答案3
要運行一個簡短的命令而不最終退出:
tmux \
new-session 'ls ; bash' \; \
split-window 'ls ; bash'
或者
tmux \
new-session 'ls ; bash' \; \
new-window 'ls ; bash'