#1 Le 17/10/2017, à 22:28
- regivanx
Utilisez des hashtags # dans votre historique des commandes!
Il existe des centaines, des milliers de commandes, parfois obscures, en particulier lorsque l'anglais n'est pas votre langue natale.
Aussi maintenant je tague toutes les commandes que je veux retrouver facilement:
echo hello tag! #tag #test
echo hello test! #test
Pour les retrouver sous fish shell (mon interpréteur de commandes):
history |grep -v \^history |grep \#tag |grep \#test
Ce qui signifie: chercher dans l'historique les commandes qui ne commencent pas par "history" avec les tag "#test" et "#tag". On peut ajouter autant de "grep" qu'on veut.
Vous pouvez créer une fonction pour cette commande:
function hist --argument arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 --description search in command history, height arguments, AND operator
history |grep -v \^hist |grep "$arg1" |grep "$arg2" |grep "$arg3" |grep "$arg4" |grep "$arg5" |grep "$arg6" |grep "$arg7" |grep "$arg8"
end
à enregistrer sous $HOME/.config/fish/functions/hist.fish
Vous pouvez alors chercher tout ce que vous voulez dans votre historique, dont des tags, jusqu'à huit expressions:
hist \#tag test "ech.*lo tag!"
Je peux ensuite copier-coller la ligne de commande qui m'intéresse avec Byobu.
Pour les retrouver sous bash, vous êtes obligé de sauvegarder manuellement votre historique, de redémarrer bash ou de configurer votre .bashrc. Pour la sauvegarde manuelle:
history -a
Et pour chercher:
cat $HISTFILE |grep -v "^cat \$HISTFILE" |grep \#test |grep \#tag
Mais je ne suis pas un spécialiste de bash.
Hors ligne
#2 Le 16/12/2017, à 15:57
- nam1962
Re : Utilisez des hashtags # dans votre historique des commandes!
Intéressant, merci !
[ Modéré ]
Hors ligne
#3 Le 20/12/2017, à 08:52
- DonutMan75
Re : Utilisez des hashtags # dans votre historique des commandes!
Hello,
pour améliorer ton script version bash, je propose d'utiliser la variable HISTCONTROL
$ export HISTCONTROL=ignorespace
$ history |grep -v \^history |grep \#tag |grep \#test
La différence est subtile : si on ajoute un espace AVANT l'appel de history, la commande n'est pas archivée dans $HISTFILE. On évite ainsi de trop rapidement saturer le fichier d'historique et de perdre notre commande initiale.
Chez moi, l'historique ne garde par exemple que les 1000 dernières commandes. Ca peut poser soucis si je créé une commande taguée et que je l'appelle 999 fois d'affilée.
Mais pour rendre la modif totalement pérenne, mieux vaut créer sa fonction ou son alias dans bashrc.
En tout cas, merci pour le partage
Bonne journée à tous !
Donut
Hors ligne
#4 Le 20/12/2017, à 09:30
- bruno
Re : Utilisez des hashtags # dans votre historique des commandes!
Bonjour,
C'est une idée intéressante. L'historique de commande est particulièrement utile pour éviter de ressaisir des commandes longues et fastidieuses.
Chez moi la variable HISTCONTROL est réglé pour ne pas enregistrer les doublons, ce qui évite le souci évoqué par DonutMan75 :
HISTCONTROL=ignoredups:ignorespace
Pour ceux qui l’ignoreraient, on peut rappeler des commandes de l'historique de différentes façons :
- les flèches haut et bas du clavier pour naviguer dans l'historique : pratique pour rappeler une commande tapée récemment ;
- CTRL+R pour rechercher dans l'historique en tapant les premières lettres de la commande recherchée : très pratique pour rappeler une commande utilisée fréquement (c'est a peu près équivalent à history | grep motif )
- l'usage des ! pour l'expansion, c'est très puissant pour rappeler et modifier une commande.