Comment partagez-vous l'historique entre les terminaux dans zsh?


29

Comment peut-il être réalisé pour que chaque commande saisie soit visible dans l'historique de chaque terminal ouvert?

Lorsque plusieurs terminaux sont ouverts, l'historique n'est pas partagé, c'est-à-dire que ce que vous avez entré dans l'historique d'un terminal ne s'affiche pas dans un autre. Pensez à une alternative à Bash PROMPT_COMMAND="history -a"(qui enregistre l'historique avant l'affichage de l'invite).


Voir aussi Q&A connexe et avancée: superuser.com/questions/446594/…
lumbric

Réponses:


36

Les options suivantes seraient applicables:

  • Pour enregistrer chaque commande avant son exécution (c'est différent de la solution history -a de bash):

    setopt inc_append_history
    
  • Pour lire le fichier d'historique à chaque fois, l'historique est appelé ainsi que les fonctionnalités de inc_append_history:

    setopt share_history
    

Ceux-ci peuvent être définis dans votre .zshrcfichier.

Associés à bash:


4
"SHARE_HISTORY: cette option importe à la fois de nouvelles commandes à partir du fichier d'historique et entraîne également l'ajout de vos commandes tapées au fichier d'historique (ce dernier revient à spécifier INC_APPEND_HISTORY, qui doit être désactivé si cette option est en vigueur )." (À partir de l' accentuation manuelle ajoutée), c'est-à-dire que l'option INC_APPEND_HISTORY fera ce que vous voulez.
artfulrobot du

3
En fait, seule l'option SHARE_HISTORY fera à elle seule ce que vous voulez. La phrase "qui doit être désactivée si cette option est en vigueur" se traduit par "[INC_APPEND_HISTORY] doit être désactivée si l'option [SHARE_HISTORY] est en vigueur". J'ai testé cela sur zsh 5.1.1 sur Ubuntu Xenial.
Linus Arver

1
@opert est correct: setopt share_historyc'est ce qui permettra d'atteindre le résultat souhaité. @MJB seriez-vous prêt à modifier votre réponse pour supprimer la mention de setopt inc_append_history? Il obscurcit la réponse réelle.
bonh

Les noms ne sont pas sensibles à la casse et les soulignements sont ignorés, donc si voussetopt | grep histobtenezincappendhistoryetsharehistory.
Pablo A du

4

Si vous utilisez le génial OhMyZSH de Robby Russell, il s'en occupera et plus encore.

Voir https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

Cela inclut setopt inc_append_history.


C'est la sienne. Important pour le travail en coquille.
Cees Timmerman

@CeesTimmerman corrigé, merci. C'est important pour la communication en général je crois. Qu'entendiez-vous par «Important pour le travail de shell»?
james_womack

1
Une faute de frappe dans le shell peut corrompre l'ensemble de votre système.
Cees Timmerman
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.