Çıktıyı terminalde bırakmadan üstten nasıl çıkarım?


30

Nasıl alırım topyolu benzer çıkmak için lessekranda çıktısı geride bırakarak değil, şekilde çıkıyor?

Bu benim versiyonum:

procps-ng version 3.3.9

Bir alternatif kullanmaya ne dersiniz htop?
DarkHeart

Yanıtlar:


48

Böyle başladığında ...

top && clear

... q ile yukarı çıktıktan sonra ekran temizlenir.

Bu daha çok gibi davranır less:

tput smcup ; top ; tput rmcup

( komutun yürütüldüğü smcupikincil bir ekrana geçer topve bıraktığınızda top rmcupnormal ekrana döner)


Bunu yapmak için üstteki komutu takma adlandırabilirsiniz ( Nasıl kalıcı bir Bash takma adı oluşturabilirim? )


3
cleargeri kaydırma tamponunun son ekranından başka hepsini de siliyor (bu durumda sadece üst kısmın son ekranını bırakarak) - en azından xfce4-terminal ve QTerminal'de. tputCevap için özellikle bir takma ad içinde, inşaat büyüktop
Xen2050

2
Hızlı bir düzeltme için Ctl + L'yi unutmayın.
Jpaugh

Oh ilginç; lessSon çıktının neden tampondan tamamen kaybolduğunu merak ediyordum .
Monica

Diğer bazı öneriler: 1. Çok üstün fakat yerleşik olmayanları kullanın htopve 2. Komutları bir araya getirerek her seferinde onları manuel olarak zincirlemeniz gerekmez.
18'de

@ flith diğer kullanıcıların cevaplarını çalmayacağım ;-)
Rinzwind

31

İronik olarak 1 , bu kısaca davranış oldu top. 3.3.8'de, topekranı temizledik, ancak geçmiş veya o zaman sürümlerinde değil. Bkz Red Hat hata # 977561 :

Ekran temizleme, 'üst' aracının, yaygın olarak kullanılan terminal uygulamalarından bazıları tarafından üretilen SIGWINCH sinyalleri ile taşmasını engellemek için Jim Warner ('üst' aracın yazarı) tarafından tanıtılan terminal manipülasyonlarındaki değişikliklerin dolaylı bir sonucudur. Sel konusunu bildiren bendim ve sorunu çözmek için elinden gelenin en iyisini yapmaya çalıştı ve sorun için 8 ayrı komisyon şeklinde bir düzeltme yaptı. Ekran temizliğini tanıtan taahhüt aşağıdaki karmaşa sahiptir: 'dedaf6e1a81738ff08ee8e8523871e12f555ad6d'.

Böcek raporundan dolayı Jim , 3.3.9’da çıktıyı temizlememesi için düzeltildi .

topBunu kontrol etmek için hiçbir seçenek veya konfigürasyon ayarına sahip değil, AFAICT, bu tamamen kodlanmış bir davranış. Https://gitlab.com/procps-ng/procps/issues/ adresinden bir özellik isteği iletmek isteyebilirsiniz .

O zamana kadar, Rinzwind'in önerdiğiclear gibi manuel olarak kullanabilir ya da steeldriver'ın önerdiği gibi kullanabilirsiniz .tput


İlginç bir şekilde, yukarıda belirtilen taahhüdün önerdiği komut steeldriver'ın hoş bir açıklaması da var;

Birkaç terminal emülatöründe kullanılan bir geri alma tamponu, bazı yeniden boyutlandırma işlemlerini izleyen bir kullanıcı için gerçek bir rahatsızlık olabilir. Üstten ekranın düzgün şekilde görüntülenmesi için sık sık ekstra tuşlara basılması gerekir.

Çok uyuduktan sonra, bu lanet kaydırma geri alma tamponunu devre dışı bırakma / geri yükleme etkisine sahip iki terminfo dizisi ortaya çıkardık. 'Kupa kullanarak programları başlatmak / sonlandırmak için' dizeleri başlığı altında saklanmışlardı. Buna karşılık, 'cup', bir tty'nin imlecini ele alma yeteneği ile ilgilenir.

Onlara ne dediğiniz ya da işi yaptıkları sürece neyi kastettikleri umurumda değil. Ve bunlar gerçekten yapar! Bununla birlikte, birçoğunun faydalı olabileceği düşünülen bazı yan etkiler olduğuna dikkat edin:

  • enter_ca_mode / smcup / ti scrollback bufferlamayı engeller (ve bu iyi, hep umduğumuz şeydi)

  • exit_ca_mode / rmcup / te, geri kaydırma ara belleğini geri yükler (ayrıca, önceki ekranın sonundaki sonuçlardan farklı olan) mevcut ön-üstteki ekran içeriğini de geri yükler (burada son görüntülenen ekrana dokunulmaz bırakıldı)

... tput smcupve tput rmcupkomutlarına karşılık gelir .


