Jak mogę zmodyfikować zawartość mojego bash_history
pliku? Jakie wartości lub zmienne kontrolują, jak długo trwa historia? Czy są jakieś inne rzeczy, które mogę zmienić, aby zapewnić lepszą kontrolę nad moją historią BASH?
11
Jak mogę zmodyfikować zawartość mojego bash_history
pliku? Jakie wartości lub zmienne kontrolują, jak długo trwa historia? Czy są jakieś inne rzeczy, które mogę zmienić, aby zapewnić lepszą kontrolę nad moją historią BASH?
HISTSIZE
iHISTFILESIZE
są jedynymi powierzchniami kontrolnymi, które musisz kontrolować, ile historii jest utrzymywane.Odpowiedzi:
Istnieją dwie zmienne, które kontrolują rozmiar historii:
i
Te dwie zmienne pozwalają kontrolować zachowanie historii. Zasadniczo
HISTSIZE
jest to liczba poleceń zapisanych podczas bieżącej sesji iHISTFILESIZE
liczba poleceń, które zostaną zapamiętane między sesjami. Na przykład:W powyższym przykładzie, ponieważ
HISTSIZE
jest ustawiony na 10,history
zwraca listę 10 poleceń. Jeśli jednak wylogujesz się, a następnie zalogujesz ponownie,history
zwróci tylko 5 poleceń, ponieważHISTFILESIZE
jest ustawiony na 5. Jest tak, ponieważ po zakończeniu sesjiHISTFILESIZE
wiersze historii są zapisywane w pliku historii (~/.bash_history
domyślnie, ale kontrolowane przezHISTFILE
). Innymi słowy, polecenia są dodawane,HISTFILE
aż osiągnie$HISTFILESIZE
linię, w którym to punkcie każda kolejna dodana linia oznacza, że pierwsze polecenie pliku zostanie usunięte.Możesz ustawić wartości tych zmiennych w swoim
~/.profile
(lub~/.bash_profile
jeśli ten plik istnieje). Nie ustawiaj ich w~/.bashrc
pierwszej kolejności, ponieważ nie mają tam ustawionej działalności, a po drugie, ponieważ spowodowałoby to inne zachowanie się przy logowaniu niż w powłokach niezalogowanych, co może prowadzić do innych problemów .Inne przydatne zmienne, które pozwalają precyzyjnie dostroić zachowanie twojej historii to:
HISTIGNORE
: Pozwala to zignorować niektóre popularne polecenia, które rzadko są interesujące. Na przykład możesz ustawić:To spowodowałoby, że każde polecenie zaczynające się od
pwd
,df
lubdu
byłoby zignorowane i nie zapisane w twojej historii.HISTCONTROL
: Ten pozwala ci wybrać sposób działania historii. Osobiście ustawiłem to,HISTCONTROL=ignoredups
co powoduje, że zapisuje zduplikowane polecenia tylko raz. Inne opcje toignorespace
zignorowanie poleceń rozpoczynających się od białych znaków,erasedups
co powoduje usunięcie wszystkich poprzednich wierszy pasujących do bieżącego wiersza z listy historii przed zapisaniem tego wiersza.ignoreboth
jest skrótem dla ignorowania i ignorowania.HISTTIMEFORMAT
: Pozwala ustawić format czasu pliku historii. Zobacz odpowiedź Pandya lub przeczytaj,man bash
aby uzyskać szczegółowe informacje.W celu dalszego dostrojenia masz:
Opcja
histappend
bash. Można to ustawić, uruchamiającshopt -s histappend
lub dodając to polecenie do swojego~/.bashrc
. Jeśli ta opcja jest ustawionaJest to bardzo przydatne, ponieważ pozwala łączyć historie różnych sesji (na przykład różne terminale).
history
Komenda ma dwa użytecznych opcji:history -a
: powoduje automatyczne zapisanie ostatniego polecenia do pliku historiihistory -r
: importuje plik historii do bieżącej sesji.Możesz na przykład dodać te dwie komendy do swojej
PROMPT_COMMAND
(która jest wykonywana za każdym razem, gdy powłoka wyświetla monit, więc za każdym razem, gdy uruchamiasz nową powłokę i po każdej komendzie w niej uruchomionej):W połączeniu zapewniają one, że każdy otwarty terminal natychmiast zaimportuje historię innych sesji powłoki. Rezultatem jest wspólna historia dla wszystkich terminali / sesji powłoki.
źródło
Domyślny rozmiar pliku historii to 500 linii. Gdy plik .bash_history osiągnie 500 linii, wczesne wpisy zostają wyeliminowane, aby zrobić miejsce dla nowszych linii, jak w FIFO. Możesz to zmienić, zmieniając wartość zmiennej,
HISTFILESIZE
która domyślnie ma wartość 500.Wpisanie a
HISTFILESIZE=10000
do twojego .bashrc zwiększy liczbę linii w pliku historii do 10000, tym samym wydłuży żywotność jego zawartości.źródło
HISTSIZE
przekroczysz limit, rozważHISTFILE
też zmianę . Jeśli uruchomiszbash --norc
HISTSIZE
, wróci do wartości domyślnej, obcinając twojeHISTFILE
przy wyjściu./etc/bash.bashrc
ustawiaHISTFILESIZE
(a możeHISTSIZE
; nie sprawdziłem, który), wtedy Bash wydaje się obcinać.bash_history
w punkcie, który czyta/etc/bash.bashrc
(lub przynajmniej w pewnym momencie, zanim nowy limit zostanie ustawiony we własnych plikach inicjujących Bash). Aby tego uniknąć, ponownie ustaw własną,HISTFILE
tak aby twoja prawdziwa historia poszła tam, a nie do.bash_history
pliku, który Bash obcina.export
tego, ponieważ spowoduje to, że będzie to widoczne dla każdej skorupy.bash_history
Przeczytaj
man bash
więcej szczegółowych informacji na temat historii bash, takich jak:Szczególnie
HISTFILESIZE
iHISTSIZE
może szukasz i pomaga.źródło