SlideShare ist ein Scribd-Unternehmen logo
1 von 111
Downloaden Sie, um offline zu lesen
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Présentation de la
formation
Introduction
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Présentation du formateur
●
Qu’est ce que Linux ?
●
Qu'est ce que Bash ?
●
Pré-requis
●
Le plan de formation
●
Outils nécessaires
●
Comment travailler
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Présentation du formateur
●
Noël Macé
●
alphorm@noelmace.com
●
Formateur consultant expert Unix et FOSS
●
Mes références :
 Mon profil Viadeo : http://fr.viadeo.com/fr/profile/noel.mace
 Mon parcours : http://vizualize.me/noelmace
 Mon site : http://noelmace.com
• Contacts
• Blogs
• Base de connaissance
• CV
• Etc …
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Qu’est ce que Linux ?
●
Un kernel
 Développé par Linux Torvalds à partir de Minix
 En 1991
●
Un système d’exploitation
 Libre et open source
 Issu du projet GNU (1983)
 Leader sur :
• les serveurs web (65%)
• Les systèmes embarqués
• Les super-calculateurs
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Qu'est ce que Bash ?
● Un shell Unix
– interpréteur de commande
● interaction (terminal)
● ou séquentiel (scripting)
– permet d’exécuter les différentes commandes de GNU/Linux
● mais aussi d'autre systèmes Unix (Solaris, BSD, Mac OS X, etc …)
– permet de créer des programmes simples
● grâce à des commandes internes de scripting (if, while, etc …)
● automatisation
● Cf cours LPIC1
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Pré-requis
● bases du scripting Bash
– cf cours LPIC1
● bonne connaissance de GNU/Linux
– cf cours LPIC1 et 2
● algorithmique
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Le plan de formation
Bases
●
premiers pas
●
variables
●
état de sortie
●
tests
●
opérations
●
boucles
●
substitution de commandes
Scripting avancé
●
bonnes pratiques
●
commandes
●
redirection
●
documents intégrés
●
sous-shells et shells restreints
●
fonctions
●
alias
●
listes et tableaux
●
débogage
●
options de bash
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Outils nécessaires
● il vous suffit
– d'un interpréteur Bash
● sous GNU/Linux : shell par défaut
● sous Windows : cygwin
● sous Mac OS X : tcsh est le shell par défaut
– pour utiliser Bash ; voir ici
– d'un éditeur de texte
● en mode console : vim, nano ou emacs
– cf LPIC1
● en mode graphique : gedit, leafpad, ou autre
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Comment travailler
●
Chercher un maximum d'exemples
– init scripts, scripts de configuration des paquets, outils, etc …
●
faire "l'ingénieur fainéant"
– utiliser le scripting pour toute opération répétitive ou redondante
●
Se documenter
 comme toujours, le man est votre amis
 ce cours peut être complété par l'excellent guide de tldp.org, porté par Mendel Cooper :
Advanced Bash Scripting Guide
• traduction en français par traduc.org, disponible ici
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Introduction de ce cours
– formateur
– les outils à utiliser
– ce que nous verrons
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Premiers pas
Bases du scripting Bash
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
• Executer un script
• Demo
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Executer un script
●
directement : nécessite un shebang
– première ligne du script
●
#! : nombre magique (cf man magic)
– indique l'interpréteur (/bin/bash dans notre cas)
– utiliser /bin/sh permettra de rendre le script portable aux
machines non-linux
●
perte des fonctionnalité spécifiques à Bash
– nécessite le droit d’exécution sur le script
#!/bin/bash#!/bin/bash
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Executer un script
●
via la commande bash
– ne nécessite pas les droits d’exécution sur le fichier
– ni de shebang
●
Nous verrons plus loin les différentes options de bash
$ bash /chemin/vers/monscript.sh$ bash /chemin/vers/monscript.sh
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Demo
GO !GO !
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment exécuter un script bash
●
Écrire votre premier script bash.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Variables
Bases du scripting Bash
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Introduction
●
Déclarer une variable
●
Substitution de variable
●
"Supprimer" une variable
●
Portée d'une variable
– Variables d'environnement
●
Paramètres positionnels
– Paramètres positionnels :
exemple
●
Autres paramètres spéciaux
●
Echappements
– Séquences d’échappement
– Guillemets et apostrophes
●
Extraction et soustraction
de chaîne
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Introduction
● Aucun typage
– Toutes les variables sont considérées comme des chaînes de
caractères
– Mais peuvent également être évaluées comme des entiers
suivant le contexte
● Ne nécessite que la présence des chiffres dans sa valeur
– Permet une plus grande flexibilité
● Mais aussi certaines erreurs
● Attention à leur usage
– Toujours garder trace de leur usage / type
– Ne pas bâcler votre code
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Déclarer une variable
● Sans typage, aucun besoin de déclaration spécifique
● une simple affectation suffit
 signe égal
 sans espace
● Exemple
● Attention ! le nom d'une variable est sensible à la casse
 ie. "mavariable" n'est pas la même variable que "MaVariable"
$ mavariable="Bonjour"
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Substitution de variable
●
nécessite le caractère $ devant le nom
 Référence à la valeur de la variable
●
Exemple :
●
Syntaxe simplifiée de la suivante :
$ echo $mavariable
Bonjour !
$ echo ${mavariable}
Bonjour !
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
"Supprimer" une variable
●
Exemple
●
La valeur de la variable est alors nulle
– à ne pas confondre avec une variable contenant une chaîne
vide comme nous le verrons avec les tests
$ unset MaVariable
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Portée d'une variable
●
Par défaut : locales
– n'est définie et disponible qu'à l'intérieur d'un bloc de code ou
d'une fonction
●
Variables d'environnement
– Accessible pour l'ensemble du processus et de ses fils
●
Un script ne peu donc exporter une variable vers l'environnement du shell
dont il est issu
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Variables d'environnement
●
utiliser la commande export
●
Par convention, la référence est en majuscules
●
Pour "dé-exporter" une variable d'environnement
– ie : la repasser en local
●
Attention ! l'argument de la commande export est bien la référence (le nom)
de la variable
 pas sa valeur
 ne pas utiliser le caractère $
$ MESSAGE="Bonjour !"
$ export MESSAGE
$ export -n MESSAGE
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Paramètres positionnels
●
variables locales
●
$1, $2, $3 … enregistrent les arguments passés à une
commande
– Doivent être indiquées avec les accolades au delà de 9
●
$0 enregistre la commande ayant permis de lancer le
programme
●
$* et $@ représentent tous les paramètres positionnels
●
$# enregistre le nombre d'arguments
●
etc …
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Variables de paramètres: exemple
●
$0 est égale à  "/bin/echo"
●
$1 à "-e"
●
$2 à "Bonjour !"
●
$* à "-e 'Bonjour !'"
●
$# à 2
$ /bin/echo –e "Bonjour !"
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Autres paramètres spéciaux
● $- : options passées au script via la commande set
● $! : PID du dernier job executé en tâche de fond
● $? : code de sortie de la dernière commande executée
● $_ : dernier argument de la dernière commande effectuée
● $$ : PID du script lui même
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Echappements
● Dire au shell d'interpréter le caractère suivant littéralement
– Grâce au caractère 
– Ex : cd mon chemin renvoi une erreur
alors que cd mon chemin affichera “mon chemin”
● Peut permettre également l'effet inverse
– Donner un seul particulier à un caractère littéral
– Par exemple pour echo (option -e) ou sed
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Séquences d’échappement
a alerte (avertisseur sonore)
b retour arrière (backspace)
c suppression du retour-chariot final
f saut de page
n nouvelle ligne
r retour-chariot
t tabulation horizontale
v tabulation verticale
 backslash
