0% ont trouvé ce document utile (0 vote)
73 vues15 pages

Introduction au Shell Linux

Transféré par

anass elbaz
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
73 vues15 pages

Introduction au Shell Linux

Transféré par

anass elbaz
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

3 ISI

Programmation Shell (Linux)

2ème partie

Professeur: IOUNOUSSE Jawad


Commandes internes / externes
 Commandes internes:
Une commande interne est une commande dont le code est implanté au sein de
l’interpréteur de commande. Cela signifie que, lorsqu’on change de Shell courant ou de
connexion, par exemple en passant de bash au C-shell, on ne dispose plus des mêmes
commandes internes.
Exemples de commandes internes : cd , echo , for , pwd

 Commandes externes:
Une commande externe est une commande dont le code se trouve dans un fichier
ordinaire. Le shell crée un processus pour exécuter une commande externe. Parmi
l’ensemble des commandes externes que l’on peut trouver dans un système, nous
utiliserons principalement les commandes unix (ex : ls, mkdir, vi, sleep) et les
fichiers shell.
La localisation du code d'une commande externe doit être connue du shell pour qu'il
puisse exécuter cette commande. A cette fin, bash utilise la valeur de sa variable
prédéfinie PATH. Celle-ci contient une liste de chemins séparés par le caractère : (ex :
/bin:/usr/bin).
Commandes internes / externes
- Pour connaître le statut d’une commande, on utilise la commande interne type.
Exemple: type cd ; type touch
type –t pwd ; type –t ls
- La commande interne est exécutée en priorité,
- Tous les fichiers au format binaire exécutable ainsi que tous les fichiers au format
texte représentant un script de commandes sont considérés comme commandes
externes,
- L'exécution d'une commande interne est plus rapide,
- La commande help liste toutes les commandes internes du Shell
Types des variables
- Il est possible d'écrire dans un script des commentaires afin de faciliter la
compréhension du script. Les commentaires sont désignés à l'aide du caractère #.
# Ceci est un commentaire

En général, il y a deux types de variables dans un Shell:


 Les variables utilisateur:
Il est possible de définir des variables dites variables utilisateur qui vont
permettre de stocker des informations utiles durant l'exécution de scripts.
 Les variables d'environnement:
Ce sont des variables définies dans l’environnement Shell. Elles contiennent des
infos nécessaires au fonctionnement de l’interpréteur et des commandes lancées à
partir de celui-ci.
 Les variables des paramètres:
Comme toutes les commandes, vos scripts bash peuvent eux aussi accepter des
paramètres.
Les variables Utilisateur
Une variable est une suite de caractères alphanumériques associée éventuellement à
une valeur.
 Nommage des variables:
- Le premier caractère doit être obligatoirement une lettre minuscule, majuscule ou un
tiret bas [a-zA-Z_]
- Les caractères suivants peuvent être des lettres en minuscule, majuscule, des chiffres
de 0 à 9 ou un tiret bas [a-zA-Z0-9_]

 Définition d'une variable:


- Assignation de variable: $ variable1=valeur1
- Consultation de variable par $variable1 ou ${variable1}
- Visualisation de toutes les variables définies par la commande:
( set -o posix ; set ) | less
- Destruction d’une variable par la commande: unset variable
- Protection d’une variable en écriture : readonly variable
- Liste des variables protégées en écriture : readonly
Les variables Utilisateur
$ TITI=gorilla
$ TITI=welcome $ unset XYZ
$ echo $TITI $ (set -o posix;set)|less
welcome HOME=/users/isga
$ XYZ=3 LOGNAME=isga
$ (set -o posix ; set) | less PATH=/bin :/usr/bin
HOME=/users/isga PS1=’$ ’
LOGNAME=isga PWD=/users/isga/A
PATH=/bin :/usr/bin SHELL=/usr/local/bin/bash
PS1=’$ ’ TERM=xterm
PWD=/users/isga/A TITI=gorilla
SHELL=/usr/local/bin/bash USER=isga
TERM=xterm $ readonly TITI
TITI=welcome $ TITI=koala
USER=isga TITI : is read only
XYZ=3 $ readonly
$ TITI
$
Les variables Utilisateur
 Commande echo pour l’affichage:
Voyons la différence entre l’utilisation des quotes, des doubles quotes et des back quotes:

script.sh
Créons un fichier « script.sh » : #!/bin/bash

$ touch script.sh msg= 'pwd'


$ chmod +x script.sh echo 'Le message 1 est : $msg'
echo "Le message 2 est : $msg"

On l’exécute par: msg= `pwd`


$ ./script.sh echo "Le message 3 est : $msg"

Résultat
Le message 1 est : $msg
Le message 2 est : pwd
Le message 3 est : /home/user
Les variables Utilisateur
 Commande read pour la saisie:

