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
profile
ou .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 comme
joe
ou emacs
pour X.) Je me contenterai de dire que :
vi
sans sauver, tapez ESC puis :q!L'écriture de scripts sous bash
est 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."
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é gcc
et 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
votre hello.c
standard, vous ferez :
$ gcc hello.c
ce 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.c
Pour 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>
oblige gcc
à
linker la bibliothèque
/usr/lib/lib<nomdebiblio>.a
; donc, -lm
renvoie
à /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'appelle
parser.c
et inclut ( #include ) deux fichiers d'en-têtes,
parser.h
et xy.h
. Puis vous voulez utiliser les routines de
parser.c
dans un programme, disons, calc.c
, qui inclut
( #include ) à son tour parser.h
. Quel souk ! Comment
devez vous faire pour compiler calc.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 makefile
et tapez make
pour compiler votre programme; sinon, sauvez le sous le nom
calc.mak
et tapez make -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 printf
Il 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, et svgalib
pour faire du graphique. Si vous vous
sentez de taille à attaquer la programmation X, procurez-vous
XForms
(
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 sur
http://www.xnet.com/~blatura/linapp6.html
.
De nombreux éditeurs peuvent fonctionner comme un IDE; emacs
et
jed
par exemple, sont capables de surlignage syntaxique,
d'indentation automatique etc... Autrement, récupérez le paquetage
rhide
à partir de
sunsite.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.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre