Besoin
J'utilise massivement mon shell et j'utilise assez frĂ©quemment la commande watch. Elle me permet de faire des petits monitoring du pauvre par exempleâŻ:
watch -n1 "ls /toto/tata
Va vous montrer chaque second le contenu du dossier /toto/tata.
Ce que j'aime bien avec le shell, c'est que je construit incrĂ©mentalement des commandes complexes qui peuvent finir par avoir des formes plus ou moins complexesâŻ:
ma_commande | awk '$4!=3&&/toto/{a+=1;print $6}END{print "count:",a}'
Une fois que ma commande est construite, si je veux la watcher ça n'est plus trÚs pratique, il faut protéger les déjà plusieurs niveaux de protections :(
Solution
J'ai enfin pris le temps configurer mon zsh pour ça. zle est l'outil interne de zsh qui gĂšre toutes les entrĂ©es clavier, c'est l'Ă©quivalent de readline. C'est lui qu'on va utiliser pour ma solution. Il fonctionne Ă partir de widgets qui sont des fonctions shell enregistrĂ©es comme widget (grosso modo, il n'y a pas besoin d'aller plus loin pour ce qu'on va faire). On va pouvoir grĂące Ă zle associer un raccourcis clavier Ă un widget avecâŻ:
bindkey '^t' mon_widget
Pour enregistrer un widget c'est simpleâŻ:
zle -N mon_widget ma_fonction
Il ne reste plus qu'à écrire ma fonction.
Une fonction peu appeler un widget via zle (par exemple zle self-insert) et il existe pleins de widget déjà existant (tous les raccourcis de zsh sont implémentés via ces widgets).
function ma_fonction() {
zle quote-line
BUFFER="watch -n1 ${BUFFER}"
zle accept-line
}
On protÚge la ligne courante, on ajoute la commande watch avant et on exécute le tout. Une fois qu'on a mis dans son fichier .zshrc:
function watch_fonction() {
zle quote-line
BUFFER="watch -n1 ${BUFFER}"
zle accept-line
}
zle -N watch_widget watch_fonction
bindkey '^t' watch_widget
Il me suffit de faire Ctrl+t pour lancer perpétuellement ma commande.
On peut imaginer pas mal de choses possibles.
Je vous laisse avec la doc pour créer ses propres widgets.
Voir aussi
Ăa peut remplacer des systĂšme plus globaux de macros comme (entre autre)âŻ:
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.