Terminal ekranının dağılması sorunu nasıl çözülür? (genellikle yeniden boyutlandırma sonrasında)


75

Bazen bir terminal ekranı man lskarışır ve man sayfalarını okumak için kullandığımızda ya da tarihteki önceki komutlara gitmek için YUKARI okuna bastığımızda, ekran karakterleri doğru yer olarak göstermez. (örneğin, ekranın sonuna ekranın ortasındakiler gibi davranın).

Komut resetdenendi ve işe yaramadı. İşe yarayan bir yol, pencereyi kapatıp kapatmak, önce pencereyi yeniden boyutlandırmak ve sonra yapmak ssh(veya bu sekmeyi kapatıp pencereyi yeniden boyutlandırmak ve ardından yeni bir kabuk almak için yeni bir sekme açmak).

Ancak bu şekilde, daha önce yaptığımız herhangi bir şeyi, sanal bir makine konsolunu başlatmak vb. Gibi kaybedeceğiz. Öyleyse kabuğu kapatmazsak, bu sorunu çözmenin bir yolu var mı?

(Bu daha önce Fedora'nın içinde ve ayrıca bir Macbook sshiçin bir RHEL 5.4 kutusunda yaşandı ).

Güncelleme: Şimdi Fedora'da nasıl olduğunu hatırlıyorum: Bir Terminal açtım ve bir Sanal Makine konsolunu kullanmak için bir FreeVM yaptım (bir kabuk). Sanırım 80 x 25 boyutundaydı ve bir süre sonra Terminal'i yaklaşık olarak 130 x 50 boyutuna getirdim ve sonra "iç kabuk" (VM) tuhaf davranmaya başladı.


Hangi terminal emülatörünü kullanıyorsunuz? resetSorunu çözmezse kırılmış sesler .
jordanm

Fedora içindeki Terminal programı ne olursa olsun ... ve Mac OS X Lion'daki varsayılan Terminal programı.
kutup

Lütfen Fedora
nopole'da

3
Büyülü büyü olduğu ^Jreset^Jyerlerde, ^Jpresleme demektir ctrl-J. Veya (grafik terminallerde) Resetdüğmesini deneyebilirsiniz . Ayrıca, bazı programlar altlarında değişen terminal boyutları için hazır değildir (evet, eski yazılımlar canlanır ve tekme atıyor) ya da terminal çok küçük olduğunda kötü bir şekilde yaramazlık yapıyor.
von

1
Sorunlarım bash isteminin uzunluğunu yanlış hesaplamaktan kaynaklandı, çünkü içinde renk kodları vardı; Kaçış karakterlerini özlüyordum
qneill

Yanıtlar:


93

Bash kullanıyorsanız, oturumunuzu kullanarak "checkwinsize" seçeneğinin etkin olup olmadığını kontrol edin.

shopt | grep checkwinsize

Eğer alamazsan

checkwinsize    on

sonra ile etkinleştir

shopt -s checkwinsize

Bash belgelerinde "checkwinsize" özelliği yazıyor:

"Ayarlanırsa, Bash her komuttan sonra pencere boyutunu kontrol eder ve gerekirse LINES ve COLUMNS değerlerini günceller."

Ayarı seviyorsanız, aktive olabilir checkwinsizeGözlerinde farklı ~/.bashrc.

  • Etkinleştirmek: shopt -s checkwinsize
  • Devre dışı bırakmak için: shopt -u checkwinsize

6
Bu benim sorunumu çözmez, ama bu iyi bir genel cevap, bu yüzden yine de +1. Sanırım benim problemim bir Linux sunucusuna girerken Windows emülasyonu (?) İle ilgili.
geneorama

İlk başta geçmişi görmek için okları kullandığımda işe yaramadı, ancak ilk çalıştırılan komuttan sonra her şeyi düzeltti. Benim durumumda sonlandırıcı kullanmak. +1
kstenger

Bu benim için çalıştı, ama sadece çevirerek kapalı checkwinsize. nedense pencerem (picocom oturumu içeren) çok daha uzun olmasına rağmen, her komuttan sonra LINES = 24 ayarlanıyordu.
Michael,

19

Ctrl+ Deneyebilirsiniz L. Programa bağlı olarak terminal ekranını temizler ve / veya yeniden çizer.


3
ama sorunu kalıcı olarak çözmüyor ...
nopole

Sanırım demek istediğim, eğer CTRL L'ye basarsanız, o zaman satır şu an için tamamdır, ancak satırı tekrar düzenlerseniz (ya da
yazdığınız bir

11

bu seçenekleri docker exec'e eklemek sorunumu çözdü

-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM

1
soruyu 5 yıl önce soran siz miydiniz?
Archemar

3
Sana söylemediğini söyleyebilirim: "liman işçisi", "5 yıl önce" ile gerçekten uyuşmuyor. Docker henüz Ocak 2013'te serbest bırakılmadı ;-)
jplandrain

8

Ben de aynı problemi yaşadım ve yukarıdaki tariflerin hiçbiri benim için işe yaramadı, çünkü benim bashimin SIGWINCHana işlemi tarafından yakalanan sinyalleri asla almadığına inanıyorum .

Sonunda bir çözüm buldum. Ben ekledim .bashrc:

export PROMPT_COMMAND="resize &>/dev/null ; $PROMPT_COMMAND"

Şimdi her yeni bir bilgi istemi aldığımda pencerem yeniden ayarlanıyor.

PROMPT_COMMAND geliştirmesi için UKmonkey'e teşekkürler .


2
Şahsen benimle giderdim, export PROMPT_COMMAND="resize &>/dev/null; $PROMPT_COMMAND"böylece eski komut istemi, ne olursa olsun
korunurum

Gerektiğinde manuel olarak yeniden boyutlandırmayı çalıştırırdım. Konsolu boyut için sorgulamak yavaş olabilir. Her komutu yapmak aşırı görünüyor ve genellikle ne zaman yeniden boyutlandırıldığını biliyorsunuz.
Conrad Meyer

6

Arcadien'in daha önce söylediklerini eklemek istedim. Checkwinsize etkinleştirme hile yapar, ancak benim için gerekli olan, düzgün çalışması için pencerenin boyutunu sıfırlamaktı. Sanırım checkwinsize bunu ortadan kaldırmak istiyordu, ama yine de bir çekim yapmaya değdi. Sadece pencerenin boyutunu değiştirmeyi veya bu seçeneği işaretleyerek pencereyi büyütmeyi ve büyütmeyi deneyin.


1
İster inanın ister inanmayın, düzeltilmesi için gereken her şey buydu. Komik çünkü önce diğer her şeyi denedim.
taranaki

4

MacOS'ta zsh kullanırken zaman zaman aynı problemle karşılaşıyorum. Basit bir resetkomut çağrısı , terminali tekrar beğenmeye ayarlar.


Öyleyse OP reset, onlar için çalışmadığını belirtti ve bu aslında sorunun
amacıydı

OP Linux lezzetleri üzerinde çalışmadığını söyledi. MacOS Sierra'da sorunla karşılaştım ve resetbu durumda çalıştım. Bu cevabı, MacOS'ta aynı problemi yaşayan ve resetkomuttan haberi olmayan herkese yardımcı olmak için ekledim .
nonocut

resetUbuntu 16.04 ile Windows Putty'de çalışıyor!
musbach

reset
ubuntu'da

2

Seninle aynı problemi yaşadım ve yaptığım şey buydu: Kullanıcımda
bir .profilekurulumum var , bu yüzden tüm değişikliklerimi burada yapıyorum.

Bilmiyorum xtermaracılığıyla ulaşılabilir bir paket apt-getvar yum. Ancak kurulum ayrıcalıklarına sahip olmadığım için kaynaktan yerel bir kurulum yaptım. LINK: http://invisible-island.net/xterm/#download

./configure --prefix=/the/path/you/want/to/install/to
make
make install

Yolu profilime aktardım ve aynı yere çağırdım

export PATH=$PATH:/the/path/you/want/to/install/to
resize

Bu yüzden şimdi her giriş yaptığımda, terminal boyutu yeniden boyutlandırmaya göre belirleniyor.


0

Bu yaygın bir problem ve basit bir çözüm olmalı.

Ctrl + A Ctrl + L gibi diğer önlemler işe yaramazsa, kullanmayı deneyin stty:

  1. Ctrl + T: Yerel bir kabukla yeni bir sekme aç.
    Veya: Ekrandan çıkın (ayırmak için Ctrl + AD) ve SSH oturumunuzdan çıkın.
  2. stty -a | grep rows: Satır ve sütun sayısını al.
    Örnek:speed 38400 baud; rows 33; columns 133; line = 0;
  3. Uzaktaki sekmenize dönün veya oturum açın ve ekranı yeniden takın. sttyÇıktı farklı olmalıdır.
    Örnek:speed 38400 baud; rows 47; columns 177; line = 0;
  4. Yazın stty rows Nve stty columns Nburada N (ekranın dışında) "gerçek" bir sayıdır. Örnek:$ stty rows 33; stty columns 133

Terminator kullanıyorsanız , ilk üç adımı atlayabilirsiniz, çünkü en üstte sütun ve satır sayısını gösterir.

Buna ulaşmak için terminal pencerelerinizi yeniden boyutlandırmanız gerekmez. Yöneticiler genellikle farklı bilgisayarlardan oturum açar ve ekli monitörler boyut (çözünürlük) bakımından farklı olduğunda, maksimize edilen bir pencerenin her bilgisayarda farklı bir boyutu olur. Aslında oldukça zor değil sık sık bu çalıştırmak için.

Ve sonuç sadece bazı man sayfalarının düzgün görünmemesi değil. Çağrı cihazı kullanan hemen hemen her şey - ilk birkaç satır sık ​​sık eksik (örneğin). Ve böyle bir yanlış hizalanmış terminalde VIM kullanmayı düşünmeyin bile. Bunu değiştirmek için satır 3'ü (V) vurgulamak istiyorsunuz, ancak seçtiğinizde, vurgulanan metin başka bir satırınkidir.


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.