Próbowałem wyszukać ~/.bash_history
moje ostatnie polecenia podczas sesji terminalowej, ale ich po prostu nie było. Chyba dlatego, że mam otwartych wiele sesji terminali.
Czy istnieje sposób na zsynchronizowanie (tj. Synchronizację-wypychanie lub synchronizację-wypisanie) historii poleceń bieżącej sesji terminala w pliku bash_history (bez zamykania sesji i utraty tego środowiska)?
(Pomysł byłby zdalnie podobny do tego, w jaki sposób sync
polecenie przechowuje modyfikacje systemu plików w niektórych systemach).
Wyobrażam sobie, że mógłbym ustawić bash, aby zachować historię wielu sesji, ale możliwość wypchnięcia bieżącego bufora historii byłaby nadal przydatna w scenariuszach, gdy pracujesz na nowym komputerze i przypadkowo zapomniałeś ustawić bash tak, jak byś chciał .
źródło
history -a
wbudowanego polecenia powłoki, ale po jakimś czasie otrzymuję „odmowę.bash_history
dostępu ” do pliku.Odpowiedzi:
Dodaj tę linię do
.bashrc
:Otwórz nowy terminal i sprawdź.
Wyjaśnienie
history -a
dołącza nowe wiersze historii do pliku historii.history -n
każebash
czytać wiersze, które nie są odczytywane z pliku historii do bieżącej listy historii sesji.PROMPT_COMMAND
: zawartość tej zmiennej jest uruchamiana jako zwykłe polecenie przedbash
wyświetleniem monitu. Tak więc za każdym razem, gdy wykonujesz polecenie,history -a; history -n
jest ono wykonywane, a twojabash
historia jest synchronizowana.źródło
history -a
w terminalu z niezmodyfikowanym bashrc.export PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
${PROMPT_COMMAND}
jest pusty, to oznacza błąd z powodu wiodącego;
export PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"