Si vous utilisiez des fichiers .BAT pour créer des raccourcis pour de
longues lignes de commandes (moi-même j'en ai fait pas mal), vous
pouvez atteindre ce but en insérant des lignes d'alias appropriés
(cf. l'exemple ci-dessus) dans le profile
ou le
.bash_profile
. Mais si vos .BAT étaient plus compliqués, alors
vous adorerez le langage de script que vous offre le shell :
il est aussi puissant que ce bon vieux QBasic, si ce n'est plus. Il
possède des variables, des structures comme while, for, case,
if... then... else
et des tas d'autres fonctionnalités : il peut être
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 c'est d'écrire un fichier ASCII contenant les
instructions, de le sauver, et de le rendre exécutable à l'aide de la
commande chmod +x <fichierscript>
. Pour l'exécuter, tapez son nom.
Un mot d'avertissement. L'éditeur du système s'appelle vi
, et,
d'après mon expérience, la plupart des nouveaux utilisateurs le
trouvent très ardu. Je ne m'étendrai pas sur son utilisation, veuillez
consulter le livre de Matt Welsh ou faire une recherche sur le Net. Je
me contenterai de dire que :
i
puis votre texte ;x
;vi
sans enregistrer, tapez <ESC> puis
:q!
;:wq
.joe
: en le lançant avec la
commande jstar
, vous obtiendrez les mêmes raccourcis-clavier que
ceux de l'éditeur de DOSWin. jed
en mode WordStar ou IDE est
même mieux. Veuillez consulter la section
Où trouver les applications pour savoir où obtenir ces éditeurs.L'écriture de scripts sous bash
est un sujet tellement vaste
qu'il nécessite un livre en lui-même, et je ne creuserai pas le sujet
plus avant. Je me contenterai de vous donner un exemple de
shell-script duquel vous pourrez extraire quelques règles de base :
#!/bin/sh # exemple.sh # Je suis un commentaire. # Ne changez pas la premiere ligne, elle doit se trouver a cet endroit. echo "Ce systeme est : `uname -a`" # utilise la sortie de la commande echo "Mon nom est $0" # variables predefinies echo "Vous m'avez transmis les $# parametres suivants : "$* echo "Le premier parametre est : "$1 echo -n "Quel est votre nom ? " ; read votre_nom echo notez la difference : "salut $votre_nom" # citation avec " echo notez la difference : 'salut $votre_nom' # citation avec ' REPS=0 ; FICS=0 for fic in `ls .` ; do if [ -d ${fic} ] ; then # si fic est un repertoire REPS=`expr $REPS + 1` # REPS = REPS + 1 elif [ -f ${fic} ] ; then FICS=`expr $FICS + 1` fi case ${fic} in *.gif|*jpg) echo "${fic}: image" ;; *.txt|*.tex) echo "${fic}: fichier texte" ;; *.c|*.f|*.for) echo "${fic}: fichier source" ;; *) echo "${fic}: fichier generique" ;; esac done echo "il y a ${REPS} repertoires et ${FICS} fichiers" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # code de retour de la derniere commande echo "ZxY--!!!WKW introuvable" fi echo "ca suffit... tapez 'man bash' pour en savoir plus."
Sous UNIX, le langage du système est le C, que vous l'aimiez ou non. Des douzaines d'autres langages (Java, FORTRAN, Pascal, Lisp, Basic, Perl, awk...) sont également disponibles.
En partant du principe que vous connaissez le C, voici quelques lignes
directrices pour ceux d'entre vous qui ont été trop gâtés par le Turbo
C++ ou l'un de ses cousins sous DOS. Le compilateur C de Linux
s'appelle gcc
et n'est pourvu d'aucun des gadgets qui
accompagnent en général ses équivalents DOS : pas de IDE
(Integrated Development Environment ou environnement de
développement intégré), ni d'aide en ligne ou de débogueur intégré
etc. Il s'agit juste d'un compilateur en ligne de commande brut de
décoffrage, très puissant et efficace. Pour compiler votre
hello.c
de base, vous ferez :
$ gcc hello.c
ce qui créera un fichier exécutable appelé a.out
. Pour donner
un nom différent à l'exécutable, faites :
$ gcc -o hola hello.c
Pour intégrer une bibliothèque lors de l'édition de liens, ajoutez l'option -l<nomdebibli>. Par exemple, pour intégrer la bibliothèque mathématique :
$ gcc -o progmath progmath.c -lm
(L'option -l<nomdebibli>
oblige gcc
à intégrer la
bibliothèque /usr/lib/lib<nomdebibli>.so
; ainsi,
-lm
intègre /usr/lib/libm.so
).
Jusque-là, tout va bien. Mais lorsque votre programme se compose de
plusieurs fichiers source, vous aurez besoin de l'utilitaire
make
. Supposons que vous ayez écrit un analyseur d'expresssions :
son fichier source s'appelle parser.c
et il inclut (par
#include
) deux fichiers d'en-tête, parser.h
et
xy.h
. Ensuite, vous souhaitez utiliser les routines de
parser.c
dans un programme, disons calc.c
, qui à son tour
inclut parser.h
. Quel bazar ! Que faut-il faire pour compiler
calc.c
?
Vous devrez écrire un Makefile
, c'est ainsi qu'on l'appelle, qui
apprenne au compilateur quelles sont les dépendances entre fichiers
source et fichiers objet. Dans notre exemple :
# Voici Makefile, utilise pour compiler calc.c # Appuyez sur <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.
Enregistrez ce fichier sous le nom Makefile
et faites make
pour compiler votre programme ; une alternative est de l'enregistrer
sous calc.mak
et de taper make -f calc.mak
, et, bien sûr,
LPM. Vous pouvez accéder à quelques aides sur les fonctions C, qui se
trouvent dans les pages du man
, à la section 3, par exemple,
$ man 3 printf
Pour déboguer vos programmes, utilisez gdb
. Faites info
gdb
pour apprendre à vous en servir.
De nombreuses bibliothèques sont disponibles ; les premières d'entre
elles qui vous seront utiles sont ncurses
(effets en mode texte),
et svgalib
(graphismes en mode console). Si vous vous sentez
assez enhardi pour aborder la programmation X11 (ce n'est pas si
difficile que cela), il existe des bibliothèques qui transforment
l'écriture de programmes X11 en une promenade de santé. Regardez donc
du côté de
http://www.xnet.com/ blatura/linapp6.html en
n'oubliant pas que Gtk devient un standard Linux.
Beaucoup d'éditeurs peuvent faire office d'IDE ; emacs
et
jed
, par exemple, sont capables de mettre en évidence la syntaxe,
faire de l'indentation automatique etc. Autrement, rapatriez le
paquetage rhide
à partir de
ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/.
C'est un clone de l'IDE de Borland, et vous devriez l'apprécier.