Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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. smile

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 smile

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.

Hors ligne