Bir betik içerisinde tmux veya gnome-terminal içinde bir program dizisi nasıl başlatılır?


32

Tmux veya gnome-terminal veya xfterminal'de aynı anda birkaç komut çalıştırmak, tek bir komutla çalışan her farklı sekme ve bu komut bittiğinde bu sekmeyi kapatmak istedim.

Başka bir yazılım da karşılandı

İşi yapmak için tek bir senaryo yayınlamak istedim, örneğin XX "cmd1" "cmd2" "cmd3"

Yanıtlar:



27

Bir tmux oturumu açın ve ilk komutu başlatın. Ardından yeni pencerelerde daha fazla komut başlatın ve sonunda pencere boyutlarını eşit olarak dağıtın.

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

readHer komutun ardından komut çıktıyı okuyabileceği şekilde bittikten sonra pencere açık kalmaya neden olur.


2
Bu cevap daha fazla oyu hak ediyor. Teşekkürler dostum.
Lester Cheung,

7

Her zaman programların yapılandırması aynıysa, teamocil gibi bir araç kullanabilirsiniz .

Gibi bir ~/.teamocil/sampleşey içeren bir yapılandırma (örneğin ) ile oluşturmanız gerekir :

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

Ve sonra koşabilirsiniz: tmux new-session -d "teamocil sample" \; attach


6

Bununla gnome-terminalolacaktı:

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

Her sekme komutu tamamlandıktan sonra kapanacak.


de harika ama bu sefer tmux'u tercih ediyorum ;-P
daisy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.