nnn le caractère dont le code ASCII octal vaut nnn (un à trois chiffres)
xnnn le caractère dont le code ASCII hexadécimal vaut nnn (un à trois chiffres)
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Guillemets et apostrophes
● Protéger (échapper) les caractères spéciaux
– Empêche leur interprétation pour le shell
– Permet de les “passer” à une fonction ou au autre programme
● Conseil : placer les substitutions de variables entre guillemets
– Pour éviter l'interprétation des caractères spéciaux
● Exemples : espaces, *, =, etc …
● La simple quote est plus stricte
– Tout caractère y est interprété littéralement
● Même $ et
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Extraction et soustraction de chaîne
● Il est possible de directement manipuler les chaines de caractère
que contiennent les variables
– A noter : le premier caractère d'une chaine à pour indice 0
● ${#var} : longueur de la variable (en caractères)
● Extraction
– ${var:1} : sous-chaine à partir du second caractère
– ${var:2:4} : sous-chaine de 4 caractère à partir du 3ème
● Soustraction
– ${var#expr} : supprime la plus petite sous-chaine correspondant à
expr à partir du début de cette chaine
– ${var##expr} : supprime la plus grande sous-chaine correspondant à
expr à partir du début de cette chaine
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment gérer les variables dans un script bash
– Déclaration
– Portée
– Substitution
●
Gestion des chaînes de caractère contenues dans les
variables
– Échappement
– Extraction et soustraction de chaînes
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
États de sortie
Bases du scripting Bash
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Etats de sortie
●
Tester l'état de sortie d'un
programme
●
Sortie d'un script
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
États de sortie
● chaque programme ou fonction renvoi une valeur numérique
– entre 0 et 255
● 0 si il s'est bien déroulé (sauf cas particuliers)
– un chiffre différent de 0 indique donc un code d'erreur
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Tester l'état de sortie d'un programme
● Nous pouvons évaluer l'état de sortie grâce à plusieurs
méthodes de test
– if/else
– enchaînements conditionnels
– case
– cf cours suivant
● $? permet également de récupérer la valeur de sortie du
dernier programme exécuté
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Sortie d'un script
● Commande exit nnn
– où nnn est l'état de sortie à renvoyer
● Sans cette commande, c'est la valeur de sortie de la
dernière opération exécutée qui est renvoyée
– équivalent à exit ou encore exit $?
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
● Valeur de retour des scripts, programmes et fonctions
● Comment sortir d'un script en renvoyant une valeur.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Tests
Bases du scripting Bash
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Test
●
Composition
●
Alternatives : si - sinon
●
Alternatives : Selon
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Test
●
ou
●
Exemples
test expressiontest expression
[ expression ][ expression ]
[ 2 -lt 3 ][ 2 -lt 3 ]
[ "$var1" != "$var2" ][ "$var1" != "$var2" ]
[ -x /bin/bash ][ -x /bin/bash ]
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Composition
●
séquentielle : cmd1 ; cmd2
●
parallèle : cmd1 & cmd2
●
sur erreur (ou) : cmd1 || cmd2
●
sur succès (et) : cmd1 && cmd2
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Alternatives : si - sinon
if test
then
instructions
elif test
then
instructions
…
else
instructions
fi
if test
then
instructions
elif test
then
instructions
…
else
instructions
fi
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Alternatives : Selon
case variable in
expr)
instructions
;;
…
esac
case variable in
expr)
instructions
;;
…
esac
●
Attention : case n'utilise pas d'expression régulière, mais du
pattern matching
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment réaliser des tests en scripting Bash
– la commande test
– composition
– if ; then ; else
– case
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Opérations
Bases du scripting Bash
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Opérateurs arithmétiques
●
Affectation arithmétique
●
Opérateurs binaires
●
Opérateurs logiques
●
Changement de base
●
Evaluation arithmétique
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Opérateurs arithmétiques
Opérateur Description
+ addition
- soustraction
/ division
* multiplication
** puissance (Bash 2.02 et supérieurs)
% modulo (reste de division entière)
Remarque : Bash ne comprend pas l'arithmétique à virgule
flottante, et interprète donc les nombres décimaux comme des
chaînes de caractère. Toute opération sera donc toujours entière.
Pour des calcules complexes, utilisez le language bc.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Affectation arithmétique
Opérateur Description
+= incrémentation
-= décrémentation
/= affectation par division
*= affectation par multiplication
%= affectation du reste de la division entière
Associe affectation et opérateur arithmétique pour modifier la valeur
d'une variable par le résultat d'une opération entre sa valeur précédente
et une constante.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Opérateurs binaires
Opérateur Description
<< décalage d'un bit à gauche (multiplication par 2)
>> décalage d'un bit à droite (division par 2)
& ET binaire
| OU (inclusif) binaire
~ NON binaire
^ XOR (ou exclusif) binaire
Tout ces opérateurs peuvent également être associés à l'affectation comme p
opérateurs arithmétiques.
Exemple : <<=
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Opérateurs logiques
● la composition sur erreur (||) et la composition du réussite
(&&) peuvent également être utilisés comme des OU et ET
logiques.
● la commande ! permet d'inverser le retour d'une commande
– et donc d'agir comme un NON logique
– exemple :
! which /bin/bash
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Changement de base
● base 10 par défaut
● si un nombre est précédé de 0 : base 8 (octal)
● si un nombre est précédé de 0x : base 16 (hexadécimal)
● Pour utiliser d'autres bases, précéder le nombre de
BASE#
– maximum : 64
– notation : 10 chiffres + 26 caractères minuscules + 26
caractères majuscules + @ + _
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Evaluation arithmétique
●
commande let
●
double parenthèse
– apporte les mêmes fonctionnalités que let
– permet la manipulation de variables à la manière du C
●
Exemple
– permet une “substitution” d'évaluation arithmétique
(( var++ ))
let 'var = 2 + 3'
echo $(( 2 ** 3 ))
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment effectuer des opérations en Bash
– opérateurs arithmétiques, binaires et logiques
– changement de base
– évaluation
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Boucles
Bases du scripting Bash
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Pour
●
Tant que
●
Contrôle de boucles
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Pour
● la variable var prendra successivement la valeur de chacun des
éléments de la liste (séparés par des espaces)
● Exemple :
for var in liste
do
…
done
for var in liste
do
…
done
for couleur in rouge orange vert
do
echo $couleur
done
for couleur in rouge orange vert
do
echo $couleur
done
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Pour
● Astuce : il est possible d'écrire un for à la manière du C grâce
à (( … ))
● Exemple :
● Remarque : (( … )) n'est pas ici considéré comme une évaluation
arithmétique mais comme un argument particulier de for
for (( i=1 ; i<=5 ; i++ ))
do
echo $i
done
for (( i=1 ; i<=5 ; i++ ))
do
echo $i
done
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Tant que
while cmd
do
…
done
while cmd
do
…
done
●
tant que la commande cmd renverra 0
●
tant que la commande cmd ne renverra pas 0
●
cmd est généralement un test
while cmd
do
…
done
while cmd
do
…
done
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Contrôle de boucles
● break : termine (sort de) la boucle
– break N : sortir de N niveaux de boucles (1 par défaut)
● continue : provoque un saut jusqu'à la prochaine itération de
la boucle
– continue N : provoque un saut jusqu'à la prochaine itération de
la boucle de N niveaux au dessus
● sans effectuer les itérations suivantes des boucles de niveau 1 à N-1
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment effectuer des boucles en Bash
– Pour (for)
– Tant que (while et until)
●
Comment contrôler les itérations de ces boucles
– grâce à break et continue
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Substitution de
commande
Bases du scripting Bash
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Qu'est ce que c'est ?
●
Syntaxe
●
Exemples d'utilisation
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Qu'est ce que c'est ?
● Ia substitution de commande permet de “brancher” la sortie
d'une commande dans un autre contexte
● Elle permet :
– l'affectation de cette sortie à une variable
– l'utilisation de cette sortie comme argument d'une autre
commande
– etc ...
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Syntaxe
● On encadre pour cela la commande d'anti-quotes
– altgr + 7 sur les claviers Azerty
● Nouvelle syntaxe : $( … )
– à ne pas confondre avec l'évaluation arithmétique
– permet l'imbrication
– meilleure lisibilité
`ma commande``ma commande`
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Exemples d'utilisation
● Comme argument
– d'un test
– de for
● Pour affectation
– du contenu d'un fichier
● la deuxième solution étant moins performante, puisque nécessitant un
nouveau processus
[ -x `which bash` ][ -x `which bash` ]
for i in `seq 1 100` ; dofor i in `seq 1 100` ; do
variable=`<fichier`variable=`<fichier` variable=`cat fichier`variable=`cat fichier`
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Ce qu'est la subsitution de commande.
●
Comment la réaliser.
●
Quelques exemples d'utilisation courante.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Documents
intégrés
Scripting avancé
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Qu'est ce que c'est
●
Syntaxe
●
Exemples : édition de texte
●
Exemples : multi-lignes
●
Pour aller plus loin
●
Chaînes intégrées
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Qu'est ce que c'est
● une solution simple et rapide pour envoyer une suite de
commandes à un programme interactif.
● permet donc de réaliser des “scripts” pour beaucoup de
programmes
– dont certains non prévus à cet usage
– cat, ex, echo, wall, etc …
● permet également une meilleure lisibilitée des entrées multi-
lignes
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Syntaxe
● le délimiteur indique la fin des entrées
– il peut être n'importe quelle suite de caractères
– par convention, on utilisera généralement EOF
commande <<délimiteur
entrées …
délimiteur
commande <<délimiteur
entrées …
délimiteur
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Exemples : édition de texte
● avec vim
● avec ex
vim monfichier <<xxxLIMITExxx
i
ligne 1
ligne 2
^[
:wq !
xxxLIMITExxx
vim monfichier <<xxxLIMITExxx
i
ligne 1
ligne 2
^[
:wq !
xxxLIMITExxx
ex $mot <<EOF
:%s/$ORIGINAL/$REMPLACEMENT/g
:wq
EOF
ex $mot <<EOF
:%s/$ORIGINAL/$REMPLACEMENT/g
:wq
EOF
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Exemples : multi-lignes
cat <<-EOF
-------------------------------------
Ceci est la ligne 1 du message.
Ceci est la ligne 2 du message.
Ceci est la ligne 3 du message.
Ceci est la ligne 4 du message.
Ceci est la dernière ligne du message.
-------------------------------------
EOF
cat <<-EOF
-------------------------------------
Ceci est la ligne 1 du message.
Ceci est la ligne 2 du message.
Ceci est la ligne 3 du message.
Ceci est la ligne 4 du message.
Ceci est la dernière ligne du message.
-------------------------------------
EOF
●
Astuce : vous pouvez supprimer les tabulations en début de
ligne d'un document intégré en précédent le délimiteur du
signe '-'
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Pour aller plus loin
● Les documents intégrés supportent la substitution de
variable
● Il est possible de rediriger la sortie de la commande appelée
● On peu réaliser un bloc de commentaire Bash en effectuant
un document intégré sur la commande ':'
commande > fichier <<délimiteurcommande > fichier <<délimiteur
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Chaînes intégrées
● forme minimale de document intégré
– permet de n'envoyer qu'un chaîne simple
● syntaxe
● trés utile pour tester votre script
commande <<< chainecommande <<< chaine
read -p "entrez un nombre" nbr <<< "22"read -p "entrez un nombre" nbr <<< "22"
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
● Comment "scripter" n'importe quel programme grâce aux
documents intégrés.
– syntaxe
– usages
– fonctions avancées
● Comment envoyer une valeur à n'importe quel programme
grâce aux chaînes intégrées.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Sous-shells et
shells restreints
Scripting avancé
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Sous-shell
– Syntaxe
– A savoir
●
Shell restreint
– Actions essentielles
désactivées
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Sous-shell
● permet de lancer un processus fils de notre script
– qui exécutera son propre "flot" de commandes
– dont les variables ne sont pas visibles du shell père
● chaque commande externe appelé dans notre shell lance
son propre processus
– ce n'est pas le cas des commandes internes (qui demandent
donc moins de ressources)
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Syntaxe
● encadrer une série de commandes par des parenthèses
(
cmd1
cmd2
cmd3
)
(
cmd1
cmd2
cmd3
)
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
A savoir
● La commande exit ne termine que le processus courant
– si elle est réalisée dans un sous-shell, elle ne mettra donc fin
qu'à celui-ci, et non au script bash lui même
● Une commande cd effectuée au sain d'un sous-shell n'a
d'impacte que sur celui-ci
● Il est possible d'executer deux sous shells en parallèle en les
séparant par un '&' (sans retour à la ligne)
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Shell restreint
● mode spécial
● désactive certaines commandes
– minimise les risques
– en limitant les droits
● Pour passer en mode restreint :
ouset -rset -r set --restrictedset --restricted
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Actions essentielles désactivées
● changement de répertoire de travail (cd)
● changement de valeur des variables d'environnement
suivantes : $PATH, $SHELL, $BASH_ENV, $ENV.
● lecture et remplacement d'options d'environnement de shell
$SHELLOPTS.
● redirection de sortie.
● appel à des commandes contenant un ou plusieurs /.
● substituer un processus différent de celui du shell (exec)
● sortir du mode restreint au sain du script
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment lancer une série d'opération au sain d'un nouveau
processus (sous shell).
– les principales utilitées de cette démarche
●
Comment limiter les fonctionnalités d'un script grâce au
shell restreint.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Fonctions
Scripting avancé
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Fonctions
– Syntaxe
– A savoir
●
Aliases
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Fonctions
● sembables aux fonctions des autres langages
– bien que très limitées
– sous-routine implémentant un certain nombre d'opérations
dans un but précis
● A utiliser pour remplacer toute suite d'opération répétées
plusieurs fois au cours d'un script
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Syntaxe
● classique bash
● "C-like"
function nom_fonction {
…
}
function nom_fonction {
…
}
nom_fonction()
{
…
}
nom_fonction()
{
…
}
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
A savoir
● Une fonction ne peu être vide
● Elles peuvent prendre des arguments de la même manière
qu'un script
– pas entre les parenthèses !
– accessibles via $1 $2 etc … au sain de la fonction
● Comme tout programme, elle renvoie également un code de
sortie
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Aliases
● simple raccourci pour une longue séquence de commandes
– déclaré grâce à la commande alias
– exemple
– pour supprimer un alias : commande unalias
● particulièrement utile en mode interactif
– cd bashrc
● très peu en scripting, car très limité
alias la="ls -la"
la
alias la="ls -la"
la
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment écrire des fonctions en Bash.
●
Comment mettre en place un alias.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Listes et tableaux
Scripting avancé
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Affectation et substitution
●
A savoir
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Affectation et substitution
● Affectation
– de l'ensemble d'un tableau
– d'un élément d'un tableau
● Substitution d'un élément d'un tableau
– toutes les opérations de chaîne déjà connues sur les variables sont
également réalisables
– exemple
tableau[xx]="valeur"tableau[xx]="valeur"
tableau=(val1 val2 val3)tableau=(val1 val2 val3)
${#tableau[@]} # "longueur" (nombre d'éléments) d'un tableau${#tableau[@]} # "longueur" (nombre d'éléments) d'un tableau
tableau[xx]="valeur"tableau[xx]="valeur"
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
A savoir
● le premier indice d'un tableau est 0
● ${tableau} référence le premier élément d'un tableau, non
le tableau en entier
● un tableau bash n'a pas de taille fixe. Il s'apperente donc
plus à une liste
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment déclarer est manipuler des tableaux (ou listes) en
scripting bash.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Débogage
Scripting avancé
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Introduction
●
Suivre l’exécution de votre script
●
Quelques recommandations
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Introduction
● Pas de débogueur intégré
● Des messages d'erreurs souvent obscures
● Nous allons donc voir ici quelques astuces pour déboguer
votre script.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Suivre l'execution de votre script
● Effectuer des affichages (echo) aux points clés
– Encore mieux : ne le faire qu'en mode débug
● Filter les sorties des commandes clés grâce à tee
● Utiliser la variable LINENO
– prend automatiquement la valeur de la ligne du script où elle est appelée
### debecho (debug-echo) par Stefano Falsetto ###
### Affichera les paramètres seulement si DEBUG est configuré. ###
debecho () {
if [ ! -z "$DEBUG" ]; then
echo "$1" >&2
# ^^^ vers stderr
fi
}
### debecho (debug-echo) par Stefano Falsetto ###
### Affichera les paramètres seulement si DEBUG est configuré. ###
debecho () {
if [ ! -z "$DEBUG" ]; then
echo "$1" >&2
# ^^^ vers stderr
fi
}
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Quelques recommandations
● Tester chaque variables et conditions aux points critiques
– On peu pour cela créer une fonction assert, inspirée du C
● Qui sortira du script avec un message d'erreur spécifique en cas de non respect d'un
condition donnée
● Exemple : tester si une variable est un nombre
– ici, le premier argument de la fonction assert sera bien entendu testé via la
commande test pour un if, qui exécutera un exit en cas de non respect de cette
condition
● Intercepter le signal EXIT avec trap afin d'afficher un message
personnalisé en cas d'arrêt du script
– comme par exemple pour afficher les valeurs de différentes variable
assert "$var1"' =~ '^[0-9]+$''assert "$var1"' =~ '^[0-9]+$''
trap 'echo variables : var1 = $var1 / var2 = $var2' EXITtrap 'echo variables : var1 = $var1 / var2 = $var2' EXIT
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment déboguer un script bash.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Options de Bash
Scripting avancé
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Plan
●
Introduction
●
Options utiles au débogage
●
Autres options utiles
●
Pour aller plus loins
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Introduction
● Permettent de modifier le comportement du shell
● Activées soit
– au lancement du script, via l'appel de l'interpréteur
● shebang ou ligne de commande
– en cours d'execution, via la commande set
● activer une option : set -o nom ou set -abrévation
● désactiver une option : set +o option ou set +raccourci
set -o verboseset -o verbose set -vset -v
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Options utiles au débogage
Abréviation Nom Description
-n noexec Teste les erreurs de syntaxe du script sans
l'exécuter.
-v verbose Affiche chaque commande avant de
l'exécuter.
-x xtrace Développe et affiche chaque commande
avant de l'exécuter.
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Autres options utiles
Abréviation Nom Description
-C noclobber Empêche tout écrassement de fichier pré-
existant avec les opérateurs >, >& et <>.
Surpassable par l'usage de >|
-a allexport Exporter toutes les variables et fonctions
modifiées ou créés.
-f noglob Désactive le globbing (développement des
chemins).
-r restricted Mode restreint.
-u nounset Empêche l'usage de variable non définie
(erreur et sortie du script).
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Pour aller plus loins
● Bien d'autres comportements facultatifs sont (dés)activables
dans vos scripts
– grâce à la commande shopt
– Options
● -s var : activer
● -d var : désactiver
● Exemple : rendre case insensible à la casse
shopt -s nocasematchshopt -s nocasematch
shopt [-pqsu] [-o] [nom_opt ...]shopt [-pqsu] [-o] [nom_opt ...]
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Comment modifier le comportement de notre script
– en activant / désactivant certaines fonctionnalitées du shell
– grâce aux options de la commande bash, à set et à shopt
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Noël Macé
Formateur et Consultant indépendant
Expert Unix et FOSS
Contact : alphorm@noelmace.com
Conclusion
Conclusion
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com
Ce qu’on a couvert
●
Merci à tous et à bientôt.

Weitere ähnliche Inhalte

Was ist angesagt?

alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+Alphorm
 
alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)Alphorm
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm
 
Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm
 
Alphorm.com Formation OpenVZ
Alphorm.com Formation OpenVZAlphorm.com Formation OpenVZ
Alphorm.com Formation OpenVZAlphorm
 
Alphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du DébutantAlphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du DébutantAlphorm
 
alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)Alphorm
 
Alphorm.com formation-GNS3
Alphorm.com formation-GNS3Alphorm.com formation-GNS3
Alphorm.com formation-GNS3Alphorm
 
Alphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm
 
Alphorm.com support de la formation-ccnp route examen 300-101-ss
Alphorm.com support de la formation-ccnp route examen 300-101-ssAlphorm.com support de la formation-ccnp route examen 300-101-ss
Alphorm.com support de la formation-ccnp route examen 300-101-ssAlphorm
 
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architectureAlphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architectureAlphorm
 
Alphorm.com Formation Sophos Certified Engineer : EndPoint Protection
Alphorm.com Formation Sophos Certified Engineer : EndPoint ProtectionAlphorm.com Formation Sophos Certified Engineer : EndPoint Protection
Alphorm.com Formation Sophos Certified Engineer : EndPoint ProtectionAlphorm
 
Alphorm.com Formation Python pour les pentesteurs 2/2
Alphorm.com Formation Python pour les pentesteurs 2/2Alphorm.com Formation Python pour les pentesteurs 2/2
Alphorm.com Formation Python pour les pentesteurs 2/2Alphorm
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm
 
alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)Alphorm
 

