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 tmuxve onun sonunu keselim tty. Daha sonra, daima mevcut olması gereken bir yöntem kullanarak (komutun aksine reset) tekrar düzeltiyoruz .
Bir tmuxterminal nasıl UTF-8kullanı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 SOise, 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/catprovoke edemezsiniz stty -echo, ancak vimgenellikle 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-windowsı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 titlebozuk 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 tmuxsol 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 tmuxgibi, aşağıdaki tmuxayarlarla değiştirme gibi benzer bir özelliği etkinleştirebilirsiniz :
set-window-option automatic-rename on
Bunu tmux, geçerli pencerede "Escape" :("Kaçış" tmuxkomut anahtarınızdır) ile ulaşılabilen komut satırında yapın ve sonra komutu girin.
Veya tmux set-window-option automatic-rename onmevcut terminalinizde mazeret var , ancak doğrudan doğru kabuk seviyesinde değilseniz, örneğin sudoveya içerisinde çalışmazsa bu başarısız olur ssh.
Veya geçerli tmuxoturumda 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 tmuxve 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.