Existe-t-il un moyen de limiter la fonction d'historique d'un shell moderne à un chemin?
Mes contextes de travail sont divisés en chemins sur le système de fichiers, et le modèle d'activité du shell, comme les commandes émises à plusieurs reprises, a tendance à être distinct pour chaque «projet». Ce serait bien si je pouvais étendre la fonction d'historique aux commandes issues du chemin actuel (ou du sous-chemin).
shell
directory
command-history
cd-command
sohocoke
la source
la source
Pas une bonne réponse mais une alternative si vous utilisez
bash
comme shell: vous pouvez créer un alias dans votre.bashrc
.Par exemple:
Ensuite, si vous tapez
a
:history -w
)history -c
)/home/user/.a_history
et lu (history -r
)la source
HISTFILE
. Il n'y a aucune raison de l'exporter vers d'autres programmes, et ~ / .bashrc est exécuté pour chaque processus bash interactif, donc votre code pour le configurer sera exécuté dans chaque bash de toute façon. En général, si une variable définie par le shell n'est pas exportée par défaut, vous devez rarement l'exporter.Si vous utilisez ZSH, jetez un œil à ce petit plugin que j'ai récemment écrit pour gérer ceci:
https://github.com/ericfreese/zsh-cwd-history
Il stocke un
HISTFILE
répertoire distinct pour chaque répertoire dans lequel vous avez exécuté des commandes et ajoute unchpwd
crochet pour basculer entreHISTFILE
s lorsque vous changez de répertoire.Il fournit également un widget zle que vous pouvez lier à une pression de touche qui basculera
HISTFILE
entre votre "global" d'origineHISTFILE
et leHISTFILE
pour votre répertoire de travail actuel.Il était à l'origine basé sur le plug - in d' historique par répertoire de Jim Hester , mais a depuis été réécrit à partir de zéro pour résoudre de nombreux problèmes avec ce plugin.
la source
J'ai écrit un plugin ZSH qui fait ce que vous voulez: https://github.com/tymm/zsh-directory-history
Contrairement à d'autres solutions, mon plugin revient automatiquement à l'histoire globale. Cela signifie que vous n'avez pas à basculer entre l'historique du répertoire et l'historique global.
Cependant, les autres solutions sont un peu plus légères, je suppose.
la source