$ read v
$ echo $v
Quelques options:
-p : pour afficher un message
$ read –p "donner v: " v
-s : pour masquer la saisie
$ read –p "donner v: " –s v
-n : pour limiter le nombre de caractères
$ read –p "donner v: " –n 5 v
-t : pour limiter le temps de saisie
$ read –p "donner v: " –t 2 v
Les variables Utilisateur
$ MOT=volume
 Précaution sur les variables:
$ echo $MOT42
Mieux vaut utiliser ${nom_variable} que
$nom_variable : $ echo ${MOT}42
volume42
$
 Substitution de variables:
utilise la valeur de la variable si elle est positionnée et non
${variable:-valeur}
nulle, sinon utilise la valeur donnée.
utilise la valeur de la variable si elle est positionnée et est non
${variable:=valeur} nulle, sinon affecte la valeur à la variable et utilise la valeur
donnée.
utilise la valeur de la variable si elle est positionnée et non
${variable:?valeur} nulle, sinon écrit la valeur sur l’erreur standard et fait un exit
avec un statut non nul
utilise une chaîne vide si la variable est positionnée et non
${variable:+valeur}
nulle, sinon, utilise la valeur.
${#variable} utilise la taille de la valeur de la variable
Les variables Utilisateur
 Substitution de variables: (Exemples)
$ jour=mardi
$ echo "Nous sommes : ${jour:-dimanche}"
Nous sommes : mardi
$ unset jour
$ echo "Nous sommes : ${jour:-dimanche}"
${variable:-valeur}
Nous sommes : dimanche
$ echo $jour
$

$ jour=mardi
$ echo "Nous sommes : ${jour:=dimanche}"
Nous sommes : mardi
$ echo $jour
mardi
$ unset jour ${variable:=valeur}
$ echo "Nous sommes : ${jour:=dimanche}"
Nous sommes : dimanche
$ echo $jour
dimanche
$
Les variables Utilisateur
 Substitution de variables: (Exemples)
$ bool=1
$ echo "Si bool=1 alors j'affiche :
${bool:+true}"
Si bool=1 alors j'affiche : true
$ unset bool ${variable:+valeur}
$ echo "Si bool=1 alors j'affiche :
${bool:+true}"
Si bool=1 alors j'affiche :
$

$ nombre=56
$ echo ${nombre:?"nombre indefini"}
56
$ unset nombre
$ echo ${nombre:?"nombre indefini"} ${variable:?message}
-bash: nombre: nombre indefini

$ echo ${nombre:?} #message par défaut


-bash: nombre : parametre vide ou non defini
$
Les variables d’environnement
Variables d’environnement courantes utilisées par de nombreuses commandes (ainsi
que par le Shell) :

HOME Le répertoire « maison » de l’utilisateur


USER Le login utilisateur
SHELL Le Shell utilisateur
La liste des chemins dans laquelle le Shell cherchera les commandes
PATH
exécutables qui seront tapés sans indication de chemin
TERM Le type de terminal
PS1 L’invite (prompt)
PWD Le répertoire courant
LANG Le langage utilisé
LOGNAME Le nom de l'utilisateur connecté

L’affichage des variables d’environnement se fait par la commande env


Les variables des paramètres
Comme toutes les commandes, vos scripts bash peuvent eux aussi accepter des
paramètres. Exemple:
./variables.sh param1 param2 param3
Pour récupérer ces paramètres dans notre script on utilise ce qu’on appelle
variables paramètres (variables positionnelles):

Syntaxe Commande
$0 Nom du script Shell
$1, $2, .. Le premier, deuxième, ... paramètre
$# Le nombre de paramètres passés au script Shell
$@ Tous les paramètres passés au script Shell
$* Tous les paramètres passés au script Shell sous la forme de mots séparés
Les variables des paramètres
Exemple : « script2.sh » contient le script suivant:
script2.sh
#!/bin/sh
# Ce programme affiche les parametres de la ligne de commande
echo "* Le nom du programme est : $0"
echo "* Le troisieme parametre est : $3"
echo "* Le nombre de parametre est : $#"
echo "* Tous les parametres (mots individuels) : $*"
echo "* Tous les parametres : $@"
exit 0

$ ./script2.sh un "deux" "trois quatre" cinq


* Le nom du programme est : ./script2.sh
* Le troisieme parametre est : trois quatre
* Le nombre de parametres est : 4
* Tous les parametres (mots individuels) : un deux trois
quatre cinq
* Tous les parametres : un deux trois quatre cinq
$
Les variables des paramètres
Exemple : « script3.sh » contient le script suivant:
script3.sh
#!/bin/sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12
exit 0
$ ./script3.sh un deux trois quatre cinq six sept huit neuf dix
onze douze
un deux trois quatre cinq six sept huit neuf un0 un1 un2
$

script3.sh
# !/bin/sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12}
exit 0
$ ./script3.sh un deux trois quatre cinq six sept huit neuf dix
onze douze
un deux trois quatre cinq six sept huit neuf dix onze douze
$

Vous aimerez peut-être aussi