Historia Bash
Wszelkie nowe polecenia wydane w aktywnym terminalu można dołączyć do .bash_history
pliku za pomocą następującego polecenia:
history -a
Jedyną trudną do zrozumienia koncepcją jest to, że każdy terminal ma własną listę historii bash (ładowaną z .bash_history
pliku po otwarciu terminalu)
Jeśli chcesz wyciągnąć żadnych nowych historii, który został napisany przez innych terminali w trakcie trwania tego aktywnego terminala można dołączyć zawartość .bash_history
pliku historii aktywny bash listy
history -c;history -r
Spowoduje to wyczyszczenie bieżącej listy historii, dzięki czemu nie otrzymamy powtarzającej się listy, i dołączenie pliku historii do (teraz pustej) listy.
Rozwiązanie
Możesz użyć zmiennej bash, PROMPT_COMMAND
aby wydać polecenie przy każdym nowym pytaniu (za każdym razem, gdy naciśniesz enter w terminalu)
export PROMPT_COMMAND='history -a'
Spowoduje to zapisanie każdego polecenia do pliku historii w momencie jego wydania.
Wynik
Teraz każdy nowy terminal, który otworzysz, będzie miał historię innych terminali bez konieczności korzystania z exit
nich. To jest mój preferowany przepływ pracy.
Większa precyzja
Załóżmy (z jakiegoś powodu), że masz dwa terminale, których używasz jednocześnie i chcesz, aby historia odzwierciedlała oba z nich dla każdego nowego polecenia.
export PROMPT_COMMAND='history -a;history -c;history -r'
Główną wadą jest to, że może być konieczne naciśnięcie klawisza Enter, aby ponownie uruchomić PROMPT_COMMAND, aby uzyskać najnowszą historię z przeciwnego terminala.
Możesz zobaczyć, dlaczego ta bardziej precyzyjna opcja jest prawdopodobnie przesadna, ale działa w tym przypadku użycia.