1 Zorunlu xkcd.


İlginç bir şekilde BSD üst (örneğin MacOS'ta) da terminali
Digital Trauma,

15

Daha azını aradığınız davranış, htop denilen bir alternatife dayanır. Bunu ile yükleyebilirsiniz:

sudo apt-get install htop

Özellikle, kapattığınızda orijinal ekran içeriğinizi korumaya başlamadan önce alternatif ekran moduna geçer. Ayrıca, procps'in üst kısmına göre başka çeşitli geliştirmeleri de var. Kurulduktan sonra, sadece normal bir kullanıcı olarak çalıştırabilirsiniz:

htop

Artı htopçok renkli, fare desteği vb.
Ekler

4

Kullanabilirsiniz watch:

watch top -b

Her iki saniyede bir güncelleme yapmak varsayılandır, -n1bu davranışı değiştirmek istiyorsanız , örneğin bir saniye kullanın. Çıkmak için normal yerine + watchtuşuna basın .CtrlCQ

Başka bir yaklaşım ise, örneğin xterm:

xterm -e top

Bu davranacağını tam olarak böyle topnormalde, pencere kapanır Çıkmak topile Qve tabii ki sen onu başlamış, terminal hiçbir çıkış bırakır. &Arka planda başlatmak ve hemen terminali tekrar serbest bırakmak için bu komutun sonuna ekleyin .


1

Rinzwind'in cevabını işaret ettiği gibi, clearkomut ekrandan topçıktıyı temizler .

Çıktıktan sonra , çıktıyı ekrandan silmek için + tuşlarını topda kullanabilirsiniz . Her iki komuttan sonra da eski çıktıyı görmek için ekranı yukarı kaydırabilirsiniz .CtrlLtoptop

topÇıktının geri kaydırılamayacağı şekilde ekranı gerçekten silmek için aşağıdaki resetkomutu kullanın:

top && reset

Yepyeni bir seansın bu "canlı görüntüsünü" vermenin bir başka seçeneği de (eğer varsa) bir "ASCII açılış ekranı" kullanmaktır. Benim durumumda koşardım:

top && reset && now && screenfetch

şimdi sıfırla splash.png

  • Benim nowkomut çağrıları, takvim (hava cal) ve toiletfantezi zamanla.
  • screenfetch Ubuntu logosunu ve makine istatistiklerini boyamaktadır.

1
.bashrc Düzenli olarak ihtiyaç duymadan tekrar çalıştırmanızı tavsiye etmem çünkü genellikle export PATH=...:$PATHbu dosyada olduğu gibi satırlar vardır ve birden fazla kez çalıştırmak gereksiz yere uzar PATH. Ayrıca, çağrı neofetchyapmak .bashrcstandart bir davranış değildir (süslü görünmesine rağmen). Mesela, tekrar çalıştırdığımda .bashrchiçbir şey görünmüyor.
PerlDuck

CTRL + L ve cleardavranırlar değil aynı: deneyin for i in {1..200}; do echo "line $i"; doneiki farklı, taze pencerelerde. Ardından CTRL+Lwindow1'e basın ve window2 yazın clear. Şimdi her iki pencerede de geri gidin (fare tekerleği). Gelen CTRL+Ltüm satırları görebilirsiniz -penceresinde iken (sizin kaydırma tampon bağlı olarak) clear-window yapabilirsiniz sadece kaydırma arka biri ekrana. Yani: cleargeri kaydırma arabelleğini CTRL+Lsilerken ENTER( windowline) tuşuna basıldığında $ window_height times öğesine benzer .
PerlDuck

1
@PerlDuck neofetchiyi bir yakalayıcı ama sanırım denilen bir türev screenfetch. Kendimi hatırlatmak için kullanıyorum çünkü Ubuntu'dayım çünkü çift önyüklemem var ve Windows Bash farklı bir açılış ekranına sahip. .bashrcReferans alacağım . Gelince clearve Ctrl+ Lbenim açımdan ikisinin de izin olduğu benzerdir oldu topkaydırma çıkış geri tampon.
WinEunuuchs2Unix

2
Bence herkesin içinde farklı şeyler var .bashrc. Deneyin curl wttr.in/Edmonton?0, harika. curl wttr.in/:helpYardım almak için kullanın . /etc/update-motd.d/Komut dosyasında benzer bir çağrı var, bu yüzden konsoldan veya ssh'den giriş yaparken haberdar olun (her terminal penceresi için değil). Eğer hoşuna --silent --max-time 3giderse, kıvrılan çağrıya ekleyin , böylece internet yavaşsa sonsuza dek sürmez.
PerlDuck

@PerlDuck Bu curl wttr.in/Edmonton?0harika! Çok teşekkür ederim. Bunu toiletaçılış ekranımdaki zaman ekranından sonra sıkmaya çalışacağım :)
WinEunuuchs2Unix
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.