Vous pouvez combiner l'historique existant de Bash et les fonctionnalités de recherche d'historique. Appuyez sur Ctrl-Rpour commencer la recherche inversée incrémentielle, puis commencez à taper la partie du chemin le plus susceptible d'être unique.
Vous pouvez continuer à taper des lettres jusqu'à ce que vous reveniez à la cdcommande la plus récente impliquant ce répertoire, ou vous pouvez appuyer à Ctrl-Rnouveau pour revenir en arrière dans l'historique à la prochaine commande la plus récente correspondant à ce que vous avez tapé jusqu'à présent.
Je fais ça tout le temps.
En fait, je vais encore plus loin. Une fois que je commence à découvrir des séquences de commandes utile de garder dans l' histoire , mais ne vaut pas engager dans un script shell, je commence à les enchaîner avec &&et ;combinateurs donc je peux inverse rechercher une sous - chaîne de que l' on commande long, frappé Enteret exécuter la séquence entière à une fois que.
Par exemple, voici comment je crée et exécute l'un de mes programmes pendant le développement:
$ ( cd .. ; make install ) && ./start_my_program
Je le fais à partir du répertoire d'installation, qui se trouve sous le répertoire source de niveau supérieur. En enveloppant la partie cd, construire et installer dans un sous-shell, je m'assure que peu importe ce qui se passe au cours de ce processus, je me retrouve dans mon shell normal sans rien changer. Ce n'est que si cela réussit (&&) que je démarre le programme construit et installé. Je peux trouver cela dans mon histoire avec juste un Ctrl-Rmoment sta, c'est tout ce dont j'ai habituellement besoin pour trouver uniquement cette séquence de commandes.
Un autre exemple de la façon dont j'utilise ceci est la séquence qui va dans la construction de RPM pour ce même programme. La plupart du travail fastidieux se fait dans des scripts shell, mais il y a encore quelques commandes que je devrais normalement taper pour faire tout le travail de construction et de déploiement des RPM construits, que j'ai maintenant rarement à retaper, car Bash continue dans l'histoire pour moi.
Combinez tout cela avec export HISTSIZE=bignumet shopt histappendet vous venez de créer une mémoire de commande éléphantine.
Une autre solution que j'ai codée une fois est dans ma réponse à une autre question ici . Il peut être nécessaire de l'adapter à vos besoins et il ne gère que les cdcommandes, tandis que l'option de recherche d'historique fonctionne partout et pour chaque commande.