Bash dans Fedora 19 m’énerve vraiment. Dites que je lance une commande:
echo "Hello"
Puis je lance une autre commande:
echo "World"
Maintenant, je lance à nouveau la dernière commande ( echo "World"
) à nouveau N fois en appuyant up
sur la touche de mon clavier, suivie de la touche Entrée. (Utilisation typique.)
Le problème est que chacune de ces echo "World"
commandes est insérée dans l'historique, même si elles sont identiques. Je veux simplement appuyer up
deux fois et arriver à echo "Hello"
. Au lieu de cela, je dois appuyer sur up
N + 1 fois.
Pourquoi est-ce cassé? Comment je le répare?
bash
command-history
fedora-19
Jonathon Reinhart
la source
la source
Réponses:
Enregistrer uniformément chaque nouvelle commande est délicat. Tout d'abord, vous devez ajouter
~/.profile
ou similaire:Ensuite, vous devez ajouter à
~/.bash_logout
:la source
Je ne sais pas comment résoudre ce problème, mais je vais vous proposer une solution de loin, de loin meilleure. Faites-le avec "Ctrl + r echo" et parcourez vos versions dactylographiées avec "Ctrl + r" C'est plus rapide et quand vous aurez l'astuce, vous allez l'adorer.
Exemple
Et vous n'avez pas besoin de commencer votre mot dans l'ordre, vous pouvez faire:
Si facile.
la source
Ceci est 'cassé' car chaque commande est entrée dans l'historique par défaut, comme l'a souligné @suspectus.
Vous pouvez toutefois demander à Bash d'effacer les doublons en définissant la variable Bash
HISTCONTROL
. (Documentation: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Variables ). Il s’agit d’une liste de zéro ou plusieurs mots-clés séparés par des deux-points, celle qui vous intéresse le pluserasedups
. Notez que seul l'historique saisi dans les sessions en cours est affecté. Le réglageHISTCONTROL=erasedups
ne reviendra pas et n'effacera pas les doublons de vos sessions précédentes (mais regardez ci-dessous pour une autre solution). Notez également qu'ilHISTCONTROL
s'agit d'une variable Bash et qu'il n'est pas nécessaire de l'exporter.Pour ce que ça vaut, mes réglages sont:
J'ai commencé à utiliser ces paramètres parce que de nombreuses commandes triviales et en double m'énervaient en poussant les commandes soigneusement conçues hors de la liste. Le
HISTIGNORE
paramètre ignore les commandes courtes. Je trouve que ce n'est pas beaucoup plus rapide de taper 'Flèche haut' pour récupérer une commandels
, par exemple, je préfère donc ne pas stocker de commandes du tout à une lettre. En outre, tout ce qui commence par un espace ne sera pas stocké dans l'historique. J'utilise ceci pour les commandes à jeter.Notez que les doublons peuvent encore s'accumuler si plusieurs sessions sont ouvertes en même temps. De temps en temps, je supprime les doublons du fichier d'historique avec la ligne suivante:
la source
L'historique Bash ne peut pas distinguer les commandes dupliquées. Toutes les commandes sont enregistrées dans l'historique. Une façon d'obtenir rapidement la commande requise consiste à:
tapez
ESC
, puis/hello
vous donnera la commande la plus récente avec la chaîne "hello". Utilisez la flèche vers le haut pour répertorier les commandes précédentes correspondant à la chaîne "hello". D'autres commandes vi peuvent être utilisées pour récupérer / naviguer dans les commandes.Si utile,
set -o vi
peut être ajouté à .bashrc dans votreHOME
répertoire.la source