Adamdan çıktıktan sonra hala 'adam' metnini nasıl görebilirim?


16

Genellikle tcsh veya bash kullanıyorum ve genellikle bir komutun seçeneklerini gözden geçirmek için 'man' kullanmak istiyorum. Şu anda adamdan veya ctrl-C'den çıktığımda, adam metni kayboluyor ve 'man' komutunu gerçekleştirmeden önce orada bulunan geri kaydırma arabelleğini görüyorum. Hala ikinci bir pencere açmadan komut istemine komutu yazarken ben referans olarak görüntülediğim 'adam' metni görmek istiyorum, bunu nasıl yapabilirim?

Yanıtlar:


17

Bu davranış, bazı (donanım) terminallerde ve çoğu (yazılım) terminal emülatörlerinde bulunan “alternatif ekran” özelliğinden kaynaklanır. Olan şey, bazı terminal farkında programların işlerini yapmak için alternatif 'ekrana' geçmesi ve kapatıldıklarında (çıkma, askıya alma vb.) Normal 'ekrana' geri dönmeleridir. Bu, bu tür programların nihai çıktısını etkili bir şekilde temizler.

“Terminfo altscreen'i önleme” için yapılan web araması , alternatif ekran 'problemini' ve çeşitli çözümleri tartışan bir sayfa sağladı .

Bağlantı verilen sayfada açıklandığı gibi, bazı programlar alternatif ekranı kullanmamak için yapılandırılabilir. Daha az-X seçenek , bunu yapmanın dolaylı bir yoludur. Vim ve ve değişkenleri ayarlayarak benzer şekilde yapılandırılabilir .t_tit_te


Daha geniş bir kapsama sahip bir çözüm , terminaliniz için terminfo girişini, alternatif ekran kontrol dizilerini içermeyecek şekilde düzenlemektir . Terminfo girişleri, belirli efektler oluşturmak için (imleci hareket ettirme, ekranı temizleme, geçerli satırın bir kısmını silme, vb.) Bir terminale gönderilecek programları kontrol eden programlara bir veritabanı oluşturur. Terminalinizin kullandığı terminfo girişini düzenleyerek, “alternatif ekran” kontrol sekanslarının bile var olduğunu tüm terminfo kullanan programları 'ihmal etmeyi' düzenleyebilirsiniz.

Kaynaktan kontrol serilerinin listesinden xterm'den , (için ilgi konusu kontrol sekansları görebilirsiniz xterm'den terminal emulatörleri benzeri) olan

  • alternatif ekranı etkinleştir: ESC [ ? 47 h(aynı şekilde 1047 ve 1049 için) ve
  • normal ekranı geri ESC [ ? 47 lyükle : (aynı şekilde 1047 ve 1049 için).

Bu kodlar büyük olasılıkla terminfo değişkenlerinde smcupve rmcup. Mevcut TERM'iniz için bu değişkenleri kullanmanın hızlı ve kirli bir yolu şöyle görünebilir:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

Bu yöntem oldukça kaba ve kesinlikle tüm terminaller için işe yaramayacaktır, ancak muhtemelen çoğu xterm benzeri terminal emülatörlerinde işe yarayacaktır . İdeal olarak terminaliniz için terminfo girişindeki smcupve rmcupdeğişkenlerindeki değerleri araştırmalı ve istenmeyen davranışı önlemek için bunları konservatif olarak düzenlemelisiniz. Yukarıda bağlantılı tartışma / çözüm sayfasında, kendiniz kesmek yerine kullanabileceğiniz “önceden pişirilmiş” bir terminfo dosyası vardır (ama buradaki eğlence nedir?).


10

Sen ayarlamanız gerekir $MANPAGERiçin /usr/bin/less -isXyolunu değiştirirken, lessgerektiği gibi bulunmuştur. Önemli olan -X; bu -is, daha azına aktarılan varsayılan kümedir.


9

Çağrı cihazınızın olduğu varsayılırsa less, ortam değişkenini LESS"X" içerecek şekilde ayarlayın . Örneğin benimki:

LESS="-iMFXRj4a"

Bunu ~/.bashrcdosyanızda ayarlayabilirsiniz

export LESS="-X"

ve diğer tüm seçeneklerinizi ekleyin veya istediğiniz seçenekleri ekleyin.


4

Başka bir hile - diğer cevaplardan daha az zarif -:

man what | more

(En azından, genellikle geçerli olacak kadar benzer olan MacOS X üzerinde çalışır.)


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.