Was ist angesagt? (20)

alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
 
alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé
 
Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs
 
Alphorm.com Formation OpenVZ
Alphorm.com Formation OpenVZAlphorm.com Formation OpenVZ
Alphorm.com Formation OpenVZ
 
Alphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du DébutantAlphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du Débutant
 
alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)
 
Alphorm.com formation-GNS3
Alphorm.com formation-GNS3Alphorm.com formation-GNS3
Alphorm.com formation-GNS3
 
Alphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage Ruby
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
Alphorm.com support de la formation-ccnp route examen 300-101-ss
Alphorm.com support de la formation-ccnp route examen 300-101-ssAlphorm.com support de la formation-ccnp route examen 300-101-ss
Alphorm.com support de la formation-ccnp route examen 300-101-ss
 
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architectureAlphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
 
Alphorm.com Formation Sophos Certified Engineer : EndPoint Protection
Alphorm.com Formation Sophos Certified Engineer : EndPoint ProtectionAlphorm.com Formation Sophos Certified Engineer : EndPoint Protection
Alphorm.com Formation Sophos Certified Engineer : EndPoint Protection
 
Alphorm.com Formation Python pour les pentesteurs 2/2
Alphorm.com Formation Python pour les pentesteurs 2/2Alphorm.com Formation Python pour les pentesteurs 2/2
Alphorm.com Formation Python pour les pentesteurs 2/2
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et Configurer
 
