Jak ręcznie zapisać historię terminali?

33

Rozumiem, że plik historii jest aktualizowany po wyjściu terminala. Ale czasami mój komputer ulega awarii, a terminal nie wychodzi prawidłowo, a potem tracę te polecenia z mojej historii, co jest denerwujące. Jak mogę sprawić, by natychmiast się spłukało, aby wpisy nadal tam były, nawet jeśli mój komputer ma problemy? W tej chwili korzystam z tego obejścia, ale uważam, że powinien istnieć lepszy sposób.

Używam gnome-terminal na Ubuntu 12.10.

wim
źródło

Odpowiedzi:

17

Odpowiedzi w linku podanym z witryny Superużytkowników niekoniecznie powinny być postrzegane jako „obejścia” historydomyślnego zachowania polecenia. Powłoka bash ma trochę rozsądnego, domyślnego zachowania.

Gorąco polecam lekturę Jak mogę uniknąć utraty historii? dla wyjaśnienia, co robią te modyfikacje history. Ponadto istnieją pewne uzasadnione obawy, aby wiedzieć, dlaczego nie jest to domyślne zachowanie historypolecenia.

  • wydajność - Ponieważ zapisujesz każde polecenie z każdego okna history -a, .bash_historyplik może się rozrosnąć i wymagać większych zasobów do załadowania powłoki bash. Może to skutkować dłuższym czasem uruchamiania (w przypadku sesji terminalowych, a nie całego uruchamiania systemu, per se.).

  • organizacja - (z powyższego artykułu) „polecenia historii jednoczesnych powłok interaktywnych (dla danego użytkownika) zostaną ze sobą powiązane. Dlatego historia nie jest gwarantowaną sekwencyjną listą poleceń, ponieważ zostały one wykonane w jednej powłoce”.

Jeśli obawiasz się o dalsze zabezpieczenie powłoki bash i. bash_historyplik poprzez inspekcję, spójrz na ten artykuł: Jak mogę zapisać historię lub „zabezpieczyć” bash przed usunięciem historii?

Czasami (np. Niestabilny system lub awaria zasilania) uznaję poniższe polecenia za przydatne.

Dodaj następujące wiersze do ~/.bashrcpliku:

unset HISTFILESIZE
HISTSIZE=3000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

shopt -s histappend

Upewnij się, że .bashrcplik źródłowy używasz poleceniasource ~/.bashrc

Kevin Bowen
źródło