Mam kilka pytań na temat historii terminala lub wiersza poleceń, która jest przechowywana ~/.bash_history
.
Widzę plik w terminalu z
history
poleceniem, ale jeśli spróbuję go otworzyć,gedit bash_history
plik jest całkowicie pusty. Dlaczego?Znalazłem sposób usunięcia określonej liczby wierszy w pliku z terminala za pomocą tej linii kodu:
for i in {1..N}; do history -d N; done
gdzie N to liczba wierszy (lub poleceń), które chcesz usunąć, ale teraz plik historii pokazuje to ostatnie polecenie i nie jest to zbyt mądre, jeśli próbujesz ukryć swoje rzeczy. Pytanie brzmi: jak mogę podać ostatnią linię kodu i upewnić się, że nie zostanie ona nagrana?
command-line
bash
gedit
bash-history
NIE WIEM
źródło
źródło
Odpowiedzi:
Właśnie zapomniałeś poprzedniej kropki, polecenie otwarcia pliku historii terminali (bash) to
Ten plik jest aktualizowany tylko po zamknięciu terminala.
Aby usunąć 10 ostatnich wierszy z tego pliku i nie rejestrować samego polecenia, otwórz nowy terminal i wykonaj następujący łańcuch poleceń:
lub
lub
sed
lubhead
odpowiednio usuwa wybrane linie z~/.bash_history
,history -c
czyści historię terminala iexit
zamyka ją.źródło
for
+sed
:head -n -N
gdzie wielkimi literamiN
jest liczba linii do usunięcia. stackoverflow.com/a/13380679/711006head -n -N testfile > testfile
po prostu usuwa plik! Dodałem obejście, jednak z pewnością nie jest ono krótsze.head
nie może tak działać w miejscused
. Szukałem przede wszystkim jednegosed
polecenia zastępującego twojąfor
pętlę. Na stronie, którą utworzyłem link, jest kilka opcji, ale nie wyglądają one tak zrozumiale jak Twój kod.Plik bash_history jest plikiem ukrytym, zaczynającym się od kropki. Musisz zrobić
Spowoduje to otwarcie pliku w gedit.
źródło
Jeśli chcesz usunąć tylko niektóre części dziennika poleceń, powyższe metody są w porządku. Jeśli chcesz zatrzymać rejestrowanie poleceń dla określonej sesji bash, wydaj polecenie
Aby być bardziej drastycznym, jeśli nie chcesz, aby którekolwiek z twoich poleceń były rejestrowane , możesz to zrobić
Zauważ, że pierwsza metoda byłaby skuteczna tylko dla jednej sesji, podczas gdy druga metoda zatrzymałaby rejestrowanie poleceń dla wszystkich przyszłych sesji.
źródło
Zdaję sobie sprawę, że ma to już zaakceptowaną odpowiedź, ale tak właśnie robiłem od lat 80. To świetny sposób na ukrycie swoich utworów i podejście wielofazowe. W przeważającej części jest to ten, który nie jest zauważany, chyba że ktoś naprawdę zwraca uwagę. Oto jak to się robi.
Otwórz terminal / powłokę / sesję i wykonaj:
wyjdź z powłoki otwórz terminal / powłokę / sesję i wykonaj: Oto kilka kreatywnych sposobów na trwałe usunięcie historii
1:
2 (stwórz fałszywą historię)
następnie na wszelki wypadek:
wyjdź z muszli
otwórz nową powłokę i wpisz
co czyni go mniej zauważalnym, jeśli wykonamy ls -ratl, ~ / .bash_history ostatecznie zniknie w grzechotce listy katalogów. Nie pojawi się jako link, który przyciągnie niepotrzebną uwagę. Większość ludzi nie robi -a na swoim katalogu głównym, co jest przydatne, gdy pożądana jest emulacja.
Minusem tego podejścia jest to, że tracisz zdolność do powrotu i odzyskania swojej historii. Rzeczywisty plik ~ / .bash_history może również znaleźć się na górze listy katalogów, ponieważ z czasem może skończyć się naprawdę stara data modyfikacji, co samo w sobie może prowadzić do odkrycia, że coś jest nie tak.
źródło
9999999 dd
do usunięcia wszystkich wierszy z pliku:%d
,:1,$d
lubdG
1) Uruchom
sh
; powoduje to powstanie skorupy popiołu, która w ogóle nie zapisuje historii. Edytuj stamtąd2) Dodaj wiersz
HISTCONTROL=ignoreboth
do.bashrc
i zrób,exec bash
aby trwale zastąpić bieżącą powłokę ponownie zainicjalizowaną, a następnie wykonaj wszystkie polecenia, których nie chcesz rejestrować, używając spacji wiodącej.źródło
ponieważ nie mogę jeszcze komentować, dodam moje komentarze jako odpowiedź:
man history
odpowie na wszystko.odpowiedź na nr 1 jest taka, że historia jest w pamięci.
history -a
aby natychmiast zapisać do pliku.history -w
również zaoszczędzi, ale może popsuć inne sesje.odpowiedź # 2
history -a
:, gedit, usuń wiersze, które chcesz,history -r
źródło
Historia nie jest zapisywana, dopóki nie wylogujesz się z powłoki. Spróbuj wylogować się z powłoki, a następnie ponownie spójrz na .bash_history. Powinna tam być historia poleceń.
źródło