Vm ware
Vm wareVm ware
Vm ware
 
alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)
 

Andere mochten auch

Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm
 
Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...
Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...
Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...Alphorm
 
Alphorm.com Support de la Formation Les Sciences Forensiques : L’investigati...
Alphorm.com Support de la Formation Les Sciences Forensiques  : L’investigati...Alphorm.com Support de la Formation Les Sciences Forensiques  : L’investigati...
Alphorm.com Support de la Formation Les Sciences Forensiques : L’investigati...Alphorm
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm
 
Alphorm.com Formation Excel 2016 Expert I - partie 1
Alphorm.com Formation Excel 2016 Expert I - partie 1Alphorm.com Formation Excel 2016 Expert I - partie 1
Alphorm.com Formation Excel 2016 Expert I - partie 1Alphorm
 
Alphorm.com support Formation OneNote 2016 Prise de notes professionnelles
Alphorm.com support Formation OneNote 2016 Prise de notes professionnellesAlphorm.com support Formation OneNote 2016 Prise de notes professionnelles
Alphorm.com support Formation OneNote 2016 Prise de notes professionnellesAlphorm
 
Alphorm.com Formation MOS Excel 2013(77-420)
Alphorm.com Formation MOS Excel 2013(77-420)Alphorm.com Formation MOS Excel 2013(77-420)
Alphorm.com Formation MOS Excel 2013(77-420)Alphorm
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm
 
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm
 
Alphorm.com Support de la Formation Inventor 2017 les fondamentaux
Alphorm.com Support de la Formation  Inventor 2017 les fondamentaux Alphorm.com Support de la Formation  Inventor 2017 les fondamentaux
Alphorm.com Support de la Formation Inventor 2017 les fondamentaux Alphorm
 
Alphorm.com Support de la formation AutoCAD 2016, perfectionnement
Alphorm.com Support de la formation AutoCAD 2016, perfectionnementAlphorm.com Support de la formation AutoCAD 2016, perfectionnement
Alphorm.com Support de la formation AutoCAD 2016, perfectionnementAlphorm
 
Alphorm.com Support Formation AutoCAD 2016 3D
Alphorm.com Support Formation AutoCAD 2016 3DAlphorm.com Support Formation AutoCAD 2016 3D
Alphorm.com Support Formation AutoCAD 2016 3DAlphorm
 
Alphorm.com support AutoCAD 2016, atelier mécanique
Alphorm.com support AutoCAD 2016, atelier mécanique Alphorm.com support AutoCAD 2016, atelier mécanique
Alphorm.com support AutoCAD 2016, atelier mécanique Alphorm
 
Alphorm.com support Formation AutoCAD 2016 atelier architectural-ss
Alphorm.com support Formation AutoCAD 2016 atelier architectural-ssAlphorm.com support Formation AutoCAD 2016 atelier architectural-ss
Alphorm.com support Formation AutoCAD 2016 atelier architectural-ssAlphorm
 
Alphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentauxAlphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentauxAlphorm
 
Alphorm.com Formation AutoCAD 2016,les fondamentaux
Alphorm.com Formation AutoCAD 2016,les fondamentauxAlphorm.com Formation AutoCAD 2016,les fondamentaux
Alphorm.com Formation AutoCAD 2016,les fondamentauxAlphorm
 
