2009-05-09 14 views
16

Lavoro in un luogo che ha migliaia di strumenti che richiedono tonnellate di opzioni, quindi mi affido alla storia della mia shell in modo significativo. Lo faccio anche ogni tanto per assicurarmi di non perdere comandi utili e lunghi.Come posso dire a Zsh di scrivere la cronologia della shell corrente nel mio file di cronologia?

Ho appena digitato uno di questi comandi e voglio essere sicuro che sia scaricato nel file di cronologia, ma ho un lavoro di lunga durata in background e non riesco a digitare exec zsh. C'è qualcos'altro che posso fare in questa situazione?

(Certo, avrei potuto copiare e incollare in un file, ma sarebbe più logico per non esistere un comando flush-history.)

risposta

25

a scrivere la storia di shell per il file di cronologia, fare

fc -W 

fc ha alcuni indicatori utili, vederli tutti in man zshbuiltins.

È inoltre possibile automatizzare completamente la lettura e la scrittura del file di cronologia dopo ogni comando (condividendo quindi il file cronologico automaticamente con ogni zsh in esecuzione) dicendo setopt -o sharehistory. Leggi altre opzioni relative alla cronologia in man zshoptions.

+1

Accidenti, sembra che io non riesco a leggere una pagina man. Grazie! –

+0

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

13

Ho anche appena trovato:

setopt INC_APPEND_HISTORY 

Da 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

e utilizzare

fc -R 

a leggere nella storia (dopo averlo scritto) in un guscio zsh esistente .

0

Appen sotto la linea a ~/.zshrc, ti farà risparmiare 1.000 ingresso aumentiamo modificando il valore di HISTSIZE e SAVEHIST

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