août 6th, 2009

...now browsing by day

 

Alias et paramètres en ligne de commande

jeudi, août 6th, 2009

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 :

  1. reformatter le fichier C avant de l’éditer avec la ligne :
    indent -kr -nut {nom du fichier}
  2. 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.