Gnome terminal geçmişini nasıl temizlerim?


59

Kullandığımız zaman clearkomutunu veya Ctrl+ Lterminalinde, bu terminali temizler ama biz hala son kullanılan komutları görmek için geri kaydırabilirsiniz. Terminali tamamen temizlemenin bir yolu var mı?


Terminale bağlı ve cevapların hiçbiri buna cevap vermiyor.
Thomas Dickey

Yanıtlar:


69

Kullanabilirsiniz tput reset.

Ayrıca resetve tput resetaşağıdaki kabuk betiğini kullanabilirsiniz.

#!/bin/sh
echo -e \\033c

Bu, kontrol karakterlerini Esc-Cterminali sıfırlayan konsola gönderir .

Google Anahtar Kelimeler: Linux Konsolu Kontrol Dizileri

man console_codes diyor:

ESC c dizisi, ekranın tamamen karışması halinde istediğiniz şey olan bir terminal sıfırlamasına neden olur. Tavsiye edilen "echo ^ V ^ O" yalnızca G0 akımını sağlar, ancak G0'ın a) tablosunu gösterdiğine dair hiçbir garanti yoktur. Bazı dağıtımlarda sadece "echo ^ [c" yapan bir program sıfırlama (1) vardır. Konsol için terminfo girişiniz doğruysa (ve rs1 = \ Ec girişine sahipse) "tput reset" de çalışacaktır.


1
Sıfırlama ve tput sıfırlama arasındaki fark nedir?
Toothrot

tput resetresetUbuntu 16.04’den daha hızlı , en azından
Iván Rodríguez Torres

5
-1, eğer yukarı kaydırırsan hala tamponu görebilirsin
João Pimentel Ferreira

15

resetTerminal ayarlarını sıfırlayacak komutu kullanabilirsiniz .


15

Biliyorum bir gnome terminalindesin ama Mac’te olabilecek başkaları için bir ipucu ile cevap vereceğimi düşündüm:

Kullanıyorsanız Terminal.appveya iTerm.appsonra Control+Lyukarı kayar, böylece terminal boş görünür, ancak Cmd+Kterminali gerçekten sıfırlar / geri kaydırmayı sıfırlar.

Veya terminaliniz için klavye tercihlerini ayarlayabiliyorsanız , yukarıda belirtildiği gibi Ctrl+Kgiriş yapmak echo -e \\033cgibi bir şey atayabilirsiniz .


2
Cmd+Ktek istediğim bu. ty
Gaurav Gandhi

9

Anthon'un cevabı KDE Konsole'de çalışıyor, ancak urxvt değil. Urxvt'te, geri kaydırma işlemini (yaptığı diğer şeylerle birlikte) temizlemek için birkaç yıldır sıfırlamayı kullanıyorum ve Konsole'de çalışmadığı için tatmin olmadı. Şimdi Linux için yeni bir takma adım var:

alias allclear='clear; echo -e "\033c\e[3J"'

Ancak OS X üzerinde çalışmıyor.

tput reset AFAICT hiçbir bağlamda çalışmaz.

KDE Konsole'de, ctrl- shift- kkaydırma işlemini temizler (geçerli kabuk istemi dahil, bu yüzden tamamen boş). İTerm'de veya Apple'ın OS X üzerindeki terminalinde cmd- shift- - kayrıca kaydırma işlemini temizler. Bu özelliği urxvt'ye eklemek için, bunu ~ / .Xresources dosyasına ekleyin:

urxvt*keysym.C-S-K: command:\033c

Bu cevap, Linux Bash kullanan herkesin, Mac'te alacağı sonuçları beklemek durumunda + K komutuna basarak alacağı cevaptır. Devam ettim ve bunu aşağıdaki işlevi ekleyerek bağımsız bir komut haline getirdim. /etc/bash.bashrc (sonra sunucudan çıkın, tekrar giriş yapın ve allclear komutuyla çalışacaktır): allclear(){`echo" Terminali ve kaydırma işlemini sil ... "` `uyku 1.5`` temiz; echo -e "\ 033c \ e [3J" ` }` Düzenleme: Çalışmak için biçimlendirme alınamıyor. Herhangi biri bunu düzenleyebiliyorsa, okunabilir olması durumunda minnettar olurum.
KLaw

3

Bunu yıllar önce net olarak buldum ve benim için iyi çalışıyor. Kaydırma geçmişi olmayan terminali tamamen temizler.

echo -e "\e[3J"

2

Ben eşlenen F12: Aşağıdaki kabukların her ekranı temizlemek için bash , csh ve balık kabuk . Komutum öncekilerden farklı çünkü mevcut satırda yazdıklarınızı koruyor.
(Not: Aşağıdaki tüm konfigürasyonlar terminale bağlıdır, ancak umarım hemen hemen her yerde çalışırlar)

darbe

Dosyayı açın ~/.inputrcve aşağıdaki satırı ekleyin:

"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"

Mevcut bağlanma yeni anahtar, ya yeni bir terminal açmak veya yazmak için Ctrl+ Xo Ctrl+ Rmevcut terminal .inputrc dosyasını yeniden.

Açıklama
~ / .inputrc dosyası bash terminalinin anahtar bağlantılarını kontrol eder.

