Page suivante Page précédente Table des matières
7. Un peu de programmation
7.1 Les shell-scripts : des fichiers .BAT dopés aux stéroïdes
Si vous utilisiez les fichiers .BAT pour créer des raccourcis pour de longues lignes de commande (c'est ce que je faisais beaucoup moi-même), ce but peut être atteint en insérant des lignes alias appropriées (cf. les exemples ci-dessus) dans
profileou.profile. Mais si vos .BAT étaient plus compliqués, alors vous aimerez le langage de commandes que vous offre le shell : il est aussi puissant que le QBasic, sinon plus. Il a des variables, des structures comme while, for, case, if... then... else, et un tas d'autres caractéristiques : il peut constituer une bonne alternative à un ``vrai'' langage de programmation.Pour écrire un script, l'équivalent d'un fichier .BAT sous DOS, tout ce que vous avez à faire est d'écrire un fichier ASCII standard contenant les instructions, de le sauver, et de le rendre exécutable avec la commande
chmod +x <fichierscript>. Pour l'exécuter, tapez son nom.Quelques mots de mise en garde. L'éditeur du système est appelé
vi, et, d'après mon expérience, la plupart des nouveaux utilisateurs le trouve très difficile à utiliser. Je ne vais pas expliquer comment l'utiliser, parce que je ne l'aime pas et que je ne l'utilise pas, alors voilà. Lisez le ``Linux installation...'' de Math Welsh p. 109 (vous feriez mieux de mettre la main sur un autre éditeur commejoeouemacspour X.) Je me contenterai de dire que :
- pour insérer du texte, tapez 'i' puis votre texte;
- pour quitter
visans sauver, tapez ESC puis :q!- pour sauver et quitter, tapez ESC puis :wq
L'écriture de scripts sous
bashest un sujet tellement vaste qu'il nécessiterait un livre à lui seul, et je ne creuserai pas le sujet plus en avant. Je vous donnerai juste un exemple de shell-script, duquel vous pouvez extraire quelques règles de base :
#!/bin/sh # echantillon.sh # je suis un commentaire # ne changez pas la premiere ligne, elle doit se trouver la echo "Ce systeme est : `uname -a`" # utilise la sortie de la commande 'uname' echo "Je m appelle $0" # variables predefinies echo "Vous m avez donne les $# parametres suivants : "$* echo "Le premier parametre est : "$1 echo -n "Comment vous appelez-vous? " ; read votre_nom echo notez la difference : "salut $votre_nom" # delimitation par " echo notez la difference : 'salut $votre_nom' # delimitation par ' DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # si le fichier est un repertoire DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*jpg) echo "${file} : fichier graphique" ;; *.txt|*.tex) echo "${file} : fichier texte" ;; *.c|*.f|*.for) echo "${file} : fichier source" ;; *) echo "${file} : fichier generique" ;; esac done echo "il y a ${DIRS} repertoires et ${FILES} fichiers" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # code de sortie de la derniere commande echo "ZxY--!!!WKW not found" fi echo "Ca suffit... tapez 'man bash' si vous voulez plus d infos."
7.2 E-C-iez par vous-même
Sous UNIX, le langage système est le C, que vous l'aimiez ou le détestiez. Des tonnes d'autres langages (FORTRAN, Pascal, Lisp, Basic, Perl, awk...) sont également disponibles. NdT. : bien sûr, une version de l'environnement Java est également disponible pour Linux.
En partant du principe que vous connaissez le C, voici quelques indications pour ceux d'entre vous qui ont été trop gâtés par le Turbo C++ ou l'un de ses frères du DOS. Le compilateur C de Linux est appelé
gccet n'a pas toutes les fioritures qui accompagnent généralement ses correspondants DOS : pas de IDE, d'aide en ligne, de debugger intégré etc... C'est juste un compilateur brut en mode ligne de commande, très puissant et efficace. Pour compiler votrehello.cstandard, vous ferez :
$ gcc hello.cce qui va créer un fichier exécutable appelé
a.out. Pour donner un nom différent à l'exécutable, faites :
$ gcc -o hola hello.cPour linker un programme avec une bibliothèque; ajoutez l'option -l<nomdebiblio>. Par exemple, pour linker avec la bibliothèque mathématique :
$ gcc -o mathprog mathprog.c -lm(L'option
-l<nomdebiblio>obligegccà linker la bibliothèque/usr/lib/lib<nomdebiblio>.a; donc,-lmrenvoie à/usr/lib/libm.a.)Jusque là, tout va bien. Mais lorsque votre programme est composé de plusieurs fichiers source, vous aurez besoin de faire appel à l'utilitaire
make. Supposons que vous ayez écrit un analyseur d'expressions : son fichier source s'appelleparser.cet inclut ( #include ) deux fichiers d'en-têtes,parser.hetxy.h. Puis vous voulez utiliser les routines deparser.cdans un programme, disons,calc.c, qui inclut ( #include ) à son tourparser.h. Quel souk ! Comment devez vous faire pour compilercalc.c?Vous aurez à écrire un fichier appelé
makefile, qui apprend au compilateur les dépendances entre fichiers objet et fichiers source. Dans notre exemple :
# Voici le makefile, utilise pour compiler calc.c # Pressez la touche <TAB> aux endroits indiques! calc: calc.o parser.o <TAB>gcc -o calc calc.o parser.o -lm # calc depend de deux fichiers objet: calc.o et parser.o calc.o: calc.c parser.h <TAB>gcc -c calc.c # calc.o depend de deux fichiers source parser.o: parser.c parser.h xy.h <TAB>gcc -c parser.c # parser.o depend de trois fichiers source # fin du makefile.
Sauvez ce fichier sous le nom de
makefileet tapezmakepour compiler votre programme; sinon, sauvez le sous le nomcalc.maket tapezmake -f calc.mak, et, bien sûr, LPM.
Vous pouvez invoquer un minimum d'aide à propos des fonctions C, qui sont traitées dans les pages man, section 3, par exemple,
$ man 3 printfIl y a des tas de bibliothèques disponibles; parmi les premiers que vous voudrez utiliser il y a
ncurses, qui s'occupe des effets du mode texte, etsvgalibpour faire du graphique. Si vous vous sentez de taille à attaquer la programmation X, procurez-vousXForms(bloch.phys.uwm.edu/pub/xforms) et/ou l'une des nombreuses bibliothèques qui font de l'écriture de programmes utilisant X un jeu d'enfant. Jetez un oeil surhttp://www.xnet.com/~blatura/linapp6.html.De nombreux éditeurs peuvent fonctionner comme un IDE;
emacsetjedpar exemple, sont capables de surlignage syntaxique, d'indentation automatique etc... Autrement, récupérez le paquetagerhideà partir desunsite.unc.edu:/pub/Linux/devel/debuggers/. Il s'agit d'un clone du IDE de Borland, et il y a des chances que vous l'aimiez.
Page suivante Page précédente Table des matières