Comment dire à Zsh d'écrire l'historique du shell actuel dans mon fichier historique?
Question
Je travaille dans un endroit qui regorge d'outils qui nécessitent une multitude d'options. Je me fie donc beaucoup à l'histoire de ma coque. Je le sauvegarde même de temps en temps juste pour m'assurer de ne pas perdre de longues commandes utiles.
Je viens de taper une de ces commandes et je veux m'assurer que le fichier d'historique y est associé, mais j'ai un travail de longue durée en arrière-plan et je ne peux pas taper exec zsh
. Y a-t-il autre chose que je puisse faire dans cette situation?
(Bien sûr, je pourrais le copier et le coller dans un fichier, mais il serait plus logique qu'il existe une flush-history
commande.)
La solution
Pour écrire l'historique du shell dans le fichier historique, faites
fc -W
fc
a des drapeaux utiles, voyez-les tous dans man zshbuiltins
.
Vous pouvez également automatiser entièrement la lecture et l'écriture du fichier d'historique après chaque commande (pour partager automatiquement votre fichier d'historique avec chaque zsh en cours d'exécution) en indiquant setopt -o sharehistory
. Lisez plus d'options liées à l'historique dans man zshoptions
.
Autres conseils
Je viens aussi de trouver:
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).
Et utiliser
fc -R
pour lire l'historique (après l'écriture) dans un shell zsh existant.
appen dessous de la ligne ~ / .zshrc, cela économisera 1000 entrées augmentées en modifiant les valeurs de HISTSIZE et SAVEHIST
HISTSIZE=1000
if (( ! EUID )); then
HISTFILE=~/.zsh_history_root
else
HISTFILE=~/.zsh_history
fi
SAVEHIST=1000