Hat hakkında:

  1. Çizginin ilk kısmı "\e[24~", anahtarı eşler F12.
  2. C-k( Ctrl+ X) ÖIdürücü halkasını (bash en kopyalama ve geçmişteki bellek) temizler.
  3. Boşluk, bir sonraki komutta bir bip sesini önler.
  4. C-u( Ctrl+ U) Kesme zincirine akım hattı gönderir ve silmek.
  5. echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\nTerminaline iki gruplandırılmış komutlar gönderir. Onlar tarafından ayrılır ;ve sonlandırılır \n.
    • echo -ne '\\ec\\e[3J'Ekranı temizler.
    • history -d $((HISTCMD-1))Tarihte girmesini bu iki komutları önler.
  6. C-y( Ctrl+ Y) Tarafından saklanan öldürme halka yapıştırır C-ukomutu.
  7. C-?( Ctrl+ ?) Eşdeğerdir Backspaceve yukarıda aşama 3'te yerleştirilmiş alanı kaldırır.

Referanslar:

csh

Komutu aşağıya yazın. Her yeni terminale anahtar ciltleme yüklemek için
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
ayrıca .cshrcdosyanıza eklenebilir .
(Evet, bash'tan çok daha basittir)

balık kabuğu

Komutu aşağıya yazın. Her yeni terminale anahtar ciltleme yüklemek için
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
işlevi düzenleyebilir ve kaydedebilirsiniz fish_user_key_bindings.
(Evet, bash'tan çok daha basittir)


2

[Ubuntu 16.04]

.Bash_history terminali kapatıldıktan sonra dosya kullanıcının ana dizinde oluşturulur

Kullanışlı, ancak dilerseniz silebilirsiniz .. Yine de terminali kullanmayı her bitirdiğinizde yaratılır.

El ile silebilirsiniz:

  • dosya tarayıcınız.

  • terminal: terminali kapattığınızda yeni bir .bash_history dosyası oluşturulacağını unutmayın (varsayılan konfigürasyonuna göre).

Veya ihtiyacınız olan işlevselliği bashrc ile bağlantılı bir dosyaya kaydederseniz, özel bir işlevi çağırabilirsiniz. Kodunuzu buraya koymak isterseniz bashrc'nin kendisini düzenleyebilirsiniz, ancak sonraki örnekler ayrı bir dosyadadır

Dürüst olmak gerekirse, bu benim için yararlı değil ama çıkmadan önce komut geçmişini silmek istiyorsanız bunu yapabilirsiniz:

.bash_custom #this benim özel dosyam

blotout() {
    HISTSIZE=0
    rm $HOME/.bash_history
    exit
}

daha sonra
dosyamın adını ve yolunu ekleyin .bashrc # bu bash için yapılandırma dosyasıdır (sanırım)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

ve hepsi bu.

AMA, tam olarak ne istiyorsan onu yapabilmek için özel dosyada bu fonksiyona ihtiyacın var ve onu bağla:

refresh() {
        tput reset
        H=HISTSIZE
        HISTSIZE=0
        HISTSIZE=H
}

İsterseniz sadece fonksiyonu .bashrc'ye koyun, ancak bu şekilde muhtemelen fonksiyondan sonra bir export deyimine ihtiyacınız olacaktır. D
.Bashrc dosyasını veya 'custom' dosyanızı düzenlerken terminali yeniden başlatmanız gerektiğini unutmayın.


1

Benim için, PuTTY'yi CentOS 7'ye karşı kullanmak, clear (geri) komutunda clear komutunun yalnızca clear komutunu bırakır, ancak aynı zamanda clear komutunun iki örneği "clear && clear" komutunu çalıştırarak scrollback'i tamamen siler ve beni kaydırma çubuğu içermez. Bunu dene. Bu çok garip bir çözüm ancak bunlardan hiçbiri etkili olan bu geri tepmeyi çözmedi.


0

~/.inputrcTüm açıklığı bağlamak için eklendi F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'

0

Fedora 30'da, geçmişi silmek $ HOME / .bash_history dosyasını kaldırarak yapılır. Terminal geçmişi dosyasını klavyeyle temizlemenin en kolay yolu:

  • Her GNOME Terminal penceresini kapatmak için Alt+ tuşlarına basın F4, pencereler arasında gerektiği şekilde Alt+ Tabveya Alt+ Shift+ ile geçiş yapın Tab. (.Bash_history dosyası kapatıldığında oluşturulduğundan veya güncellendiğinden tüm terminal pencerelerinin kapatılması gerekir.)
  • Alt+ Tuşlarına basın F2.
  • Yazın nautilusve basın Enter(eski Nautilus olarak biliniyordu) (GNOME) Dosyalar uygulamasını açmak için anahtarı.
  • Gizli dosyaları göstermek için gerekirse Ctrl+ tuşuna basın H.
  • Tür .bash_history(pencere açıldıktan hemen sonra yazılırsa, arama çubuğunda görünmesi gerekir; aksi takdirde, arama çubuğuna Ctrl+ üzerinden erişilebilir L).
  • Tek arama sonucu olması gereken dosyayı seçmek için aşağı ok tuşuna basın.
  • Dosyayı kalıcı olarak silmek için Shift+ tuşuna basın Delete. (Değiştirilmemiş Deleteanahtarı kullanırsanız, .bash_history dosyasına yine de Çöp Kutusu klasöründen erişilebilir.)

-2
cat /dev/null > ~/.bash_history && history -c && exit

Yapabileceğiniz en az şey, cevabınızı açıklamak ve biçimlendirmektir.
Paradox

(1) OP'nin önceki komutların kabuğunun hafızasını (geçmişini) silmek istediği açık değildir (soru terminalle ilgilidir ). Bunu göremezsiniz, ancak history -cönceki iki cevapta sunulmuş ve sorunun doğru cevapları olmadığı için silinmiştir. Terminal penceresini kapatmadan (muhtemelen) Önceki komutların terminalin hafızasını silecektir iken (2), bu kadar uzak OP bunu istediği aşikar dan. … Ve PS exitTerminal penceresini kapatmak için tek bir komut garanti edilmez.
G-Man
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.