Académique Documents
Professionnel Documents
Culture Documents
Introduction aux scripts shell
plus
Accueil Cours Reprenez le contr ô '
le à l aide de Linux ! Introduction aux scripts shell
'
Vous venez d apprendre à utiliser un é diteur de texte puissant comme Vim . Cela va vous ê
tre particuli èrement utile pour les
chapitres à venir .
' '
Imaginez un minilangage de programmation int é é gr à Linux . Ce n est pas un langage aussi complet que peuvent l ê tre le C ,
le C ++ ou le Java par exemple , mais cela permet d automatiser la plupart de vos tâches' :
sauvegarde des donn é ,
es
'
à apprendre . En e ff ,
et toutes les commandes que l on utilise dans les scripts shell sont des commandes du syst ème que
vous connaissez d é : ls ,
jà cut , grep , sort …
premier .
Ensuite , nous r é
aliserons notre tout premier script shell qui a ffiche un message à l 'é … cran et nous pourrons alors passer
' - ' ?
Qu est ce qu un shell
D è
s le d é but de ce livre , '
j ai fait la distinction entre les deux environnements tr ès di ffé rents disponibles sous Linux :
'
l environnement console ;
'
l environnement graphique .
environnement graphique .
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 1/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
'
Je vous avais dit qu il y avait plusieurs environnements graphiques disponibles ( Unity , KDE , XFCE …) ' '
mais qu il n y avait
'
qu une seule console . '
J ai menti .
La di ffé rence est moins tape à l - - 'œ il que dans le mode graphique (ù'
o l on voit tout de suite que les menus ne sont pas à la
m ê
me place , par exemple ).
La console a toujours un fond noir et un texte blanc , je vous rassure ( quoique ça se personnalise , ).
ça En revanche , les
fonctionnalit é
s o ff '
ertes par l invite de commandes peuvent varier en fonction du shell que l on utilise ' .
Que faut il savoir - ? Tout d abord que l anc ' ' ê tre de tous les shells est le sh (
Bourne Shell ). 'C est le plus vieux et il est install é
sur tous les OS bas é s sur Unix . Il est n é anmoins pauvre en fonctionnalit é s par rapport aux autres shells .
Le bash ( Bourne Again Shell ) est le shell par d é faut de la plupart des distributions Linux mais aussi celui du terminal de Mac
OS X . '
Il y a fort à parier que c est celui que vous utilisez en ce moment sous Linux .
Le bash est une am é lioration du sh .
Voici dans les grandes lignes comment ont é volu é les shells . Chacun h é rite de la plupart des fonctionnalit é
s de son anc ê tre
(figure suivante ).
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 2/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
À quoi peut bien servir le sh aujourd hui alors ' , si bash est par d éfaut sous Linux ?
sh reste toujours plus r épandu que bash . ,
En fait vous pouvez ê û
tre s rs que tous les OS bas é s sur Unix poss èdent sh , mais ils
'
n ont pas tous forc é ment bash . Certains OS bas é s sur Unix , notamment les OS propri é taires ( AIX et Solaris …), utilisent
'
d autres types de shells ; le ksh y est par exemple tr è é
s r pandu .
commandes ( '
comme l illustre la figure suivante ).
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 3/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
'
C est aussi le programme qui est capable par exemple de :
se souvenir quelles é è
taient les derni res commandes tap é es ( vous remontez dans votre historique en appuyant sur
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 4/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 5/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
autocompl éter une commande ou un nom de fichier lorsque vous appuyez sur Tab ( figure suivante );
g é rer les processus (
envoi en arri è -
re plan , mise en pause avec Ctrl + Z …) ;
î
rediriger et cha ner les commandes ( les fameux symboles >, <, |, .) ; etc
,
Bref le shell fournit toutes les fonctionnalit é s de base pour pouvoir lancer des commandes .
Souvenez vous - : nous avions modifi é un fichier .bashrc dans un des premiers chapitres ( celui o ù nous avons appris à
utiliser Nano ). Le .bashrc est le fichier de configuration du bash que Linux vous fait utiliser par d éfaut . Chaque personne
peut avoir son .bashrc pour personnaliser son invite de commandes , ses alias , .
etc
# apt‐get install ksh
$ chsh
m ê
me selon que vous utilisez sh , bash , ksh , etc .
Il est possible d 'é crire des scripts sh par exemple . Ceux là - , nous sommes s û '
rs qu ils fonctionnent partout car tout le monde
ergonomique .
on le trouve par d é faut sous Linux et Mac OS X ( cela couvre assez de monde !) ;
il rend l 'é criture de scripts plus simple que sh ;
il est plus r épandu que ksh et zsh sous Linux .
,
En clair le bash est un bon compromis entre sh ( le plus compatible ) et ksh / (zsh plus puissants ).
Notre premier script
Nous allons commencer par é crire un premier script bash tout simple . Il ne sera pas r é volutionnaire mais va nous
Cr é ation du fichier
nouveau fichier à cr é : er
$ vim essai.sh
Si essai.sh '
n existe pas , il sera cr éé ( ce qui sera le cas ici ).
' J ai donn é '
ici l extension .sh .
à mon fichier On le fait souvent par convention pour indiquer que c est un script '
shell , mais sachez que ce n est pas une obligation ' . '
Certains scripts shell n ont d ailleurs pas d extension du tout ' ' .
'
J aurais donc pu appeler mon script essai tout court .
Vim est maintenant ouvert et vous avez un fichier vide sous les yeux .
La premi è
re chose à faire dans un script shell est d indiquer ' … quel shell est utilis é. En e ff ,
et '
comme je vous l ai dit plus t ô,
t
la syntaxe du langage change un peu selon qu on utilise sh ' , bash , ksh , etc.
En ce qui nous concerne , nous souhaitons utiliser la syntaxe de bash , plus r é pandu sous Linux et plus complet que sh . Nous
#!/bin/bash
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 7/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
/bin/bash peut ê tre remplac é par /bin/sh si vous souhaitez coder pour sh , /bin/ksh pour ksh , etc .
Bien que non indispensable , cette ligne permet de s assurer que le script est bien ex ' é cut é avec le bon shell .
'
En l absence de cette ligne , ' '
c est le shell de l utilisateur qui sera charg é. Cela pose un probl è
me : si votre script est é
crit
'
pour bash et que la personne qui l ex é cute utilise ksh , il y a de fortes chances pour que le script ne fonctionne pas
correctement !
La ligne du sha bang permet donc de - « charger » le bon shell avant l ex ' é cution du script . À partir de maintenant , vous
Ex écution de commandes
' !
ls :
pour lister les fichiers du r é pertoire .
cd :
pour changer de r é
pertoire .
mkdir : pour cr éer un r é pertoire .
grep :
pour rechercher un mot .
sort :
pour trier des mots .
etc .
,
Bref tout ce que vous avez appris , vous pouvez le r é utiliser ici !
Allez , on va commencer par quelque chose de tr è s simple : un ls . On va donc cr éer un script bash qui va juste se
'ff
#!/bin/bash
ls
'
C est tout !
Les commentaires
Notez que vous pouvez aussi ajouter des commentaires dans votre script . Ce sont des lignes qui ne seront pas ex écut é
es
#!/bin/bash
# Affichage de la liste des fichiers
ls
Vous avez s û rement remarqu é que la ligne du sha bang commence aussi par un - #… Oui , '
c est un commentaire aussi , mais
consid érez que c est un commentaire ' « sp é cial » qui a un sens . Il fait un peu exception .
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 8/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
Ex cuter le script bash
Nous avons é
crit un petit script sans pr é
tention de deux trois lignes - . Notre mission maintenant est de parvenir à l ex ' é
cuter .
Si vous faites un ls ‐l pour voir votre fichier qui vient d 'ê tre cr éé, vous obtenez ceci :
console
$ ls ‐l
total 4
‐rw‐r‐‐r‐‐ 1 mateo21 mateo21 17 2009‐03‐13 14:33 essai.sh
Ce qui nous int é resse ici , ce sont les droits sur le fichier : ‐rw‐r‐‐r‐‐ .
Si vous vous souvenez un petit peu du chapitre sur les droits , vous devriez vous rendre compte que notre script peut ê tre lu
par tout le monde ( r ), é crit uniquement par nous ( w ), ' et n est pas ex écutable ( pas de x ).
,
Or pour ex é
cuter un script , il faut que le fichier ait le droit « é ex cutable ». Le plus simple pour donner ce droit est d 'é
crire :
console
$ chmod +x essai.sh
Vous pouvez v é
rifier que le droit a bien éé t donn é:
console
$ ls ‐l
total 4
‐rwxr‐xr‐x 1 mateo21 mateo21 17 2009‐03‐13 14:33 essai.sh
Tout le monde a maintenant le droit d ex ' é cuter le script . Si vous voulez , vous pouvez limiter ce droit à vous m - ê mes mais
pour cela je vous invite à revoir le cours sur les droits car je ne vais pas me r é é .
p ter
Ex é cution du script
Le script s ex' é cute maintenant comme n importe quel programme ' , en tapant « ./ »
devant le nom du script :
console
$ ./essai.sh
essai.sh
Que fait le script ? Il fait juste un ls , donc il a ff iche la liste des fichiers pr é sents dans le r é pertoire ( ,
ici il y avait seulement
).
Bien entendu , ce script est inutile ; é il tait plus simple de taper ls directement . Cependant , vous devez vous douter que
’
Vous pouvez d é jà modifier votre script pour qu avant tout chose il vous donne ' é galement le nom du r é pertoire dans lequel
console
#!/bin/bash
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 9/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
pwd
ls
$ ./essai.sh
/home/mateo21/scripts
essai.sh
Ex é cution de d é
bogage
Plus tard , vous ferez probablement de gros scripts et risquerez de rencontrer des bugs . Il faut donc d è é
s à pr sent que vous
sachiez comment d é
boguer un script .
'
Il faut l ex é
cuter comme ceci :
console
$ bash ‐x essai.sh
$ bash ‐x essai.sh
+ pwd
/home/mateo21/scripts
+ ls
essai.sh
Cr é er sa propre commande
Comment font les autres programmes pour pouvoir ê tre exé cut é '
s depuis n importe quel r épertoire sans « ./ »
?
devant
ex é cutables sur votre ordinateur Si vous tapez . echo $PATH vous aurez la liste de ces r é pertoires « é
sp ciaux ».
Il vous su ff it donc de d éplacer ou copier votre script dans un de ces r é pertoires , comme /bin , /usr/bin ou
/usr/local/bin (
ou encore un autre r épertoire du PATH ). '
Notez qu il faut ê tre root pour pouvoir faire cela .
Une fois que c est fait ' , vous pourrez alors taper simplement essai.sh pour ex é cuter votre programme et ce quel que soit
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 10/11
11/10/2016 OpenClassrooms Introduction aux scripts shell
En r é sum é
Contrairement aux apparences , il existe plusieurs environnements console di ffé rents : ce sont les shells . Ce sont eux
' '
qui g è
rent l invite de commandes et ses fonctionnalit és comme l historique des commandes , la recherche
Ctrl + R , '
l autocompl é
tion des commandes …
Le shell utilis é par d é
faut sous Ubuntu est bash , mais il existe aussi ksh , ,
zsh etc .
Il est possible d automatiser une s ' é rie de commandes . On cr é e pour cela un fichier contenant la liste des
commandes à ex é ,
cuter appel é script shell . '
On dit que l on fait de la programmation shell .
En fonction du shell utilis é, on dispose de di ffé rents outils pour cr é
er son script shell . Nous utiliserons ici bash , donc
di ffé rente .
Pour ex é
cuter le script (
et donc ex écuter la liste des commandes qu il contient ' ) il faut donner les droits d ex ' é
cution
'
J ai termin é ce chapitre et je passe au suivant
Vim : é
l ' diteur de texte du programmeur A ff
icher et manipuler des variables
'
L auteur
Mathieu Nebra
, -
' )
Entrepreneur à plein temps auteur à plein temps et co fondateur
d OpenClassrooms : o
Premium
Premium
English Espa ñ
ol
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/introductionauxscriptsshell 11/11