2009-05-09 23 views
16

Trabajo en un lugar que tiene un montón de herramientas que requieren toneladas de opciones, por lo que confío en la historia de mi caparazón de manera significativa. Incluso hago una copia de seguridad de vez en cuando solo para asegurarme de no perder comandos útiles y largos.¿Cómo le digo a Zsh que escriba el historial actual del shell en mi archivo de historial?

Acabo de tipear uno de estos comandos y quiero asegurarme de que esté enrojecido en el archivo de historial, pero tengo un trabajo de larga duración en segundo plano y no puedo escribir exec zsh. ¿Hay algo más que pueda hacer en esta situación?

(Claro, yo podría copiar y pegar en un archivo, pero sería más lógico que no existiendo un comando flush-history.)

Respuesta

25

Para escribir la historia de la cáscara en el archivo histórico, hacen

fc -W 

fc tiene algunos indicadores útiles, ver todos en man zshbuiltins.

También puede automatizar completamente la lectura y escritura del archivo de historial después de cada comando (por lo tanto, compartir su archivo de historial automáticamente con cada zsh en ejecución) diciendo setopt -o sharehistory. Lea más opciones relacionadas con la historia en man zshoptions.

+1

Vaya, parece que no puedo leer una página de manual. ¡Gracias! –

+0

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

13

Yo también acabo de encontrar:

setopt INC_APPEND_HISTORY 

De 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

y el uso

fc -R 

para leer en la historia (después de escribirlo) en una cáscara de zsh existente .

0

Appen debajo de la línea a ~/.zshrc, se guardará la entrada 1000 aumentamos cambiando el valor de HISTSIZE y SAVEHIST

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