Jak wyczyścić historię terminali Gnome?

59

Kiedy używamy clearpolecenia lub Ctrl+ Lw terminalu, usuwa terminal, ale nadal możemy przewinąć do tyłu, aby wyświetlić ostatnio używane polecenia. Czy istnieje sposób na całkowite wyczyszczenie terminala?

hpn
źródło
To zależy od terminala i żadna z odpowiedzi na to nie rozwiązuje.
Thomas Dickey,

Odpowiedzi:

69

Możesz użyć tput reset.

Poza tym reseti tput resetmożna użyć następującego skryptu powłoki.

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

To wysyła znaki kontrolne Esc-Cdo konsoli, która resetuje terminal.

Słowa kluczowe Google: sekwencje kontrolne konsoli Linux

man console_codes mówi:

Sekwencja ESC c powoduje reset terminala, co jest potrzebne, jeśli cały ekran jest zniekształcony. Często zalecane „echo ^ V ^ O” spowoduje, że G0 będzie prądem, ale nie ma gwarancji, że G0 wskazuje na tabelę a). W niektórych dystrybucjach istnieje reset programu (1), który po prostu wykonuje „echo ^ [c”. Jeśli twój wpis terminfo dla konsoli jest poprawny (i ma wpis rs1 = \ Ec), wtedy również zadziała „tput reset”.

Sachin Divekar
źródło
1
Jaka jest różnica między resetowaniem a resetowaniem tput?
Toothrot,
tput resetjest resetco najmniej szybszy niż w Ubuntu 16.04
Iván Rodríguez Torres
5
-1, nadal możesz zobaczyć bufor, jeśli przewiniesz w górę
João Pimentel Ferreira
15

Możesz użyć resetpolecenia, które zresetuje ustawienia terminala.

enzotib
źródło
15

Wiem, że jesteś na terminalu gnomów, ale pomyślałem, że odpowiem wskazówką dla innych osób, które mogą być (jak ja) na komputerze Mac:

Jeśli używasz Terminal.applub iTerm.appwtedy Control+Lprzewiniesz w górę, aby terminal wyglądał na pusty, ale Cmd+Kfaktycznie zresetuje terminal / wyczyści przewijanie do tyłu.

Lub, jeśli jesteś w stanie ustawić preferencje klawiatury dla swojego terminala, możesz być w stanie przypisać coś takiego jak Ctrl+Kwejście, echo -e \\033cjak wspomniano powyżej.

cwd
źródło
2
Cmd+Kto wszystko czego chciałem. ty
Gaurav Gandhi
9

Odpowiedź Anthon działa w KDE Konsole, ale nie urxvt. W urxvt używałem resetowania od kilku lat, aby wyczyścić przewijanie (wraz ze wszystkimi innymi rzeczami, które robi) i nie byłem zadowolony, że to nie działa w Konsole. Więc teraz dla Linuksa mam nowy alias:

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

Ale to nie działa w systemie OS X.

tput reset nie działa w żadnym kontekście AFAICT.

W KDE Konsole, ctrl- shift- kusuwa przewijanie (w tym bieżące polecenie powłoki, więc jest całkowicie puste). W iTerm lub terminalu Apple w OS X, cmd- shift- kusuwa również przewijanie. Aby dodać tę funkcję do urxvt, dodaj ją do ~ / .Xresources:

urxvt*keysym.C-S-K: command:\033c
ecloud
źródło
Ta odpowiedź jest odpowiedzią, którą pokochają wszyscy używający Linux Bash, jeśli oczekują tego samego rezultatu, jaki otrzymaliby na komputerze Mac, naciskając klawisze + K. Udałem się i zmieniłem to w samodzielne polecenie, dodając następującą funkcję na dole z /etc/bash.bashrc (następnie wyloguj się z serwera, zaloguj się ponownie i będzie działał za pomocą polecenia allclear): allclear(){`echo" Czyszczenie terminala i przewijanie ... "` `sleep 1.5 '' wyczyść; echo -e "\ 033c \ e [3J" ` }` Edycja: nie można uruchomić formatowania. Byłbym wdzięczny, gdyby ktokolwiek był w stanie to edytować, aby był czytelny.
KLaw
3

Znalazłem to w sieci lata temu i działa dobrze dla mnie. Całkowicie czyści terminal bez historii przewijania.

echo -e "\e[3J"
kanon
źródło
2

Odwzorowałem F12na czysty ekran w każdej z następujących powłok: bash , csh i fish shell . Moje polecenie różni się od wszystkich poprzednich, ponieważ zachowuje wszystko, co już wpisałeś w bieżącym wierszu.
(Uwaga: wszystkie poniższe konfiguracje są zależne od terminali, ale mam nadzieję, że będą działać praktycznie wszędzie)

grzmotnąć

Otwórz plik ~/.inputrci wstaw następujący wiersz:

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

Aby mieć dostępne nowe powiązanie klawiszy, otwórz nowy terminal lub wpisz Ctrl+, Xa następnie Ctrl+, Raby ponownie załadować plik .inputrc w bieżącym terminalu.

Objaśnienie
Plik ~ / .inputrc steruje powiązaniami klawiszy terminala bash.

O linii:

  1. Pierwsza część linii "\e[24~"odwzorowuje klucz F12.
  2. Klawisz C-k( Ctrl+ X) usuwa pierścień „zabicia” (pamięć kopiowania i przeszłości bash).
  3. Spacja unika sygnału dźwiękowego w następnym poleceniu.
  4. C-u( Ctrl+ U) Wysyła bieżącą linię do kill-ring i usunąć go.
  5. echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\nWysyła dwa grupowo polecenia do terminala. Są one oddzielone ;i zakończone przez \n.
    • echo -ne '\\ec\\e[3J'Czyści ekran.
    • history -d $((HISTCMD-1))Unika tych dwóch komend z wejściem w historii.
  6. C-y( Ctrl+ Y) Wkleja się uśmiercenie pierścień przechowywany przez C-upolecenia.
  7. C-?( Ctrl+ ?) Jest równoważne Backspacei usuwa przestrzeń wstawiony w punkcie 3 powyżej.

Bibliografia:

csh

Wpisz poniższe polecenie.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Można go również wstawić .cshrcdo pliku, aby załadować powiązanie klucza z każdym nowym terminalem.
(Tak, jest to o wiele prostsze niż w bash)

skorupa ryby

Wpisz poniższe polecenie.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Możesz edytować i zapisać funkcję, fish_user_key_bindingsaby załadować przypisanie klawiszy do każdego nowego terminala.
(Tak, jest to o wiele prostsze niż w bash)

Akira Cleber Nakandakare
źródło
2

[Ubuntu 16.04]

Plik .bash_history jest tworzony w katalogu osobistym użytkownika po zamknięciu terminala

Jest to przydatne, ale możesz je usunąć, jeśli chcesz. Niemniej jednak zostanie utworzone za każdym razem, gdy skończysz korzystać z terminala.

Możesz usunąć go ręcznie z:

  • Twoja przeglądarka plików.

  • terminal: pamiętaj, że po zamknięciu terminalu zostanie utworzony nowy plik .bash_history (w domyślnej konfiguracji).

Możesz też wywołać funkcję niestandardową, jeśli zapiszesz potrzebną funkcjonalność w pliku połączonym z bashrc .. możesz edytować sam bashrc, jeśli chcesz umieścić tam swój kod, ale następne przykłady znajdują się w osobnym pliku

Szczerze mówiąc, nie jest to dla mnie przydatne, ale jeśli chcesz usunąć historię poleceń przed wyjściem, możesz to zrobić:

.bash_custom # to jest mój plik niestandardowy

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

następnie na dole dodaj nazwę i ścieżkę mojego pliku
.bashrc # to jest plik konfiguracyjny dla bash (myślę)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

i to wszystko.

ALE, aby zrobić dokładnie to, co chcesz , potrzebujesz tej funkcji w pliku niestandardowym i połącz ją:

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

Lub po prostu umieść funkcję w .bashrc, jeśli chcesz, ale w ten sposób prawdopodobnie potrzebujesz instrukcji eksportu po funkcji, nie jestem pewien, a jeśli plik zostanie zaktualizowany, prawdopodobnie utracisz twoje funkcje. Nie jestem również pewien: D.
Pamiętaj, że musisz ponownie uruchomić terminal podczas edycji pliku .bashrc lub pliku „niestandardowego”.

Federico Gallo
źródło
1

Dla mnie, używając PuTTY przeciwko CentOS 7, clear pozostawia tylko polecenie wyczyść w przewijaniu, ale uruchamianie „wyczyść i wyczyść”, dwa wystąpienia polecenia wyczyść w tym samym czasie, całkowicie usuwa przewijanie i nie pozostawia mi paska przewijania. Spróbuj tego. To dziwne rozwiązanie, ale żadne z nich nie usunęło tak skutecznie przewijania i tak się dzieje.

Zoltan Shapiro
źródło
0

Dodano, aby ~/.inputrcpowiązać pełne rozliczenie z F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'
Velkan
źródło
0

W Fedorze 30 usuwanie historii odbywa się poprzez usunięcie pliku $ HOME / .bash_history. Najłatwiejszym sposobem wyczyszczenia pliku historii terminala za pomocą klawiatury jest:

  • Naciśnij Alt+, F4aby zamknąć każde okno terminala GNOME, przechodząc między oknami za pomocą Alt+ Tablub Alt+ Shift+ Tabw razie potrzeby. (Wszystkie okna terminali muszą być zamknięte, ponieważ plik .bash_history jest tworzony lub aktualizowany po ich zamknięciu).
  • Naciśnij Alt+ F2.
  • Wpisz nautilusi naciśnij Enterklawisz, aby otworzyć aplikację Pliki (GNOME) (wcześniej znaną jako Nautilus).
  • Naciśnij Ctrl+ w Hrazie potrzeby, aby wyświetlić ukryte pliki.
  • Wpisz .bash_history(które powinno pojawić się na pasku wyszukiwania, jeśli zostanie wpisane natychmiast po otwarciu okna; w przeciwnym razie dostęp do paska wyszukiwania można uzyskać za pomocą Ctrl+ L).
  • Naciśnij klawisz strzałki w dół, aby wybrać plik, który powinien być jedynym wynikiem wyszukiwania.
  • Naciśnij Shift+, Deleteaby trwale usunąć plik. (Jeśli Deletezamiast tego użyjesz niezmodyfikowanego klucza, plik .bash_history będzie nadal dostępny za pośrednictwem folderu Kosz).
Patrick Dark
źródło
-2
cat /dev/null > ~/.bash_history && history -c && exit
Grzmotnąć
źródło
Możesz przynajmniej wyjaśnić i sformatować swoją odpowiedź.
Paradoks
(1) Nie jest jasne, czy OP chce usunąć pamięć powłoki (historię) poprzednich poleceń (pytanie dotyczy terminala ). Nie widać tego, ale history -czostało przedstawione w dwóch poprzednich odpowiedziach i zostały one usunięte z powodu niepoprawności odpowiedzi na pytanie. (2) Chociaż zamknięcie okna terminala (prawdopodobnie) spowoduje usunięcie pamięci terminala z poprzednich poleceń, nie jest wcale oczywiste, że OP chce to zrobić. … I PS exitNie gwarantuje się, że pojedyncze polecenie zamknie okno terminala.
G-Man