Alphorm.com Formation MS Project 2013
Alphorm.com Formation MS Project 2013Alphorm.com Formation MS Project 2013
Alphorm.com Formation MS Project 2013Alphorm
 
alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0Alphorm
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm
 

Andere mochten auch (20)

Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jour
 
Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...
Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...
Alphorm.com Support de la Formation Adobe-Illustrator CC , Découverte du vect...
 
Alphorm.com Support de la Formation Les Sciences Forensiques : L’investigati...
Alphorm.com Support de la Formation Les Sciences Forensiques  : L’investigati...Alphorm.com Support de la Formation Les Sciences Forensiques  : L’investigati...
Alphorm.com Support de la Formation Les Sciences Forensiques : L’investigati...
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentaux
 
Alphorm.com Formation Excel 2016 Expert I - partie 1
Alphorm.com Formation Excel 2016 Expert I - partie 1Alphorm.com Formation Excel 2016 Expert I - partie 1
Alphorm.com Formation Excel 2016 Expert I - partie 1
 
Alphorm.com support Formation OneNote 2016 Prise de notes professionnelles
Alphorm.com support Formation OneNote 2016 Prise de notes professionnellesAlphorm.com support Formation OneNote 2016 Prise de notes professionnelles
Alphorm.com support Formation OneNote 2016 Prise de notes professionnelles
 
Alphorm.com Formation MOS Excel 2013(77-420)
Alphorm.com Formation MOS Excel 2013(77-420)Alphorm.com Formation MOS Excel 2013(77-420)
Alphorm.com Formation MOS Excel 2013(77-420)
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
 
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
 
Alphorm.com Support de la Formation Inventor 2017 les fondamentaux
Alphorm.com Support de la Formation  Inventor 2017 les fondamentaux Alphorm.com Support de la Formation  Inventor 2017 les fondamentaux
Alphorm.com Support de la Formation Inventor 2017 les fondamentaux
 
Alphorm.com Support de la formation AutoCAD 2016, perfectionnement
Alphorm.com Support de la formation AutoCAD 2016, perfectionnementAlphorm.com Support de la formation AutoCAD 2016, perfectionnement
Alphorm.com Support de la formation AutoCAD 2016, perfectionnement
 
Alphorm.com Support Formation AutoCAD 2016 3D
Alphorm.com Support Formation AutoCAD 2016 3DAlphorm.com Support Formation AutoCAD 2016 3D
Alphorm.com Support Formation AutoCAD 2016 3D
 
Alphorm.com support AutoCAD 2016, atelier mécanique
Alphorm.com support AutoCAD 2016, atelier mécanique Alphorm.com support AutoCAD 2016, atelier mécanique
Alphorm.com support AutoCAD 2016, atelier mécanique
 
Alphorm.com support Formation AutoCAD 2016 atelier architectural-ss
Alphorm.com support Formation AutoCAD 2016 atelier architectural-ssAlphorm.com support Formation AutoCAD 2016 atelier architectural-ss
Alphorm.com support Formation AutoCAD 2016 atelier architectural-ss
 
Alphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentauxAlphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentaux
 
Alphorm.com Formation AutoCAD 2016,les fondamentaux
Alphorm.com Formation AutoCAD 2016,les fondamentauxAlphorm.com Formation AutoCAD 2016,les fondamentaux
Alphorm.com Formation AutoCAD 2016,les fondamentaux
 
Alphorm.com Formation MS Project 2013
Alphorm.com Formation MS Project 2013Alphorm.com Formation MS Project 2013
Alphorm.com Formation MS Project 2013
 
alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
 

Ähnlich wie Alphorm.com Formation Scripting Bash avancé pour GNU/Linux

Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Jean-Baptiste Vigneron
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur webNoël
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfrachidimstapha
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015Stéphane Legrand
 
LPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingLPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingNoël
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Olivier Gutknecht
 
07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dns07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dnsNoël
 
Alphorm.com Formation Exchange 2016, Configuration Avancée
Alphorm.com Formation Exchange 2016, Configuration AvancéeAlphorm.com Formation Exchange 2016, Configuration Avancée
Alphorm.com Formation Exchange 2016, Configuration AvancéeAlphorm
 
10 01 configuration dhcp
10 01 configuration dhcp10 01 configuration dhcp
10 01 configuration dhcpNoël
 
LPIC1 13 01 scripting bash
LPIC1 13 01 scripting bashLPIC1 13 01 scripting bash
LPIC1 13 01 scripting bashNoël
 
UNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdfUNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdfYassineZouin
 
Apache server configuration & sécurisation -
Apache server configuration & sécurisation  -Apache server configuration & sécurisation  -
Apache server configuration & sécurisation -achraf_ing
 

Ähnlich wie Alphorm.com Formation Scripting Bash avancé pour GNU/Linux (20)

Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6
 
Presentation
PresentationPresentation
Presentation
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdf
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015
 
LPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingLPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et nating
 
Plein phar !
Plein phar !Plein phar !
Plein phar !
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NET
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 
07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dns07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dns
 
Alphorm.com Formation Exchange 2016, Configuration Avancée
Alphorm.com Formation Exchange 2016, Configuration AvancéeAlphorm.com Formation Exchange 2016, Configuration Avancée
Alphorm.com Formation Exchange 2016, Configuration Avancée
 
10 01 configuration dhcp
10 01 configuration dhcp10 01 configuration dhcp
10 01 configuration dhcp
 
Linux_best_practices
Linux_best_practicesLinux_best_practices
Linux_best_practices
 
PHP5: Endgame
PHP5: EndgamePHP5: Endgame
PHP5: Endgame
 
Nouveautés php 7
Nouveautés php 7Nouveautés php 7
Nouveautés php 7
 
LPIC1 13 01 scripting bash
LPIC1 13 01 scripting bashLPIC1 13 01 scripting bash
LPIC1 13 01 scripting bash
 
UNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdfUNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdf
 
Apache server configuration & sécurisation -
Apache server configuration & sécurisation  -Apache server configuration & sécurisation  -
Apache server configuration & sécurisation -
 

Mehr von Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 

Mehr von Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 

