2010-05-12 4 views
3

J'aimerais pouvoir parcourir mon historique de commandes et connaître le contexte à partir duquel j'ai émis diverses commandes - en d'autres termes, «dans quel répertoire étais-je? Il y a plusieurs façons d'y parvenir, mais toutes (auxquelles je peux penser) nécessiteraient de manipuler l'historique de zsh pour ajouter (par exemple) une ligne commentée avec le résultat de $ (pwd). Je pourrais créer des fonctions nommées cd & pushd & popd etc, ou je pourrais utiliser la fonction preexec() de zsh et peut-être sa fonction periodic() pour ajouter la ligne de commentaire au plus toutes les X secondes, juste avant d'émettre une commande, ou peut-être Le problème est que je ne veux pas manipuler directement le fichier historique et contourner le mécanisme d'historique du shell, mais je n'arrive pas à trouver un moyen (avec la commande fc, par exemple) de ajouter quelque chose à l'historique sans réellement le taper sur la ligne de commande. Comment pourrais-je faire ça?Comment puis-je (à partir d'un script) ajouter quelque chose à l'historique de la commande zsh?

+0

Vos changements de répertoire vont à cet historique - lorsque vous vous connectez, vous êtes à votre $ HOME - avec un fichier historique qui est infiniment long, vous pouvez toujours analyser le répertoire que vous étiez – Kimvais

+0

Oui, merci, mais il peut être un tracas. Si je tape cd/some/path/to/some/where alors tapez presque immédiatement une commande qui serait correcte. Mais en réalité, je vais avoir beaucoup de commandes cd .., popd, etc, et la commande que je me pose peut dans certains cas être une centaine ou plus après le changement de répertoire. Je cherche quelque chose qui me permet de * rapidement * et * facilement * voir où j'étais quand j'ai émis une commande. – iconoclast

+0

@Kimvais Une vue étroite de toutes les choses possibles qui peuvent se produire au cours d'une session de ligne de commande. Un script peut vous déposer dans un répertoire complètement différent. Vous ne suggérez sûrement pas d'analyser un tel script? –

Répondre

3

Vous pouvez utiliser la commande print -s (voir man zshbuiltins) pour ajouter tout ce que vous voulez à l'historique. Il y a aussi une fonction de hook que vous pouvez créer, appelée zshaddhistory (voir man zshmisc) qui peut manipuler le contenu de l'historique au fur et à mesure de sa création.

Voir my Bash history logging functions pour l'inspiration.

Questions connexes