Làm cách nào để khởi chạy một bộ chương trình bên trong tmux hoặc gnome-terminal trong một tập lệnh?


32

Tôi muốn khởi chạy đồng thời một vài lệnh trong tmux hoặc gnome-terminal hoặc xfterminal, mỗi tab khác nhau với một lệnh duy nhất đang chạy và đóng tab đó khi lệnh đó kết thúc.

Bất kỳ phần mềm nào khác cũng được hoan nghênh

Tôi muốn phát hành một tập lệnh duy nhất để thực hiện công việc, ví dụ XX "cmd1" "cmd2" "cmd3"

Câu trả lời:



27

Mở một phiên tmux và bắt đầu lệnh đầu tiên. Sau đó khởi chạy thêm các lệnh trên các cửa sổ mới và phân bổ đều các kích thước cửa sổ ở cuối.

tmux \
  new-session  "command1 ; read" \; \
  split-window "command2 ; read" \; \
  split-window "command3 ; read" \; \
  split-window "command4 ; read" \; \
  select-layout even-vertical

Lệnh readsau mỗi lệnh làm cho cửa sổ mở sau khi lệnh kết thúc để bạn có thể đọc đầu ra.


2
Câu trả lời này xứng đáng được nhiều phiếu hơn. Cảm ơn người đàn ông.
Lester Cheung

7

Nếu nó luôn có cùng cấu hình chương trình, bạn có thể sử dụng một công cụ như teamocil .

Bạn sẽ cần tạo với một cấu hình (ví dụ ~/.teamocil/sample), có chứa một cái gì đó như:

windows:
  - name: my-first-window
    root: ~/Projects/foo-www
    filters:
      before: "rvm use 1.9.2"
      after: "echo 'I am done initializing this split.'"
    splits:
      - cmd: "git status"
      - cmd: "bundle exec rails server --port 4000"
        width: 50
      - cmd:
          - sudo service memcached start
          - sudo service mongodb start
        height: 50

Và sau đó bạn có thể chạy: tmux new-session -d "teamocil sample" \; attach


6

Với gnome-terminalnó sẽ là:

gnome-terminal --window -e 'cmd1' --tab -e 'cmd2' --tab -e 'cmd3'

Mỗi tab sẽ được đóng lại sau khi lệnh của nó kết thúc.


tuyệt vời là tốt, nhưng tôi thích tmux lần này ;-P
daisy
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.