Terminalimi sıfırlamak ve silmek için hangi komutları kullanabilirim?


64

Bu komutu kullanıyorum:

reset

terminalimi temizlemek için. Buna rağmen yapmam gereken şey olmadığından eminim. Adından da anlaşılacağı gibi Sıfırla, tüm terminalinizi sıfırlar (birçok şeyi değiştirir). İşte istediğim şey:

Temelde komutu kullanmak istiyorum clear. Bununla birlikte, temizleyip sonra yukarı kaydırırsanız, daha önce tonlarca malzeme alıyorsunuz. Genel olarak bu bir sorun değildir, ancak uzun olan brüt kütüklere bakıyorum ve sadece en yeni olanı görüntülediğimden emin olmak istiyorum. Kullanabileceğimi moreya da onun gibi bir şey biliyorum ama bu yaklaşımı tercih ediyorum.


Burada tam olarak ne istendiği konusunda çok fazla kafa karışıklığı var gibi görünüyor. Soruyu netleştirebilir misin? terminal kaydırma kaydırma tamponunu temizleyerek tam olarak ne yapmaya çalışıyorsunuz? (eğer öyleyse, hangi terminal uygulamasını kullanıyorsunuz?)
quack quixote

1
Ctrl-L, net programı yürütmeye benzer şekilde bash (varsayılan olan emacs modunda) ekranı temizler.

Bunu IntelliJ IDE'deki bash terminalinde test ettim. İyi çalışıyor ve tam olarak istediğim şey olan kaydırma özelliğini temizliyor. Teşekkürler.
Ian Lewis,

Bunun ölümle cevaplandığını biliyorum, ama istediğin şeyin bu olduğunu düşünüyorum clear && printf '\033[3J'. Terminal sıfırlama yok, sadece ekrandaki metni silin. Bu yazıya bakınız: superuser.com/questions/555554/…
jwd

Yanıtlar:


57

Kaydırma tamponu, bash'ın değil, terminal programın bir özelliğidir. Hangi terminali kullandığını söylemedin.

Xterm kullanıyorsanız, ESC-c'yi terminale ekleyerek kaydedilen çizgileri temizleyebilirsiniz.

Bu, kullandığınız terminal program üzerinde çalışabilir veya çalışmayabilir.

Linux'ta bu muhtemelen işe yarayacak:

echo -e '\0033\0143'

FreeBSD'de yankıyı kabul etmiyorsanız -e deneyebilirsiniz:

printf '\033\143'

Xterm kullanıyorum. Ancak ne demek istediğinizi anlamıyorum. Kelimenin tam anlamıyla yazmalı mıyım echo ESC-c?
altmış ayak basması

2
@sixtyfootersdude: Hayır, değişmez ESC. Vikipedi'deki "Escape karakteri" ve "Kontrol karakteri" başlıklı makaleleri okuyun - ve ardından ESCtuşuna basarak ekleyebileceğiniz ASCII karakteri 0x1B'yi belirtmek için kullanılır . ^VEsc
Grawity

1
Yapmamalısın. Çözümünüz ham terminal kaçış dizileri yazmayı içeriyorsa çözümü yeniden düşünmelisiniz. Kedi yerine "daha az" kullanırdım. Gerçekten "terminal kaçış dizileri" hakkında bilgi edinmek istiyorsanız, Google size yardımcı olabilir.
Craig

2
@HaraldNordgren echo-e'den daha standart printf kullanmak daha iyidir.
İyi Kişi,

3
Neden \0143yerine c?
ruakh

51

Her iş için doğru aracı kullanın:

  • clearTerminal penceresini temizlemek için kullanın .

  • resetKontrol dizileri tarafından karıştırıldığında terminalinizi sıfırlamak için kullanın .

  • Kullan catbaşka bir yerden gelen verilerin bir sürü akışı istediğinizde sadece kesintisiz .

  • Çıktı sayfalarını görüntülemek için lessveya gibi bir çağrı cihazı programı kullanın most.

  • tail -f /var/log/foo.log /var/log/bar.logBirkaç farklı günlük dosyasını izlemek için kullanın .

    • GNU ile tail, -Fseçenek daha iyidir, çünkü günlük dosyaları için olduğu gibi, yeni bir dosya yerinde görünse bile dosyayı izlemeye devam edebilir.

14
Bu gerçekten sorumu cevaplamıyor.
altmış ayak basması

7
Evet öyle. Dosyaları okumak için kedi dosyalarını birleştirmeyin, dosyaları birleştirin. Dosyaları okumak için daha az veya daha fazlasını kullanın; o zaman aynı problemle karşılaşmazsınız.
Rich Bradshaw

"Kedinin işe yaramaz kullanımı"
konusuna bakın

