Mac OS X'te Terminal'deki önceki çıktı nasıl temizlenir?


523

clearGeçerli ekranı 'temizleyen' komutu biliyorum , ancak bunu sadece çok sayıda yeni satır yazdırarak temizler - temizlenen içerik yukarı kaydırılır.

Terminalden önceki tüm çıkışları tamamen silmenin bir yolu var mı, böylece yukarı kaydırırken bile erişemiyorum?


1
Bunu bir kabuk betiğinde çalışan bir yol buldunuz mu?
Zev Eisenberg

7
@ZevEisenberg Ben öyle düşünmüyorum. Her neyse, şimdi buna hiç ihtiyacım olmadığını düşünüyorum. Memnunum Command+K.
Eonil

@ZevEisenberg Güncellenmiş cevabım (ve bir diğer cevabım) bir senaryodan nasıl yapılacağını gösterir.
Alok Singhal

Yanıtlar:


1098

Terminali manuel olarak temizlemek için:

+K

Command+ Kdaha yeni klavyeler için

Terminali kabuk betiğinden temizlemek için;

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'

@fearless_fool apple.stackexchange.com/a/31887 yapabilir mi? Varsa, lütfen bana bildirin!
Alok Singhal

Evet, ama daha iyi bir yol için aşağıya bakın ( stackoverflow.com/a/26615036/558639 ).
fearless_fool

9
Yanlışlıkla buna basarsanız, temizlenen tamponu nasıl görüntüleyeceksiniz?
Joshua Pinter

4
@ JoshPinter, sadece kazara basmayın. :) ( Kaybolma geçmişinin gerçekten kaybolması gereken cleardurumlar dışında tüm durumlar için kullanmayı düşünün , örneğin, baskı yapacağınız zaman.)
Wildcard

2
@Wildcard Yeterince adil. :) Kullanmayla ilgili iyi tavsiyeler clear. Yine de tersine çevrilmeleri gerektiğini hissediyorum. Yazmak clearvurmaktan daha kasti görünüyor Command + K.
Joshua Pinter

85

Bir betik içinden ekranı temizlemenin daha iyi bir yolu ...