Alphorm.com Formation Scripting Bash avancé pour GNU/Linux

  • 1. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Présentation de la formation Introduction Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 2. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Présentation du formateur ● Qu’est ce que Linux ? ● Qu'est ce que Bash ? ● Pré-requis ● Le plan de formation ● Outils nécessaires ● Comment travailler
  • 3. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Présentation du formateur ● Noël Macé ● alphorm@noelmace.com ● Formateur consultant expert Unix et FOSS ● Mes références :  Mon profil Viadeo : http://fr.viadeo.com/fr/profile/noel.mace  Mon parcours : http://vizualize.me/noelmace  Mon site : http://noelmace.com • Contacts • Blogs • Base de connaissance • CV • Etc …
  • 4. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Qu’est ce que Linux ? ● Un kernel  Développé par Linux Torvalds à partir de Minix  En 1991 ● Un système d’exploitation  Libre et open source  Issu du projet GNU (1983)  Leader sur : • les serveurs web (65%) • Les systèmes embarqués • Les super-calculateurs
  • 5. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Qu'est ce que Bash ? ● Un shell Unix – interpréteur de commande ● interaction (terminal) ● ou séquentiel (scripting) – permet d’exécuter les différentes commandes de GNU/Linux ● mais aussi d'autre systèmes Unix (Solaris, BSD, Mac OS X, etc …) – permet de créer des programmes simples ● grâce à des commandes internes de scripting (if, while, etc …) ● automatisation ● Cf cours LPIC1
  • 6. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Pré-requis ● bases du scripting Bash – cf cours LPIC1 ● bonne connaissance de GNU/Linux – cf cours LPIC1 et 2 ● algorithmique
  • 7. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Le plan de formation Bases ● premiers pas ● variables ● état de sortie ● tests ● opérations ● boucles ● substitution de commandes Scripting avancé ● bonnes pratiques ● commandes ● redirection ● documents intégrés ● sous-shells et shells restreints ● fonctions ● alias ● listes et tableaux ● débogage ● options de bash
  • 8. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Outils nécessaires ● il vous suffit – d'un interpréteur Bash ● sous GNU/Linux : shell par défaut ● sous Windows : cygwin ● sous Mac OS X : tcsh est le shell par défaut – pour utiliser Bash ; voir ici – d'un éditeur de texte ● en mode console : vim, nano ou emacs – cf LPIC1 ● en mode graphique : gedit, leafpad, ou autre
  • 9. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Comment travailler ● Chercher un maximum d'exemples – init scripts, scripts de configuration des paquets, outils, etc … ● faire "l'ingénieur fainéant" – utiliser le scripting pour toute opération répétitive ou redondante ● Se documenter  comme toujours, le man est votre amis  ce cours peut être complété par l'excellent guide de tldp.org, porté par Mendel Cooper : Advanced Bash Scripting Guide • traduction en français par traduc.org, disponible ici
  • 10. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Introduction de ce cours – formateur – les outils à utiliser – ce que nous verrons
  • 11. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Premiers pas Bases du scripting Bash Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 12. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan • Executer un script • Demo
  • 13. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Executer un script ● directement : nécessite un shebang – première ligne du script ● #! : nombre magique (cf man magic) – indique l'interpréteur (/bin/bash dans notre cas) – utiliser /bin/sh permettra de rendre le script portable aux machines non-linux ● perte des fonctionnalité spécifiques à Bash – nécessite le droit d’exécution sur le script #!/bin/bash#!/bin/bash
  • 14. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Executer un script ● via la commande bash – ne nécessite pas les droits d’exécution sur le fichier – ni de shebang ● Nous verrons plus loin les différentes options de bash $ bash /chemin/vers/monscript.sh$ bash /chemin/vers/monscript.sh
  • 15. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Demo GO !GO !
  • 16. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment exécuter un script bash ● Écrire votre premier script bash.
  • 17. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Variables Bases du scripting Bash Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 18. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Introduction ● Déclarer une variable ● Substitution de variable ● "Supprimer" une variable ● Portée d'une variable – Variables d'environnement ● Paramètres positionnels – Paramètres positionnels : exemple ● Autres paramètres spéciaux ● Echappements – Séquences d’échappement – Guillemets et apostrophes ● Extraction et soustraction de chaîne
  • 19. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Introduction ● Aucun typage – Toutes les variables sont considérées comme des chaînes de caractères – Mais peuvent également être évaluées comme des entiers suivant le contexte ● Ne nécessite que la présence des chiffres dans sa valeur – Permet une plus grande flexibilité ● Mais aussi certaines erreurs ● Attention à leur usage – Toujours garder trace de leur usage / type – Ne pas bâcler votre code
  • 20. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Déclarer une variable ● Sans typage, aucun besoin de déclaration spécifique ● une simple affectation suffit  signe égal  sans espace ● Exemple ● Attention ! le nom d'une variable est sensible à la casse  ie. "mavariable" n'est pas la même variable que "MaVariable" $ mavariable="Bonjour"
  • 21. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Substitution de variable ● nécessite le caractère $ devant le nom  Référence à la valeur de la variable ● Exemple : ● Syntaxe simplifiée de la suivante : $ echo $mavariable Bonjour ! $ echo ${mavariable} Bonjour !
  • 22. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com "Supprimer" une variable ● Exemple ● La valeur de la variable est alors nulle – à ne pas confondre avec une variable contenant une chaîne vide comme nous le verrons avec les tests $ unset MaVariable
  • 23. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Portée d'une variable ● Par défaut : locales – n'est définie et disponible qu'à l'intérieur d'un bloc de code ou d'une fonction ● Variables d'environnement – Accessible pour l'ensemble du processus et de ses fils ● Un script ne peu donc exporter une variable vers l'environnement du shell dont il est issu
  • 24. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Variables d'environnement ● utiliser la commande export ● Par convention, la référence est en majuscules ● Pour "dé-exporter" une variable d'environnement – ie : la repasser en local ● Attention ! l'argument de la commande export est bien la référence (le nom) de la variable  pas sa valeur  ne pas utiliser le caractère $ $ MESSAGE="Bonjour !" $ export MESSAGE $ export -n MESSAGE
  • 25. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Paramètres positionnels ● variables locales ● $1, $2, $3 … enregistrent les arguments passés à une commande – Doivent être indiquées avec les accolades au delà de 9 ● $0 enregistre la commande ayant permis de lancer le programme ● $* et $@ représentent tous les paramètres positionnels ● $# enregistre le nombre d'arguments ● etc …
  • 26. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Variables de paramètres: exemple ● $0 est égale à  "/bin/echo" ● $1 à "-e" ● $2 à "Bonjour !" ● $* à "-e 'Bonjour !'" ● $# à 2 $ /bin/echo –e "Bonjour !"
  • 27. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Autres paramètres spéciaux ● $- : options passées au script via la commande set ● $! : PID du dernier job executé en tâche de fond ● $? : code de sortie de la dernière commande executée ● $_ : dernier argument de la dernière commande effectuée ● $$ : PID du script lui même
  • 28. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Echappements ● Dire au shell d'interpréter le caractère suivant littéralement – Grâce au caractère – Ex : cd mon chemin renvoi une erreur alors que cd mon chemin affichera “mon chemin” ● Peut permettre également l'effet inverse – Donner un seul particulier à un caractère littéral – Par exemple pour echo (option -e) ou sed
  • 29. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Séquences d’échappement a alerte (avertisseur sonore) b retour arrière (backspace) c suppression du retour-chariot final f saut de page n nouvelle ligne r retour-chariot t tabulation horizontale v tabulation verticale backslash nnn le caractère dont le code ASCII octal vaut nnn (un à trois chiffres) xnnn le caractère dont le code ASCII hexadécimal vaut nnn (un à trois chiffres)
  • 30. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Guillemets et apostrophes ● Protéger (échapper) les caractères spéciaux – Empêche leur interprétation pour le shell – Permet de les “passer” à une fonction ou au autre programme ● Conseil : placer les substitutions de variables entre guillemets – Pour éviter l'interprétation des caractères spéciaux ● Exemples : espaces, *, =, etc … ● La simple quote est plus stricte – Tout caractère y est interprété littéralement ● Même $ et
  • 31. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Extraction et soustraction de chaîne ● Il est possible de directement manipuler les chaines de caractère que contiennent les variables – A noter : le premier caractère d'une chaine à pour indice 0 ● ${#var} : longueur de la variable (en caractères) ● Extraction – ${var:1} : sous-chaine à partir du second caractère – ${var:2:4} : sous-chaine de 4 caractère à partir du 3ème ● Soustraction – ${var#expr} : supprime la plus petite sous-chaine correspondant à expr à partir du début de cette chaine – ${var##expr} : supprime la plus grande sous-chaine correspondant à expr à partir du début de cette chaine
  • 32. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment gérer les variables dans un script bash – Déclaration – Portée – Substitution ● Gestion des chaînes de caractère contenues dans les variables – Échappement – Extraction et soustraction de chaînes
  • 33. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com États de sortie Bases du scripting Bash Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 34. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Etats de sortie ● Tester l'état de sortie d'un programme ● Sortie d'un script
  • 35. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com États de sortie ● chaque programme ou fonction renvoi une valeur numérique – entre 0 et 255 ● 0 si il s'est bien déroulé (sauf cas particuliers) – un chiffre différent de 0 indique donc un code d'erreur
  • 36. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Tester l'état de sortie d'un programme ● Nous pouvons évaluer l'état de sortie grâce à plusieurs méthodes de test – if/else – enchaînements conditionnels – case – cf cours suivant ● $? permet également de récupérer la valeur de sortie du dernier programme exécuté
  • 37. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Sortie d'un script ● Commande exit nnn – où nnn est l'état de sortie à renvoyer ● Sans cette commande, c'est la valeur de sortie de la dernière opération exécutée qui est renvoyée – équivalent à exit ou encore exit $?
  • 38. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Valeur de retour des scripts, programmes et fonctions ● Comment sortir d'un script en renvoyant une valeur.
  • 39. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Tests Bases du scripting Bash Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 40. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Test ● Composition ● Alternatives : si - sinon ● Alternatives : Selon
  • 41. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Test ● ou ● Exemples test expressiontest expression [ expression ][ expression ] [ 2 -lt 3 ][ 2 -lt 3 ] [ "$var1" != "$var2" ][ "$var1" != "$var2" ] [ -x /bin/bash ][ -x /bin/bash ]
  • 42. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Composition ● séquentielle : cmd1 ; cmd2 ● parallèle : cmd1 & cmd2 ● sur erreur (ou) : cmd1 || cmd2 ● sur succès (et) : cmd1 && cmd2
  • 43. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Alternatives : si - sinon if test then instructions elif test then instructions … else instructions fi if test then instructions elif test then instructions … else instructions fi
  • 44. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Alternatives : Selon case variable in expr) instructions ;; … esac case variable in expr) instructions ;; … esac ● Attention : case n'utilise pas d'expression régulière, mais du pattern matching
  • 45. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment réaliser des tests en scripting Bash – la commande test – composition – if ; then ; else – case
  • 46. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Opérations Bases du scripting Bash Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 47. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Opérateurs arithmétiques ● Affectation arithmétique ● Opérateurs binaires ● Opérateurs logiques ● Changement de base ● Evaluation arithmétique
  • 48. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Opérateurs arithmétiques Opérateur Description + addition - soustraction / division * multiplication ** puissance (Bash 2.02 et supérieurs) % modulo (reste de division entière) Remarque : Bash ne comprend pas l'arithmétique à virgule flottante, et interprète donc les nombres décimaux comme des chaînes de caractère. Toute opération sera donc toujours entière. Pour des calcules complexes, utilisez le language bc.
  • 49. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Affectation arithmétique Opérateur Description += incrémentation -= décrémentation /= affectation par division *= affectation par multiplication %= affectation du reste de la division entière Associe affectation et opérateur arithmétique pour modifier la valeur d'une variable par le résultat d'une opération entre sa valeur précédente et une constante.
  • 50. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Opérateurs binaires Opérateur Description << décalage d'un bit à gauche (multiplication par 2) >> décalage d'un bit à droite (division par 2) & ET binaire | OU (inclusif) binaire ~ NON binaire ^ XOR (ou exclusif) binaire Tout ces opérateurs peuvent également être associés à l'affectation comme p opérateurs arithmétiques. Exemple : <<=
  • 51. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Opérateurs logiques ● la composition sur erreur (||) et la composition du réussite (&&) peuvent également être utilisés comme des OU et ET logiques. ● la commande ! permet d'inverser le retour d'une commande – et donc d'agir comme un NON logique – exemple : ! which /bin/bash
  • 52. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Changement de base ● base 10 par défaut ● si un nombre est précédé de 0 : base 8 (octal) ● si un nombre est précédé de 0x : base 16 (hexadécimal) ● Pour utiliser d'autres bases, précéder le nombre de BASE# – maximum : 64 – notation : 10 chiffres + 26 caractères minuscules + 26 caractères majuscules + @ + _
  • 53. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Evaluation arithmétique ● commande let ● double parenthèse – apporte les mêmes fonctionnalités que let – permet la manipulation de variables à la manière du C ● Exemple – permet une “substitution” d'évaluation arithmétique (( var++ )) let 'var = 2 + 3' echo $(( 2 ** 3 ))
  • 54. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment effectuer des opérations en Bash – opérateurs arithmétiques, binaires et logiques – changement de base – évaluation
  • 55. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Boucles Bases du scripting Bash Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 56. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Pour ● Tant que ● Contrôle de boucles
  • 57. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Pour ● la variable var prendra successivement la valeur de chacun des éléments de la liste (séparés par des espaces) ● Exemple : for var in liste do … done for var in liste do … done for couleur in rouge orange vert do echo $couleur done for couleur in rouge orange vert do echo $couleur done
  • 58. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Pour ● Astuce : il est possible d'écrire un for à la manière du C grâce à (( … )) ● Exemple : ● Remarque : (( … )) n'est pas ici considéré comme une évaluation arithmétique mais comme un argument particulier de for for (( i=1 ; i<=5 ; i++ )) do echo $i done for (( i=1 ; i<=5 ; i++ )) do echo $i done
  • 59. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Tant que while cmd do … done while cmd do … done ● tant que la commande cmd renverra 0 ● tant que la commande cmd ne renverra pas 0 ● cmd est généralement un test while cmd do … done while cmd do … done
  • 60. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Contrôle de boucles ● break : termine (sort de) la boucle – break N : sortir de N niveaux de boucles (1 par défaut) ● continue : provoque un saut jusqu'à la prochaine itération de la boucle – continue N : provoque un saut jusqu'à la prochaine itération de la boucle de N niveaux au dessus ● sans effectuer les itérations suivantes des boucles de niveau 1 à N-1
  • 61. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment effectuer des boucles en Bash – Pour (for) – Tant que (while et until) ● Comment contrôler les itérations de ces boucles – grâce à break et continue
  • 62. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Substitution de commande Bases du scripting Bash Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 63. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Qu'est ce que c'est ? ● Syntaxe ● Exemples d'utilisation
  • 64. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Qu'est ce que c'est ? ● Ia substitution de commande permet de “brancher” la sortie d'une commande dans un autre contexte ● Elle permet : – l'affectation de cette sortie à une variable – l'utilisation de cette sortie comme argument d'une autre commande – etc ...
  • 65. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Syntaxe ● On encadre pour cela la commande d'anti-quotes – altgr + 7 sur les claviers Azerty ● Nouvelle syntaxe : $( … ) – à ne pas confondre avec l'évaluation arithmétique – permet l'imbrication – meilleure lisibilité `ma commande``ma commande`
  • 66. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Exemples d'utilisation ● Comme argument – d'un test – de for ● Pour affectation – du contenu d'un fichier ● la deuxième solution étant moins performante, puisque nécessitant un nouveau processus [ -x `which bash` ][ -x `which bash` ] for i in `seq 1 100` ; dofor i in `seq 1 100` ; do variable=`<fichier`variable=`<fichier` variable=`cat fichier`variable=`cat fichier`
  • 67. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Ce qu'est la subsitution de commande. ● Comment la réaliser. ● Quelques exemples d'utilisation courante.
  • 68. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Documents intégrés Scripting avancé Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 69. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Qu'est ce que c'est ● Syntaxe ● Exemples : édition de texte ● Exemples : multi-lignes ● Pour aller plus loin ● Chaînes intégrées
  • 70. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Qu'est ce que c'est ● une solution simple et rapide pour envoyer une suite de commandes à un programme interactif. ● permet donc de réaliser des “scripts” pour beaucoup de programmes – dont certains non prévus à cet usage – cat, ex, echo, wall, etc … ● permet également une meilleure lisibilitée des entrées multi- lignes
  • 71. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Syntaxe ● le délimiteur indique la fin des entrées – il peut être n'importe quelle suite de caractères – par convention, on utilisera généralement EOF commande <<délimiteur entrées … délimiteur commande <<délimiteur entrées … délimiteur
  • 72. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Exemples : édition de texte ● avec vim ● avec ex vim monfichier <<xxxLIMITExxx i ligne 1 ligne 2 ^[ :wq ! xxxLIMITExxx vim monfichier <<xxxLIMITExxx i ligne 1 ligne 2 ^[ :wq ! xxxLIMITExxx ex $mot <<EOF :%s/$ORIGINAL/$REMPLACEMENT/g :wq EOF ex $mot <<EOF :%s/$ORIGINAL/$REMPLACEMENT/g :wq EOF
  • 73. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Exemples : multi-lignes cat <<-EOF ------------------------------------- Ceci est la ligne 1 du message. Ceci est la ligne 2 du message. Ceci est la ligne 3 du message. Ceci est la ligne 4 du message. Ceci est la dernière ligne du message. ------------------------------------- EOF cat <<-EOF ------------------------------------- Ceci est la ligne 1 du message. Ceci est la ligne 2 du message. Ceci est la ligne 3 du message. Ceci est la ligne 4 du message. Ceci est la dernière ligne du message. ------------------------------------- EOF ● Astuce : vous pouvez supprimer les tabulations en début de ligne d'un document intégré en précédent le délimiteur du signe '-'
  • 74. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Pour aller plus loin ● Les documents intégrés supportent la substitution de variable ● Il est possible de rediriger la sortie de la commande appelée ● On peu réaliser un bloc de commentaire Bash en effectuant un document intégré sur la commande ':' commande > fichier <<délimiteurcommande > fichier <<délimiteur
  • 75. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Chaînes intégrées ● forme minimale de document intégré – permet de n'envoyer qu'un chaîne simple ● syntaxe ● trés utile pour tester votre script commande <<< chainecommande <<< chaine read -p "entrez un nombre" nbr <<< "22"read -p "entrez un nombre" nbr <<< "22"
  • 76. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment "scripter" n'importe quel programme grâce aux documents intégrés. – syntaxe – usages – fonctions avancées ● Comment envoyer une valeur à n'importe quel programme grâce aux chaînes intégrées.
  • 77. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Sous-shells et shells restreints Scripting avancé Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 78. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Sous-shell – Syntaxe – A savoir ● Shell restreint – Actions essentielles désactivées
  • 79. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Sous-shell ● permet de lancer un processus fils de notre script – qui exécutera son propre "flot" de commandes – dont les variables ne sont pas visibles du shell père ● chaque commande externe appelé dans notre shell lance son propre processus – ce n'est pas le cas des commandes internes (qui demandent donc moins de ressources)
  • 80. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Syntaxe ● encadrer une série de commandes par des parenthèses ( cmd1 cmd2 cmd3 ) ( cmd1 cmd2 cmd3 )
  • 81. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com A savoir ● La commande exit ne termine que le processus courant – si elle est réalisée dans un sous-shell, elle ne mettra donc fin qu'à celui-ci, et non au script bash lui même ● Une commande cd effectuée au sain d'un sous-shell n'a d'impacte que sur celui-ci ● Il est possible d'executer deux sous shells en parallèle en les séparant par un '&' (sans retour à la ligne)
  • 82. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Shell restreint ● mode spécial ● désactive certaines commandes – minimise les risques – en limitant les droits ● Pour passer en mode restreint : ouset -rset -r set --restrictedset --restricted
  • 83. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Actions essentielles désactivées ● changement de répertoire de travail (cd) ● changement de valeur des variables d'environnement suivantes : $PATH, $SHELL, $BASH_ENV, $ENV. ● lecture et remplacement d'options d'environnement de shell $SHELLOPTS. ● redirection de sortie. ● appel à des commandes contenant un ou plusieurs /. ● substituer un processus différent de celui du shell (exec) ● sortir du mode restreint au sain du script
  • 84. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment lancer une série d'opération au sain d'un nouveau processus (sous shell). – les principales utilitées de cette démarche ● Comment limiter les fonctionnalités d'un script grâce au shell restreint.
  • 85. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Fonctions Scripting avancé Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 86. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Fonctions – Syntaxe – A savoir ● Aliases
  • 87. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Fonctions ● sembables aux fonctions des autres langages – bien que très limitées – sous-routine implémentant un certain nombre d'opérations dans un but précis ● A utiliser pour remplacer toute suite d'opération répétées plusieurs fois au cours d'un script
  • 88. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Syntaxe ● classique bash ● "C-like" function nom_fonction { … } function nom_fonction { … } nom_fonction() { … } nom_fonction() { … }
  • 89. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com A savoir ● Une fonction ne peu être vide ● Elles peuvent prendre des arguments de la même manière qu'un script – pas entre les parenthèses ! – accessibles via $1 $2 etc … au sain de la fonction ● Comme tout programme, elle renvoie également un code de sortie
  • 90. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Aliases ● simple raccourci pour une longue séquence de commandes – déclaré grâce à la commande alias – exemple – pour supprimer un alias : commande unalias ● particulièrement utile en mode interactif – cd bashrc ● très peu en scripting, car très limité alias la="ls -la" la alias la="ls -la" la
  • 91. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment écrire des fonctions en Bash. ● Comment mettre en place un alias.
  • 92. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Listes et tableaux Scripting avancé Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 93. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Affectation et substitution ● A savoir
  • 94. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Affectation et substitution ● Affectation – de l'ensemble d'un tableau – d'un élément d'un tableau ● Substitution d'un élément d'un tableau – toutes les opérations de chaîne déjà connues sur les variables sont également réalisables – exemple tableau[xx]="valeur"tableau[xx]="valeur" tableau=(val1 val2 val3)tableau=(val1 val2 val3) ${#tableau[@]} # "longueur" (nombre d'éléments) d'un tableau${#tableau[@]} # "longueur" (nombre d'éléments) d'un tableau tableau[xx]="valeur"tableau[xx]="valeur"
  • 95. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com A savoir ● le premier indice d'un tableau est 0 ● ${tableau} référence le premier élément d'un tableau, non le tableau en entier ● un tableau bash n'a pas de taille fixe. Il s'apperente donc plus à une liste
  • 96. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment déclarer est manipuler des tableaux (ou listes) en scripting bash.
  • 97. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Débogage Scripting avancé Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 98. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Introduction ● Suivre l’exécution de votre script ● Quelques recommandations
  • 99. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Introduction ● Pas de débogueur intégré ● Des messages d'erreurs souvent obscures ● Nous allons donc voir ici quelques astuces pour déboguer votre script.
  • 100. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Suivre l'execution de votre script ● Effectuer des affichages (echo) aux points clés – Encore mieux : ne le faire qu'en mode débug ● Filter les sorties des commandes clés grâce à tee ● Utiliser la variable LINENO – prend automatiquement la valeur de la ligne du script où elle est appelée ### debecho (debug-echo) par Stefano Falsetto ### ### Affichera les paramètres seulement si DEBUG est configuré. ### debecho () { if [ ! -z "$DEBUG" ]; then echo "$1" >&2 # ^^^ vers stderr fi } ### debecho (debug-echo) par Stefano Falsetto ### ### Affichera les paramètres seulement si DEBUG est configuré. ### debecho () { if [ ! -z "$DEBUG" ]; then echo "$1" >&2 # ^^^ vers stderr fi }
  • 101. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Quelques recommandations ● Tester chaque variables et conditions aux points critiques – On peu pour cela créer une fonction assert, inspirée du C ● Qui sortira du script avec un message d'erreur spécifique en cas de non respect d'un condition donnée ● Exemple : tester si une variable est un nombre – ici, le premier argument de la fonction assert sera bien entendu testé via la commande test pour un if, qui exécutera un exit en cas de non respect de cette condition ● Intercepter le signal EXIT avec trap afin d'afficher un message personnalisé en cas d'arrêt du script – comme par exemple pour afficher les valeurs de différentes variable assert "$var1"' =~ '^[0-9]+$''assert "$var1"' =~ '^[0-9]+$'' trap 'echo variables : var1 = $var1 / var2 = $var2' EXITtrap 'echo variables : var1 = $var1 / var2 = $var2' EXIT
  • 102. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment déboguer un script bash.
  • 103. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Options de Bash Scripting avancé Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 104. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Plan ● Introduction ● Options utiles au débogage ● Autres options utiles ● Pour aller plus loins
  • 105. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Introduction ● Permettent de modifier le comportement du shell ● Activées soit – au lancement du script, via l'appel de l'interpréteur ● shebang ou ligne de commande – en cours d'execution, via la commande set ● activer une option : set -o nom ou set -abrévation ● désactiver une option : set +o option ou set +raccourci set -o verboseset -o verbose set -vset -v
  • 106. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Options utiles au débogage Abréviation Nom Description -n noexec Teste les erreurs de syntaxe du script sans l'exécuter. -v verbose Affiche chaque commande avant de l'exécuter. -x xtrace Développe et affiche chaque commande avant de l'exécuter.
  • 107. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Autres options utiles Abréviation Nom Description -C noclobber Empêche tout écrassement de fichier pré- existant avec les opérateurs >, >& et <>. Surpassable par l'usage de >| -a allexport Exporter toutes les variables et fonctions modifiées ou créés. -f noglob Désactive le globbing (développement des chemins). -r restricted Mode restreint. -u nounset Empêche l'usage de variable non définie (erreur et sortie du script).
  • 108. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Pour aller plus loins ● Bien d'autres comportements facultatifs sont (dés)activables dans vos scripts – grâce à la commande shopt – Options ● -s var : activer ● -d var : désactiver ● Exemple : rendre case insensible à la casse shopt -s nocasematchshopt -s nocasematch shopt [-pqsu] [-o] [nom_opt ...]shopt [-pqsu] [-o] [nom_opt ...]
  • 109. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Comment modifier le comportement de notre script – en activant / désactivant certaines fonctionnalitées du shell – grâce aux options de la commande bash, à set et à shopt
  • 110. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Noël Macé Formateur et Consultant indépendant Expert Unix et FOSS Contact : alphorm@noelmace.com Conclusion Conclusion Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum
  • 111. Scripting Bash tous droits réservés noelmace.com autorisation d'exploitation exceptionnellement délivrée pour le site alphorm.com Ce qu’on a couvert ● Merci à tous et à bientôt.