Birçok kişi kullanımına karşıyız catşey okumak için, ama küçük dosyalar için aslında hiç anlamda bir çok yapar catkullanmak yerine onları less. Dosya terminale boşaltıldıktan sonra, lessbaşka bir şey yapmadan önce işten çıkarmak yerine, istediğiniz sıklıkta dosyaya bakabilir / geriye dönebilirsiniz .
GKFX

22

Sadece teknik cevabı sağlamak için: resetsıfırdan açılmış gibi terminali yeniden başlatın. stty saneAynı işlevsellik (sıfırlama olmadan) bir çok şey yapacağız. Bu, ^L(Ctrl + L) (irrc) ve ile aynı şeydir tput clear. Önceki posterin (@grawity) söylediğine rağmen, clearbir sürü yeni satır çıkmadı. TERM'S sıfırlamayı terminfoveya termcapbenim için tanımlandığı şekilde gönderir gnome-terminal(xterm) komutuyla aynıdır perl -e'print "\33[H\33[2J"'.

Tamponu silmek istiyorsanız - tüm terminali sıfırlamakla karşılaştırıldığında, bunu deneyin tput reset. Bu gerektiğini çok hızlı olabilir ve ne isterseniz yapın. (Her ne kadar gerçekten dosyalar okuyorsanız da less)

tput reset, reset için terminfo değerini gönderir - terminalimde (xterm) aynıdır perl -e'print "\33c"'


