Pracuję w Mac OSX, więc chyba używam bash ...?
Czasami wchodzę w coś, o czym nie chcę pamiętać w historii. Jak mogę to usunąć?
bash
shell
command-line
command-history
B Seven
źródło
źródło
Odpowiedzi:
Działania zapobiegawcze
Jeśli chcesz uruchomić polecenie bez zapisywania go w historii, dodaj je z dodatkową spacją
Aby to zadziałało trzeba albo
ignorespace
czyignoreboth
wHISTCONTROL
. Na przykład uruchomAby to ustawienie pozostało trwałe, umieść je w swoim
.bashrc
.Oczyszczanie poubojowe
Jeśli już uruchomiłeś polecenie i chcesz je usunąć z historii, najpierw użyj
aby wyświetlić listę poleceń w twojej historii. Znajdź numer obok tego, który chcesz usunąć (np. 1234) i uruchom
Ponadto, jeśli wiersz, który chcesz usunąć, został już zapisany w $ HISTFILE (co zwykle dzieje się, gdy domyślnie kończysz sesję), będziesz musiał ponownie zapisać w $ HISTFILE, lub wiersz pojawi się ponownie, gdy otworzysz nowy sesja:
źródło
history -a
, w takim przypadku jest on już zapisany w pliku historii, a nie przy wyjściu w normalnej konfiguracji. W szczególności: mywiki.wooledge.org/BashFAQ/088history -w
. W przeciwnym razie po wyjściu usunięta linia będzie nadal dostępna!history -w
pohistory -d {num}
było dokładnie tym, czego potrzebowałem - ten krytyczny smakołyk powinien zostać dodany do odpowiedzi, w przeciwnym razie użytkownik może pomyśleć, że tymczasowe usunięcie z bieżącej powłoki jest trwałe.history -w
jest niezbędny w przypadku wpisów, które zostały już zapisane w.bash_history
pliku. Jak się powielać (np. W CentOS 7 z konfiguracją zapasów): 1. zaloguj się 2. wprowadź polecenieecho foo
3. wyloguj się 4. zaloguj się ponownie 5. usuń wpis dlaecho foo
6. wyloguj się 7. zaloguj się ponownie: wpis jest nadal dostępny. W zależności od tego, jak skonfigurujesz swoją historię bash, być może możesz odtworzyć ten problem na inne sposoby - tj. Jeśli sprowokujesz zapis historii przed wylogowaniem.Aby wyczyścić całą historię, użyj
Aby usunąć pojedynczy wiersz, użyj
źródło
Mam to w swoim
~/.bashrc
, co powoduje, że polecenie$ forget
usuwa poprzednie polecenie z historiiźródło
history -d $( history | tail -n 1 | cut -f 1 -d " " )
byłoby prostsze?history | tail -n1
tohistory
samo polecenie, więc usunięcie tego numeru powoduje błędny wpis. Jednakhistory -d $( history | awk 'END{print $1-1}' )
łączy linię wybrać, pole zaznaczyć, a odejmowanie.Zawsze możesz edytować i usuwać wpisy
~/.bash_history
, co jest przydatne, gdy chcesz usunąć jeden lub więcej wpisówźródło
Jeśli chcesz zapomnieć o całej sesji bash, możesz wykonać
kill
bieżący proces bash. Ponieważ zmienna$$
przytrzymajpid
bieżącej powłoki, można zrobić:źródło
Musisz zapisać zmiany po wyczyszczeniu historii. A jeśli nie chcesz mieć w historii polecenia czyszczenia historii, musisz uruchomić polecenie w ten sposób:
history -c && history -w && logout
Powodzenia.
źródło
źródło