command_not_found_handle() sous bash. Si on la déclare, toute commande
non trouvée sera passée à celle-ci. Vous l'avez peut-être déjà sentie
sur certaines distributions, qui lorsque vous tapez une commande
inexistante, vous proposent des substitutions.
Il ne m'en fallait pas plus pour décider d'exploiter cela pour ajouter
une fonctionnalité de calculatrice à bash. Je trouve le support
arithmétique de ce shell décevant (ne gère que les entiers) et sa
syntaxe ne donne pas trop dans le joli. « $[ 4 - 2 ] », yuck. Comme il
n'existe pas (en tout cas sur mon poste) de nom de commande entièrement
numérique, j'ai décidé que tout ce qui commence par un chiffre (et autre
caractères d'expressions mathématiques) passerait désormais dans une
calculatrice.
Avec avoir choisi « pcalc » comme calculatrice, entre autres parce qu'il
offre un support transparent de l'hexadécimal, je peux maintenant taper
directement dans bash :
prompt> 3 + 4
--> 7 0x7 0y111
prompt> 1.5 / 2
--> 0.75 0x0 0y0
prompt> 0xaa - 1
--> 169 0xa9 0y10101001
Problème, l'opérateur classique de multiplication (*) est interprété par
le shell, il faudrait idéalement l'échapper (\*); ça m'irrite, j'ai
décidé que « x » peut aussi être utilisé pour la multiplication :
prompt> 3 x 4
--> 12 0xc 0y1100
Même problème d'échappement avec les parenthèses; on peut utiliser la paire de
crochets ([]) à la place. Notons que si on utilise les crochets au tout
début de la ligne, il faut que le caractère suivant ne soit pas une
espace (sinon on invoque la commande « [ » qui existe déjà) :
prompt> [2 + 1] ^ [ 1 + 1 ]
--> 9 0x9 0y1001
J'attache à ce courriel la fonction; il suffit de l'ajouter à votre
.bashrc et les bash démarrés ensuite pourront utiliser l'arithmétique.
--
--====|====--
--------================|================--------
Patrice Levesque
http://ptaff.ca/
wayneptaff.ca
--------================|================--------
--====|====--
--