1
Ben yaptım değil demek clearçıkışları satırbaşıyla bir demet. Ben sadece ona alternatif olarak bir komut verdim , çünkü clearsadece ekranı temizler ancak geri kaydırma tamponunu değil. (En azından PuTTY veya
Konsole'de değil

1
Bu nedenle, bir sürü yeni satır yazdırmak, gerçekten temizlemeye alternatif değildir - terminalin net sinyalle ne yapacağını bilemezsiniz. Yeni insanlara sadece terminalinizi nasıl idare edeceğini bilen bir veritabanınız olduğunu söylemek daha iyidir clear, bir sinyale bir sinyal ismi olarak eşlenen ve bir sinyale eşleyen iki anahtar değere sahiptir reset- ve sadece ikincisi temizlenmiş geri kaydırma tamponu ile sonuçlanır. resetikincisini gönderir, yukarıda başka eğlenceli şeyler yapıyor.
Evan Carroll

1
Sixtyfootersdude orijinal soruya göre, clearyok değil onun scrollback sıfırlayın. ( ESC cçalışır xtermve VTE tabanlı, ama PuTTY ve Konsole'de değil.) İstediğinden resetdaha fazla sıfırladığı için ikisini de kullanmak istemiyor. (Hangi terminali kullandığını bilmiyorum - ancak sttysıfırlama işleminden önce ve sonra karşılaştırın .)
grawity

2
Dediğim gibi, muhtemelen tput resetterimi sıfırlama sinyalini terminale gönderen istiyor - terimi gerçekten yeniden başlatmadan. "reset - Başlatma dizeleri koymak yerine, terminalin sıfırlama dizileri mevcutsa çıkar (rs1, rs2, rs3, rf). Sıfırlama dizeleri mevcut değilse, ancak başlangıç ​​dizeleri başlangıç ​​durumuna getirilir. Aksi takdirde, sıfırlama aynı şekilde init işlevi görür. " Burada, sıfırlama dizgileri var, init dizgileri çalışmayacak.
Evan Carroll

+1: öneri için, ancak tput resetoldukça yavaştır (aynı reset). printf '\033\143'çok daha hızlı. Printf yönteminin tehlikeli / kötü olmasının herhangi bir nedeni var mı?
altmış ayakları

9

Başka bir terminal iTerm2'dir ve geri dönüşü temizlemek için kullanılan biraz garip bir kaçış dizisine sahiptir. Bir Bash kabuğundaki gibi bir şey kullanıyorum:

echo -ne '\033]50;ClearScrollback\a'

Bir komut dosyasında. Yani temelde bir ESC karakteri, ardından " ]50;ClearScrollback" ve ardından bir BEL karakteri.


1
CMD + K iTerm2'de çalışır. CTRL + K başka birçok yerde çalışır.
blockloop

Bu çözümü sevdim, çünkü iTerm2 kaydırma geri alma arabelleğini, bir kabuk komut dosyasından, ister istemez clearve istemese bile temizlememe izin verdi reset. Yine de, bu sorunun gerçekten en iyi cevabı değil. Sanırım bu durum için doğru cevap, uçbirim uygulamasının sunduğu her ne ise, iTerm2'deki komut-K, diğerlerinde kontrol-K, vb.
LS

8

Muhtemelen her şeyi temizlemenin en iyi yolu terminalin işlevini kullanmaktır:

  • Konsole: Ctrl+ Shift+ KGörüntüle → Scrollback ve Reset'i temizle
  • GNOME Terminali: Düzenle → Sıfırla ve Temizle
  • PuTTY: Ctrl+ right-click→ Scrollback Sil

Bu şekilde, her iki arabellek de temizlenir ve terminal durumu başlangıçta olduğu gibi sıfırlanır (ki bu, kullanmasıyla aynı olabilir veya olmayabilir reset).


Hmm, benim cücetimin altında bende yok ...
altmış ayaklı

@sixtyfootersdude: Ben eminim olduğunu ben sadece tam menü (kullanamaz bilmiyorum orada gnome-terminalşu anda kendimi) ... "Araçlar" ve diğer menülere bir göz atın.
Grawity

Xterm'de ctrl-orta düğmesi -> "sıfırla ve kaydedilmiş satırları temizle"
Craig

3
daha az -W + F foo.log

+F"takip et" ifadesi için benzer, tail -fancak siz de geriye dönmenizi sağlar.

Tüm vte-tabanlı terminaller (GNOME, Xfce, Roxterm) ve KDE Konsole, içeri kaydırmak için kaydırma tekerleğini kullanmanızı sağlar less. Bunu oldukça uygun buluyorum.


Alternatif clear:

perl -e 'yazdır "\ n" x512;'

xterm -e 'tail -f foo.log'

3

Mac OS X Terminal.app'da:

Görünüm -> Kaydırmayı Temizle (veya command- K)


@Rohit Eğer soru özellikle Mac OS X Terminal.app ile ilgiliyse , o zaman, evet, bu harika bir cevap. Bununla birlikte, asıl soru belirsizdir, hangi terminalin ve işletim sisteminin oyunda olduğu konusunda söyleyebileceğim en iyi şey.
David J.

2

Bu bir "Bash" problemi değil. Kullandığınız terminale göre değişir. Örneğin, uzak bir linux makinesine bağlanmak için "iterm2" yi macbook ile kullanıyorum. Tamponu temizlemek için "command + K" tuşunu kullanabilirsiniz ya da menüde "Düzenle" -> "Tamponu Temizle" yi seçin.


1

PuTTY'yi çalıştırırken konsol ekranını ve kaydırma kaydırma arabelleğini temizlemek için bu benim için çalışır:

echo -en "\ec\e[3J"

Bu aslında bağımsız hareket eden 2 "Esc" dizisidir ... her iki sırada da kullanılabilirler:

# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"

# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"

echo -en "\ec"Hangi terminali sıfırlayacağınızı kullanmak , diğer terminal ayarlarınızdan bazılarını değiştirebilir. "Sıfırla" yerine, bunu yapabilirsiniz:

# position the cursor to "Home" (Top Row, First Column)
echo -en "\e[H"

# Erase down: clear the screen from the cursor down to the bottom of the screen.
echo -en "\e[J"

# Note: this is supposed to clear the screen and position the cursor to home,
# but it didn't work like that for me. It cleared the entire screen (above and 
# below the cursor), but left the cursor at its last position.
echo -en "\e[2J"

# putting everything together
echo -en "\e[H\e[J\e[3J"

Bunu bir kabuk betiğine koyabilirsiniz ve gayet iyi çalışıyor.


Bazı sistem bağımlılıkları olması durumunda:

PuTTY Bağlantı Yöneticisi'ni (Sürüm 0.7.1 BETA (yapı 136)), PuTTY (Sürüm 0.60) ile kullanıyorum.

Yazıyor:

echo \"$TERM\"; /bin/sh --version

raporlar:

"xterm"
GNU bash, version 4.1.2(1)-release-(x86_64-redhat-linux-gnu) ...

1

FreeBSD’deki donanım TTY’nin ekran arabelleğini temizlemek için -C parametresiyle "vidcontrol - sistem konsolu kontrolü ve yapılandırma yardımcı programı" nı kullanabilirsiniz.

vidcontrol -C

Komut, geçerli konsol için şu anda gördüğünüzün üstünde tüm ekran arabelleğini boşaltır. İlk önce 'temizlemek' isteyebilirsiniz veya istemezsiniz - size kalmış.


0

Bir günlük dosyasındaki en son girişlere baktığınızdan emin olmak istiyorsanız, kullanmakta olduğunu varsaydığım / yerine kuyruk kullanmak en iyisidir .clearcat


Aslında tail -f (sürekli günlükler) kullanıyorum, ancak ara sıra binlerce satır tükürdükleri için geri kaydırma yapmak önemlidir. Ancak eski bir kütüğe geri dönmediğimi bilmek güzel olurdu.
altmış ayak basması

0

Hmmm. Sanırım konsole kullanıyorsan, şansın yaver gitmez. Eskiden sadece "geriye doğru kaydırma" yapabilirdiniz. Konsole bunu yapmana izin vermeyecek. Siz de sıfırlamalısınız, böylece çalıştırdığınız tüm programları öldürür. Sanırım yeni bir terminal programına ihtiyacım var ......

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.