¿Cómo le digo a Zsh que escriba el historial del shell actual en mi archivo de historial?
Pregunta
Trabajo en un lugar que tiene miles de millones de herramientas que requieren toneladas de opciones, por lo que confío significativamente en la historia de mi shell. Incluso lo respaldo de vez en cuando solo para asegurarme de no perder comandos útiles y largos.
Acabo de escribir uno de estos comandos y quiero asegurarme de que esté en el archivo del historial, pero tengo un trabajo de larga ejecución en segundo plano y no puedo escribir exec zsh
. ¿Hay algo más que pueda hacer en esta situación?
(Claro, podría copiarlo y pegarlo en un archivo, pero sería más lógico que exista un comando flush-history
.)
Solución
Para escribir el historial de shell en el archivo de historial, haga
fc -W
fc
tiene algunos indicadores útiles, véalos todos en man zshbuiltins
.
También puede automatizar completamente la lectura y escritura del archivo de historial después de cada comando (compartiendo así su archivo de historial automáticamente con cada zsh en ejecución) diciendo setopt -o sharehistory
. Lea más opciones relacionadas con el historial en man zshoptions
.
Otros consejos
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).
Y usar
fc -R
para leer en el historial (después de escribirlo) en un shell zsh existente.
agregue debajo de la línea a ~ / .zshrc, ahorrará 1000 entradas que aumentemos al cambiar el valor de HISTSIZE y SAVEHIST
HISTSIZE=1000
if (( ! EUID )); then
HISTFILE=~/.zsh_history_root
else
HISTFILE=~/.zsh_history
fi
SAVEHIST=1000