Tmux kullanarak yeni bir pencereyi bölme ve bu yeni pencerede komut çalıştırma nasıl yapılır?


28

denedim

tmux -c "shell command" split-window

ama işe yaramadı.

Kullanarak tmux split-window, yeni bir pencere ayrılabilir.

GÜNCELLEME :

Kullanarak tmux split-window 'exec ping g.cn'ping komutunu çalıştırabilirsiniz, ancak durduğunda yeni pencere kapanacaktır.


4
man tmux | less -p remain-on-exit...
jasonwryan

Yanıtlar:


38

kullanın:

tmux split-window "shell command"

split-windowKomut sözdizimi aşağıdaki gibidir:

 split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t
         target-pane] [shell-command] [-F format]

( man tmux"Windows ve Bölmeler" bölümünden). Komut gelmek zorunda - Not sırası önemli olduğunu sonra görünen o önceki seçeneklerinden herhangi ve bunu boşluklar varsa bunu alıntı yapmak gerek bu yüzden, tek bir argüman olmalıdır.


Bunun gibi ping -chızlı bir şekilde sonlanan komutlar için remain-on-exitönce seçeneği ayarlayabilirsiniz :

tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'

Bölme pingbittikten sonra açık kalacaktır , ancak siz elle kapatana kadar "ölü" olarak işaretlenecektir.

Genel seçenekleri değiştirmek istemiyorsanız, başka bir yaklaşım daha var. Komut ile çalıştırılır sh -cve sonunda pencerenin hayatta kalmasını sağlamak için bundan yararlanabilirsiniz:

tmux split-window 'ping -c 3 127.0.0.1 ; read'

Burada readana komut bittikten sonra kullanıcı girişi yeni bir satır beklemek için shell komutunu kullanırsınız. Bu durumda, komut çıkışı Enterbölmede bastığınıza kadar kalır ve ardından otomatik olarak kapanır.


Teşekkürler Michawl Homer :-). Ben de şimdi buldum. Peki yeni pencereyi kapalı tutmak nasıl?
atupal

@atupal: Bkz: edit - ayarlanmış remain-on-exitveya kullanılmış cmd ; read.
Michael Homer,

2

bash --rcfile

Bu teknik yeni bir kabuk açar, komutları çalıştırır ve komutlar bittikten sonra sizi orada bırakır:

tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'

Veya komutun ;sadece aşağıdaki gibi özel terminal karakterleri yoksa :

tmux-split-cmd ping google.com

Bu kullanır:

Başka bir ilginç değişken:

tmux-split-cmd-uniq() (
  if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
    tmux kill-pane -t 1
  fi
  tms "$@"
)

Zaten varsa önceki bölmeyi öldürür ve her zaman yalnızca bir ekstra bölme tutmaya yardımcı olur.

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.