Ortalığı temizlemek için iki komut dizisine ihtiyacınız var:
İlk önce, bunu bozuk pencerede çalıştırın (bu, bulunduğunuz zaman bile çalışır ssh
):
stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
Sonra çalışan bilgisayarda tmux
(içinde ve dışında çalışır tmux
) çalıştırın:
Aşağıdaki komut tmux
, geçerli pencereden daha solunun durumunu değiştirebilecek tüm örnekleri etkiler . Bu özelliğe ihtiyacınız yoksa, uzak bırakın.
tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Ayrıntılı olarak açıklanmıştır
Bu, diğer cevaplarda ve yorumlarda bulunan tüm parçaları ele almak için toplandı. Şu anda ikinci komutla yalnızca küçük bir bit kaldı. (Aşağıdaki "eksik bit" konusuna bakın).
Bunun nasıl çalıştığını anlamak için, önce durum çizgisini tmux
ve onun sonunu keselim tty
. Daha sonra, daima mevcut olması gereken bir yöntem kullanarak (komutun aksine reset
) tekrar düzeltiyoruz .
Bir tmux
terminal nasıl UTF-8
kullanılmaz hale getirilir (varsayılır )
stty -echo; printf '\016\033k%2000s\\\033\033]2;\355\007' $'\302\217'
Uyarı: Yukarıdaki komutu çalıştırdıktan sonra, kabuk kör ve sağır görünüyor ve sadece bilinmeyen yabancı bir dilde saçma konuşuyor gibi görünüyor. Bunun nasıl onarılacağı hakkında aşağıya bakın.
Açıklaması:
stty -echo
terminal tipi cevabını öldürür
printf '\016'
a SO
ise, alternatif karakter setindesiniz
printf '\033]2;%s\007' 'right status text'
bu durumda doğru durumu belirler $'\355
', bu bir sunum hatasını ortaya çıkarır
printf '\033k%2000s\033\\' $'\302\217'
pencere başlığını belirler
Bu, bazı etkileşimli komutların çöktükten ve kabuğun içine geri düştükten sonra terminalde görebileceğiniz kombinasyon olabilir. ( IMHO'yu /bin/cat
provoke edemezsiniz stty -echo
, ancak vim
genellikle bunu ayarlamak gibi etkileşimli komutlar .)
Şimdi bu pisliği temizle
stty sane; printf '\033k%s\033\\\033]2;%s\007' "$(basename "$SHELL")" "$(uname -n)"; tput reset; tmux refresh
Not: Kopyala ve yapıştır özelliğini kullanırsanız (yapıştırırken büyük olasılıkla basılı tutmanız gerekir Shift
), yukarıdaki komutu kullandıysanız, mesajınızı karıştırmak için muhtemelen yapıştırınızı göremezsiniz tty
. Bu nedenle, sadece yapıştırdıktan sonra Enter tuşuna kör bir şekilde basın.
Açıklaması:
stty sane
"aklı başında" terminal parametrelerini ayarlar, böylece yazarken yankınızı geri alırsınız
printf '\033k%s\033\\' "$(basename "$SHELL")"
pencere başlığını normale döndürür. tmux rename-window "$(basename "$SHELL")"
Alternatif olarak kullanabilirsiniz , ancak kaçış dizisinin her zaman çalıştığı yerle tmux rename-window
sınırlıdır tmux
.
printf '\033]2;%s\007' "$(uname -n)"
varsayılan olarak gösterilmek üzere statü hakkını sıfırlar. (Kullanmamanız gerektiğine dikkat edin tmux set status-right "something"
, çünkü pane title
bozuk olanı status-right
çıkarır , bu nedenle bazı sunum hatalarını gösterir. Ayrıca tmux
, bölme başlığını doğrudan ayarlamak için bir komut bulamadığımı da unutmayın .)
tput reset
Sadece bu karışıklık durumunda terminali sıfırlar
tmux refresh
ortaya çıkmış olabilecek diğer döküntülerden kurtulmak için ekranı yeniler.
Eksik bit
printf '\033k%s\033\\' "$(basename "$SHELL")"
Standart yeteneğini kaybeder tmux
sol durum alanında geçerli komutu sunmak. Yürütüldükten sonra printf '\033k%s\033\\' "something"
bu yetenek kayboldu ve daha önce olduğu gibi nasıl geri getirileceğini henüz iyi bir yol bulmadım.
Ancak, aşağıdaki açıklamalarda belirtildiği tmux
gibi, aşağıdaki tmux
ayarlarla değiştirme gibi benzer bir özelliği etkinleştirebilirsiniz :
set-window-option automatic-rename on
Bunu tmux
, geçerli pencerede "Escape" :
("Kaçış" tmux
komut anahtarınızdır) ile ulaşılabilen komut satırında yapın ve sonra komutu girin.
Veya tmux set-window-option automatic-rename on
mevcut terminalinizde mazeret var , ancak doğrudan doğru kabuk seviyesinde değilseniz, örneğin sudo
veya içerisinde çalışmazsa bu başarısız olur ssh
.
Veya geçerli tmux
oturumda başka bir pencere açın ve aşağıdaki komutu uygulayın:
for a in `tmux list-windows | sed 's/:.*//'; do tmux set-window-option -t "$a" automatic-rename on; done`
Veya çalışan tmux
ve aşağıdaki komutu çalıştıran bilgisayara başka bir kabuk açın (bu tmux'un dışındadır):
tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Not: Bu çözümü bir araya getirmeye yardımcı olan herkese teşekkürler.