Voilà la solution pour faire un alias qui prenne en compte un paramètre : il faut savoir qu’un alias ne connait pas les paramètres qu’on lui passe. Un alias c’est vraiment, physiquement parlant, un « remplacer » de l’ordre que vous tapez.
Donc utiliser alias qui prendrait en compte un argument qu’on lui passe ?
C’est bien simple : c’est impossible. Mais on peut très facilement contourner cela.
Exemple : je développe en C, je veux tout le temps :
- reformatter le fichier C avant de l’éditer avec la ligne :
indent -kr -nut {nom du fichier}
- afficher ce fichier avec vim :
vim {nom du fichier}
La ligne de commande est donc toujours :
indent -kr -nut {nom du fichier} && vim {nom du fichier}
J’ai pensé faire un alias qui ressemblerait à cela :
alias vimi="indent -kr -nut $1 && vim $1"
Bien évidemment ça ne fonctionnera jamais.
Alors j’ai fait un tout petit script qui fonctionne très bien :
#!/bin/bash
case $# in
1) indent -kr -nut $1 && vim $1 ;;
*) echo "$0 {nom de fichier source .c / .h} ";;
esac
Et tout fonctionne !
Pour la note : indent -kr -nut {nom de fichier source .c / .h}
signifie « indenter le fichier C selon les concepts de Kernighan & Ritchie, et ne pas mettre de tabulations, mais des espaces ». Pourquoi cela ? J’ai développé un module Apache, et pour le faire proprement, j’ai suivi leurs directives : Kernighan & Ritchie, et ne pas mettre de tabulations, mais des espaces, afin de me forcer à être habitué à lire du code d’une certaine façon. Ce type d’indentation n’est pas mon préféré, mais au moins, si je lis du code source C qui n’est pas fait par moi, je m’y retrouve plus facilement.
Il y a une autre solution que la création d’un script : au lieu de faire un alias, il suffisait de faire une fonction dans le fichier de configuration du shell (.bash_profile ou .bashrc). C’est la même chose qu’un alias, mais ça accepte des paramètres.
Voici ce que ça donne :
Et c’est réglé !