Kiedy używamy clear
polecenia 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?
Kiedy używamy clear
polecenia 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?
Odpowiedzi:
Możesz użyć tput reset
.
Poza tym reset
i tput reset
można użyć następującego skryptu powłoki.
#!/bin/sh
echo -e \\033c
To wysyła znaki kontrolne Esc-C
do 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”.
tput reset
jest reset
co najmniej szybszy niż w Ubuntu 16.04
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.app
lub iTerm.app
wtedy Control+L
przewiniesz w górę, aby terminal wyglądał na pusty, ale Cmd+K
faktycznie 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+K
wejście, echo -e \\033c
jak wspomniano powyżej.
Cmd+K
to wszystko czego chciałem. ty
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
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.
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)
Otwórz plik ~/.inputrc
i 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:
"\e[24~"
odwzorowuje klucz F12.C-k
( Ctrl+ X) usuwa pierścień „zabicia” (pamięć kopiowania i przeszłości bash).C-u
( Ctrl+ U) Wysyła bieżącą linię do kill-ring i usunąć go.echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n
Wysył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.C-y
( Ctrl+ Y) Wkleja się uśmiercenie pierścień przechowywany przez C-u
polecenia.C-?
( Ctrl+ ?) Jest równoważne Backspacei usuwa przestrzeń wstawiony w punkcie 3 powyżej.Bibliografia:
Wpisz poniższe polecenie.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Można go również wstawić .cshrc
do pliku, aby załadować powiązanie klucza z każdym nowym terminalem.
(Tak, jest to o wiele prostsze niż w bash)
Wpisz poniższe polecenie.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Możesz edytować i zapisać funkcję, fish_user_key_bindings
aby załadować przypisanie klawiszy do każdego nowego terminala.
(Tak, jest to o wiele prostsze niż w bash)
[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”.
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.
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:
nautilus
i naciśnij Enterklawisz, aby otworzyć aplikację Pliki (GNOME) (wcześniej znaną jako Nautilus)..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).cat /dev/null > ~/.bash_history && history -c && exit
history -c
został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 exit
Nie gwarantuje się, że pojedyncze polecenie zamknie okno terminala.