Jak wyczyścić historię terminalu?

93

Używam Linux Mint 17.1 Rebecca przez około 2 dni i przypadkowo wpisałem moje hasło do terminala, który jest teraz wyświetlany na liście historii poleceń, które wcześniej wpisałem.

Chcę całkowicie wyczyścić historię terminali. Próbowałem użyć następujących poleceń w terminalu, które, jak sądzę, wyczyściłyby historię na zawsze, ale nie:

history -c
reset
tput reset

Powyższe polecenia „wyczyszczą” historię z terminala, ale kiedy wyjdę i przywołam nową, cała moja poprzednia historia wciąż tam jest i można ją ponownie wyświetlić za pomocą polecenia - history, a także naciskając strzałkę W GÓRĘ na klawiaturze . Nie chcę, aby tak się stało, dopóki całkowicie nie wyczyszczę swojej historii, a następnie chcę nadal z niej korzystać.

Jak mogę całkowicie wyczyścić moją historię terminali - na zawsze i zacząć od nowa?

Uwaga: Nie chcę wychodzić z terminalu bez zapisywania historii, po prostu wyczyść ją na zawsze w tym jednym przypadku.

Szambala
źródło
1
sed -i "s/$your_pass//g" ~/.bash_history...
jasonwryan
3
@ jasonwryan To samo nie rozwiązałoby problemu, ponieważ polecenie sed trafiłoby do historii powłoki.
Gilles
1
Próbowałem użyć kodu z @jasonwryan, ale otrzymałem: sed: -e wyrażenie # 1, char 0: brak poprzedniego wyrażenia regularnego, które, jak sądzę, wiem, dlaczego, i to doprowadziło mnie do wymyślenia tego z wyszukiwania i trochę bałaganu: cat / dev / null> ~ / .bash_history && history -c && exit
Shambhala
1
@Gilles: masz rację: przed poleceniem powinna znajdować się spacja ...
jasonwryan

Odpowiedzi:

145

resetlub tput resettylko robi rzeczy z terminalem. Historia jest całkowicie zarządzana przez powłokę, która pozostaje nienaruszona.

history -cczyści twoją historię w bieżącej powłoce. Wystarczy (ale przesada), jeśli właśnie wpisałeś hasło i nie opuściłeś tej powłoki lub nie zapisałeś jej historii jawnie.

Po wyjściu z bash historia jest zapisywana w pliku historii, który domyślnie znajduje się .bash_historyw twoim katalogu domowym. Dokładniej, historia utworzona podczas bieżącej sesji jest dołączana do pliku; wpisy, które są już obecne, pozostają nienaruszone. Aby zastąpić plik historii historią bieżącej powłoki, uruchom history -w.

Zamiast usuwać wszystkie wpisy historii, możesz otworzyć .bash_historyw edytorze i usunąć wiersze, których nie chcesz zachować. Możesz to zrobić w bashu, mniej wygodnie, historywyświetlając wszystkie wpisy, a następnie history -dusuwając wpisy, których nie chcesz, a na koniec history -wzapisując.

Pamiętaj, że nawet po edycji pliku historii możliwe jest, że Twoje hasło nadal znajduje się gdzieś na dysku z wcześniejszej wersji pliku. Nie można go już odzyskać przez system plików, ale może być nadal możliwe (ale prawdopodobnie niełatwe) znalezienie go poprzez bezpośredni dostęp do dysku. Jeśli użyjesz tego hasła w innym miejscu, a dysk zostanie skradziony (lub ktoś uzyska dostęp do dysku), może to być problem.

Gilles
źródło
1
Podoba mi się twoja odpowiedź i zaakceptuję, ponieważ powiedziałeś mi kilka rzeczy, o których nie wiedziałem, że są bardzo przydatne. Zmienię także hasło!
Shambhala
Najpierw wpisz, historyaby sprawdzić zawartość dziennika historii i numery linii, które chcesz usunąć, przypuszczalnie chcesz usunąć numer linii 1000 z dziennika historii, a następniehistory -d 1000
Claude COULOMBE
Jeśli bezpośrednio zmodyfikuję plik .bash_history, polecenie historii nadal wyświetla polecenia takie, jakie były przed modyfikacją, dopóki się nie wyloguję / nie
zaloguję
35

Próbowałem historii -c, ale historia powraca, gdy wychodzimy i otwieramy ponownie. Pomogło mi to.

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

Spowoduje to wyczyszczenie historii zapisanej w pliku historii, a także historii w bieżącej sesji (dzięki czemu nie zostanie zapisana w pliku po bashwyjściu). Następnie wychodzi ze skorupy. Następna sesja powłoki nie będzie miała historii.

athul
źródło
18

Zamiast usuwać wszystkie wpisy historii, wpisz następujące polecenia w swoim terminalu:

  1. history -c (dla historii usuwania)
  2. history -w (zapisz historię)
użytkownik171143
źródło
Nie wystarczy to z zsh, jeśli ustawiono opcję inc_append_historylub share_history.
saga
5

Ponieważ występuje tutaj problem bezpieczeństwa, należy rozważyć bezpieczne usunięcie pliku historii.

$ shred -u ~/.bash_history && touch ~/.bash_history
C0D3R3D
źródło
3

Jako neofita, który boryka się z tym samym problemem, uciekłem się raczej do dość brutalnego sposobu usunięcia i odtworzenia pliku historii:

rm .bash_history
touch .bash_history

Działa to dla mnie bez powodowania nieprzyjemnych skutków ubocznych, o których jestem świadomy.

Hairy Joe
źródło
3

Rodzaj: history -c; rm ~/.bash_history

history -cczyści historię bieżącej sesji, rm ~/.bash_historyczyści historię długoterminową, więc history -c; rm ~/.bash_historyczyści obie.

ANTONIA
źródło
wyjaśnienie może pomóc OP lepiej zrozumieć.
Mongrel