Je viens de réaliser qu'un workflow que j'utilise depuis des années ne fait pas ce qu'il est censé faire. Comme je ne m'en suis pas rendu compte depuis si longtemps, vous pourriez penser que cela ne vaut pas la peine d'y mettre beaucoup d'efforts, mais il s'avère qu'en ce moment, c'est devenu quelque peu important.
De quoi je parle ? D'accord, j'ai tmux
en cours d'exécution avec plusieurs sessions et chaque session a des fenêtres différentes et ainsi de suite. Travailler comme ça, c'est merveilleux. Il y a cependant un inconvénient. Lorsque le serveur est redémarré, pour quelque raison que ce soit, il ferme toutes mes sessions. Assez juste, ne peut être évité et ne se produit pas souvent. Cependant, la partie ennuyeuse est que tous mes zsh
ou bash
history
est parti aussi. C'est un problème. Je me fie à mon histoire, peut-être beaucoup trop.
Je contournais ce problème en appuyant sur fc -W
(en zsh
) de temps en temps. Je pensais que cela ajouterait l'historique qui est dans la mémoire et je ne perdrais alors que la partie entre ma dernière invocation de fc -W
et le redémarrage du serveur. Mais ce n'est pas ce qu'il fait. Si j'utilise fc -W
dans une fenêtre, puis fc -W
dans un autre, l'historique de la première fenêtre serait écrasé par l'historique de la deuxième fenêtre. J'aurais besoin d'utiliser fc -R
d'abord, mais cela dupliquerait tout l'historique… en gros, j'utilisais mal le fc
commander tout le temps.
Voici la question :Comment puis-je m'assurer de ne rien perdre de mon historique lorsque je suis dans tmux
et il y a une coupure de courant soudaine? Remarque :
- J'utilise l'historique infini, au cas où cela compterait.
- Perdre une partie de l'historique est acceptable, c'est-à-dire que si je dois invoquer une commande à la main (ou dans un cronjob) et que je perds la partie de l'historique depuis la dernière exécution de la commande, c'est bien.
- Quitter le terminal et en ouvrir un nouveau n'est pas la solution.
- Je ne veux pas stocker mes commandes directement dans l'historique, car cela mélange différents historiques.
- Solutions pour
bash
etzsh
sont les bienvenus.zsh
est préféré.
Modifier :Mettez en surbrillance la partie que tout le monde semble mal comprendre.
Réponse acceptée :
Dans zsh, utilisez fc -AI
pour sauvegarder votre historique, pas fc -W
. Utilisez -A
, pas -W
, sinon l'historique des autres instances de shell est écrasé. Et -I
enregistre uniquement les nouvelles entrées de l'historique depuis le dernier enregistrement.
Compte tenu de votre flux de travail, plutôt que d'enregistrer manuellement, vous devriez probablement enregistrer l'historique automatiquement. Activez le inc_append_history
option pour enregistrer chaque commande dans le fichier historique immédiatement avant son exécution.
Bien qu'il soit possible d'obtenir le même effet dans bash, il est plus difficile de partager correctement l'historique entre les instances de bash. Voir Conserver l'historique bash dans plusieurs fenêtres de terminal