OSX Terminal uygulamasını (OP tarafından belirtildiği gibi) kullanıyorsanız, daha iyi bir yaklaşım ( https://apple.stackexchange.com/a/113168 sayesinde ) sadece budur:

clear && printf '\e[3J'

veya daha kısaca (şapka ipucu https://stackoverflow.com/users/4834046/qiuyi ):

printf '\33c\e[3J'

ekranın yanı sıra geri kaydırma arabelleğini de temizler. Başka seçenekler de var, daha fazla bilgi için https://apple.stackexchange.com/a/113168 adresine bakın .

orijinal cevap

Bu iş parçacığında verilen AppleScript yanıtı çalışıyor, ancak etkin olan HERHANGİ bir terminal penceresini temizlemenin kötü yan etkisi var. Senaryoyu bir pencerede çalıştırıyor ve başka bir pencerede iş yapmaya çalışıyorsanız bu şaşırtıcı!

AppleScript'i yalnızca bunu yaparak ekranı en üst düzeye çıkaracak şekilde iyileştirerek bunu önleyebilirsiniz ( https://apple.stackexchange.com/a/31887 adresinden alınmıştır ):

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

... ancak geçerli pencere olmadığı zaman, çıkış tekrar geçerli hale gelene kadar birikir, muhtemelen istediğiniz şey değildir.


1
"Daha iyi bir yol" kullandım .bash_profileve bu harika çünkü artık bazen yeni bir terminal penceresi açarken glitched buffer alamıyorum.
Patrick Roberts

1
Bu, kavramsal olarak en doğru cevaptır. Qiuyi'nin cevabı, biraz okunabilirliğin fedakarlığında && önler. Alok'un cevabı, mevcut komut dosyasını çalıştıran terminali temizlemek için genişletilebilseydi, bu bir iyileştirme olurdu, ancak bu daha basit.
Zack Morris

1
Bu waaaaaaaaaautrip için daha iyidir. Çok teşekkürler!
Andy

Bu başka bir sisteme ssh'd zaman için mükemmel, teşekkürler!
JBRWilkinson

48

Güzel yol printf '\33c\e[3J'


3
Bu en iyi yol. Biz diğer adı tanımlamalıyızalias cls='printf "\33c\e[3J"'
mpyw

Teşekkür ederim, tam da ihtiyacım olan şey bu.
GigaBass

İTerm2'de de çalışıyor
Anders Zommarin

1
@ LoïcFaure-Lacroix, komutun \33ceşdeğerini yerine getirir, clearbu da önceki içeriğini görene kadar ekranı kaydırır. Ekranı temizler, ancak geri kaydırma arabelleğini kaldırmaz (yani, eski çıktıyı görmek için kaydırma çubuklarını kullanmaya devam edebilirsiniz). \e[3JGeri kaydırma arabelleğini temizlemek için ekleyin .
luiss

@EirNym, (veya sistem genelinde ) function cls { printf '\33c\e[3J\33c' }satır ekleyin . Bu, macOS, FreeBSD, Linux vb. Masaüstü ortamları için çalışmalıdır . Ekstra olanın, macOS dışındaki ekstra değişmezleri temizlemek için olduğunu unutmayın (temelde Linux / FreeBSD için, sadece ihtiyacımız var ). ~/.profile/etc/profile\33c\e[3Jprintf '\33c'
vulcan kuzgun

33

Bunu .bash_profile veya .bashrc dosyasına koyun

function cls { 
osascript -e 'tell application "System Events" to keystroke "k" using command down' 
}

Bu doğru cevap olmalı. AppleScript dağınık olabilir, ama hey, işi halleder. Teşekkürler.
allanberry

Kaldırılmıştı, ancak başka bir cevap, bunun tüm pencereleri temizlediğini not ediyor!
Michael Bushe

20

Mac OS X Terminalinde bu işlev zaten Terminal Uygulaması'nda View->Clear Scrollback(Varsayılan CMD+ K) olarak yerleşiktir .

Böylece Apple'ın Klavye kısayollarıyla bunu istediğiniz gibi yeniden atayabilirsiniz. Terminal için "Kaydırma Çubuğunu Temizle" komutuyla yeni bir kısayol eklemeniz yeterlidir. (I kullanma CMD+ Lbuna benzer, çünkü CTRL+ Ltampon temizlemeden, mevcut Ekran içeriğini temizleyin.)

Bunu bir komut dosyasında nasıl kullanacağınızdan emin değilsiniz (belki de diğerlerinin işaret ettiği gibi AppleScript).


1
Yosemite (10.10) itibarıyla View->Clear Scrollbackartık Terminal menüsünde bulunmamaktadır. Klavye kısayolu CMD+ Khala çalışıyor.
Nicolas Miari

1
@NicolasMiari Görünüşe Clear Scrollbacksadece taşındı Viewiçin EditYosemite'te.
BrainSteel

10

Mac OS X Yosemite (10.10) Option + Command + Kile Terminal.app'deki kaydırma işlemini temizlemek için kullanın .


9

Veya şuna basarak bir sayfa sonu (ASCII form beslemesi) gönderebilirsiniz :

CTRL+L

Bu teknik olarak yeni bir sayfa başlatırken, diğer tüm yöntemlerle aynı net etkiye sahiptir, ancak çok daha hızlı olur (elbette Apple + K çözümü hariç).

Ve bu bir ASCII kontrol komutu olduğundan, tüm mermilerde çalışır.


1
Bu, ekranı temizler ancak geri kaydırma arabelleğini olduğu gibi bırakır.
George

örnek için cmd + f kullanmak istiyorsanız aynı değildir
bormat

7

Yalnızca son çıktıyı silmek için:

+L

Terminali tamamen temizlemek için:

+K


6

Command + K önceki çıktıyı silecek

Girilen metni temizlemek için önce " Command + A " ile sola atlayın, ardından " Control + K " ile işaretçinin sağındaki metni temizleyin .

Görsel örnekler: resim açıklamasını buraya girin



5

Doğru olanı yap, doğru olanı yap!

Önceki işarete kadar temizle:Command-L

Önceki yer işaretine temizle:Option-Command-L

Başlamak için temizle: Command-K

Adamlarına yardım et!


1

Yukarıdakilerin hiçbirini (macOS'ta) çalıştıramadım.

Bir kombinasyon benim için çalıştı -

IO.write "\e[H\e[2J\e[3J"

Bu, arabelleği ve ekranı temizler


IO.write nedir? Çalışması için printf ile değiştirmek zorunda kaldım. Yine de teşekkürler. Bu benim için en iyi çalışıyor
Fitsyu

1
Neden seçtiğimden emin değilim IO.write. Aynı şekilde çalışmalıdır, ancak bu karakterleri terminale yazdırmaya karar verdiniz.
Michael Baldry

1

Terminalde aşağıdakileri yazmak geçmişinizi siler (yani yukarı ok kullanarak hiçbir şey elde edemezsiniz) - ancak ekranı temizlemez:

history -c

Öyle. @ phil onları kalıcı olarak diskten siler mi, yoksa yine de bir şekilde alınabilir mi?
Steven Roose

Temel olarak ~ / .bash_history dosyasını siler, bu yüzden kurtarabilirseniz, temizlenen komutları kurtarabilirsiniz
Ryan Pendleton

Hayır işe yaramıyor. Yukarı kaydırılmış geçmiş hala var ve tekrar görmek için yukarı kaydırırım.
Eonil

26
Ne istendi değil. Bu, iki farklı şey olan mevcut tamponu değil, tarihi temizler.
Sean Cameron

1
Sorulan ve zararlı olmayanlar değil ; Sadece bundan etkilenmiştim ve tarihim önemli şeyler içeriyordu.
Elazar

0

Bir filtre istiyorsanız çıktıdan bunalmışsanız bunu deneyin

adb -d shell dumpsys kullanıcısının aktiviteleri | grep kullanıcısının aktiviteleri


-4

CMD + K benim için sürekli çalışıyor gibi görünüyor.


2
Bu, 8 yıl önce yazılan kabul edilenle aynı cevaptır.
piksel bitworks
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.