kịch bản tmux để khởi chạy một số lệnh


21

Làm thế nào tôi có thể viết như sau trong một tập lệnh 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.

Câu trả lời:


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

Các new-sessionlệnh (mà tạo ra một mới tmuxphiên) và split-windowlệnh (mà chia cửa sổ hiện hành thành hai panes) trong tmuxdiễn các lệnh shell tùy chọn để chạy. Điều detach-clientkhông rõ ràng ở cuối.

Nếu bạn muốn phân chia theo chiều ngang (hai tấm cạnh nhau), hãy sử dụng split-window -hlệnh trên.

Khi gửi nhiều tmuxlệnh cho tmuxbạn cần tách chúng ra ;. Các ;nhu cầu cần được bảo vệ khỏi shell bằng cách trích dẫn / thoát khỏi nó ( ';', ";"hoặc \;), để ngăn shell giải thích nó như là kết thúc của tmuxlệnh.

Tôi đã chia toàn bộ thành các dòng riêng biệt để dễ đọc. Nếu bạn làm điều này trong một kịch bản (mà tôi khuyên dùng), hãy đảm bảo không có gì sau trận chung kết \trên mỗi dòng.

Lắp lại với phiên với tmux a, tmux attachhoặc tmux attach-session(đây là tất cả tương đương).

Các tmuxphiên sẽ kết thúc khi cả hai lệnh đã hoàn tất thi công.


3

Điều này không hiệu quả với tôi (tôi đã cố gắng làm một cái gì đó như 'ls -la'). Những gì đã làm là:

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

Điều này cho phép tôi chạy các công cụ khá chung chung và mặc dù nó trông xấu, nhưng nó khá chức năng.

Chỉ cần để nó ở đây trong trường hợp những người khác đang tìm kiếm điều tương tự.

Nguồn: https://gist.github.com/kizzx2/4739236

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.