2009-05-09 11 views
16

Pracuję w miejscu, w którym znajdują się narzędzia, które wymagają mnóstwa opcji, więc polegam na historii mojej powłoki. Od czasu do czasu nawet wspieram go, aby upewnić się, że nie stracę przydatnych, długich poleceń.Jak mogę powiedzieć Zshowi, aby zapisał bieżącą historię powłoki w moim pliku historii?

Właśnie wpisałem jedno z tych poleceń i chcę się upewnić, że jest przepłukane do pliku historii, ale mam długą pracę w tle i nie mogę wpisać exec zsh. Czy jest coś, co mogę zrobić w tej sytuacji?

(Jasne, mogę skopiować i wkleić go do pliku, ale byłoby bardziej logiczne, bo nie istnieje polecenie flush-history.)

Odpowiedz

25

Aby napisać historię powłoki do pliku historii, zrobić

fc -W 

fc ma kilka przydatnych flag, zobacz je wszystkie w man zshbuiltins.

Możesz również w pełni zautomatyzować odczytywanie i zapisywanie pliku historii po każdym poleceniu (dzięki temu udostępnianie pliku historii automatycznie przy każdym uruchomionym zsh), mówiąc: setopt -o sharehistory. Przeczytaj więcej opcji związanych z historią w man zshoptions.

+1

Rany, wygląda na to, że nie potrafi czytać stronę podręcznika. Dzięki! –

+0

Dokumentacja: http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html#Shell-Builtin-Commands –

13

ja też po prostu znaleźć:

setopt INC_APPEND_HISTORY 

Od man zshoptions:

INC_APPEND_HISTORY 
    This options works like APPEND_HISTORY except that new history 
    lines are added to the $HISTFILE incrementally (as soon as they 
    are entered), rather than waiting until the shell exits. The 
    file will still be periodically re-written to trim it when the 
    number of lines grows 20% beyond the value specified by $SAVE- 
    HIST (see also the HIST_SAVE_BY_COPY option). 
11

I używać

fc -R 

czytać w historii (po napisaniu go) w istniejącej powłoce zsh .

0

Appen poniżej linii do ~/.zshrc, to na zaoszczędzenie 1000 wpis możemy zwiększyć poprzez zmianę wartości HISTSIZE i SAVEHIST

HISTSIZE=1000 
if ((! EUID)); then 
    HISTFILE=~/.zsh_history_root 
else 
    HISTFILE=~/.zsh_history 
fi 
SAVEHIST=1000