0% ont trouvé ce document utile (0 vote)
110 vues29 pages

Scripts Shell UNIX Interactifs

Transféré par

Ryad Ryad
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)
110 vues29 pages

Scripts Shell UNIX Interactifs

Transféré par

Ryad Ryad
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

Système d’exploitation – UNIX

Programmation SHELL

Partie 2

Les SHELL Scripts


Concepts de base

Pr. Khadija OUAZZANI TOUHAMI 1


Système d’exploitation – UNIX
Programmation SHELL

1. Interactivité

Les Shell Scripts interactifs sont basés sur :


✓ les commandes shell « read » et « echo »
✓ l’usage de messages et de variables
Exemple : Le Shell Script «Exo»

Exo
echo Cher utilisateur, quel est ton nom \?
read nom
echo Bienvenue $nom

Le backslash « \ » permet d’inhiber l’interprétation du


caractère « ? ».

Pr. Khadija OUAZZANI TOUHAMI 2


Système d’exploitation – UNIX
Programmation SHELL

1. Interactivité

Exécution de Exo :
2 façons de procéder pour exécuter le shell script Exo :

➢ Créer un sous shell par la commande sh pour le faire :


$ sh Exo

➢ Rendre le shell script Exo exécutable, puis l’exécuter


directement par son nom :
$ chmod u+x Exo
$ Exo

Pr. Khadija OUAZZANI TOUHAMI 3


Système d’exploitation – UNIX
Programmation SHELL

1. Interactivité

Résultats de Exo :
Cher utilisateur, quel est ton nom ?
paul
Bienvenue paul
Remarque :
Par la même commande « read », on peut lire plusieurs
variables, les valeurs peuvent être rentrées sur la même
ligne, sous forme de plusieurs mots séparés par des espaces:
Exemple : $ read nom1 nom2
unix windows

Pr. Khadija OUAZZANI TOUHAMI 4


Système d’exploitation – UNIX
Programmation SHELL

2. Arguments ou Paramètres

La plupart des commandes shell acceptent des paramètres


ou arguments.
Exemple : $ mv F1 F2
La même approche est valable pour les shell scripts.
Les arguments d’un shell script sont référencés par leur
position dans la liste des paramètres. D’où le nom
d’arguments ou de paramètres positionnels. A savoir :
$1 : premier paramètre ou argument positionnel
$2 : second
etc.

Pr. Khadija OUAZZANI TOUHAMI 5


Système d’exploitation – UNIX
Programmation SHELL

2. Arguments ou Paramètres

Conventions :
$0 : nom de la commande ou du shell script lui-même
$* : liste des arguments
$# : nombre d’arguments

Exemple : Fichier de commandes ou shell script «Expliquer»

Expliquer
echo Je suis le shell script $0
echo J\’ai $# arguments
echo Mes arguments sont $*
echo Mon premier argument est $1

Pr. Khadija OUAZZANI TOUHAMI 6


Système d’exploitation – UNIX
Programmation SHELL

2. Arguments ou Paramètres

Exécution :
$ sh Expliquer MOI LES ARGUMENTS
Ou bien
$ chmod u+x Expliquer
$ Expliquer MOI LES ARGUMENTS
Résultats :
Je suis le shell script Expliquer
J’ai 3 arguments
Mes arguments sont MOI LES ARGUMENTS
Mon premier argument est MOI

Pr. Khadija OUAZZANI TOUHAMI 7


Système d’exploitation – UNIX
Programmation SHELL

2. Arguments ou Paramètres

Autre exemple :
Un shell script avec paramètres mais non interactif :

Exo1
cat $1 $2 > $3
cp $3 $HOME/stockage/$[Link]

Exécution :
$ chmod u+x Exo1
$ Exo1 F1 F2 F1F2

Résultats : Rien à l’écran

Pr. Khadija OUAZZANI TOUHAMI 8


Système d’exploitation – UNIX
Programmation SHELL

3. Substitution de commande

Usage du méta caractère back quotte ou anti quotte «` ».


Lorsqu’une chaîne de caractères est entourée par « ` », elle
est interprétée comme une commande et est remplacée par
son résultat.
Exemples :
$ echo date
date
$ echo `date`
Mon feb 10 [Link]

Pr. Khadija OUAZZANI TOUHAMI 9


Système d’exploitation – UNIX
Programmation SHELL

3. Substitution de commande

$ set ` date `
permet de positionner les paramètres
par rapport au résultat :
$1 : Mon
$2 : feb
$3 : 10
$4 : [Link]
$ echo $1
Mon

Pr. Khadija OUAZZANI TOUHAMI 10


Système d’exploitation – UNIX
Programmation SHELL

3. Substitution de commande

Remarque :

La commande « set » utilisée dans un shell script qui a ses

paramètres écrasera les valeurs initiales des paramètres

positionnels, à savoir les paramètres par défaut du shell

script.

Pour ne pas perdre les valeurs initiales des paramètres d’un

shell script après l’usage de la commande « set », celles-ci

doivent être sauvegardées au préalable.


Pr. Khadija OUAZZANI TOUHAMI 11
Système d’exploitation – UNIX
Programmation SHELL

4. Scripts, pipes, filtres et redirections

Pipes et filtres :
Soit le shell script paramétré lprn suivant :
lprn
cat $* | pr | lpr

Concaténation Formateur Commande


des arguments (date, n° page) d’impression
$ chmod u+x lprn
$ lprn F G H

Pr. Khadija OUAZZANI TOUHAMI 12


Système d’exploitation – UNIX
Programmation SHELL

4. Scripts, filtres, pipes et redirections

$ ls *.c | sort | lprn

Liste des fichiers Tri Sortie


se terminant par .c alphabétique

ls *.c lpr

Shell sort pr
$ Impression

lprn Cat $*

Pr. Khadija OUAZZANI TOUHAMI 13


Système d’exploitation – UNIX
Programmation SHELL

4. Scripts, filtres, pipes et redirections

Remarque : Les pipes et les filtres peuvent être utilisés à


l’intérieur des shell scripts. Ils peuvent également être
utilisés à l’extérieur des shell scripts.

Redirections :
Soit le shell script paramétré srch suivant :

srch
grep $1 < /usr/users/paul/agenda

Le shell srch cherche dans le fichier agenda de paul la chaîne


de caractères représentée par le paramètre positionnel $1.

Pr. Khadija OUAZZANI TOUHAMI 14


Système d’exploitation – UNIX
Programmation SHELL

4. Scripts, filtres, pipes et redirections

Exemple :
$ chmod u+x srch
$ srch casa > contacts_casa
Les lignes du fichier agenda contenant la chaîne «casa»
seront redirigées vers le fichier «contacts_casa».

Remarque :
Les redirections peuvent être utilisées à l’intérieur des shell
scripts. Elles peuvent également être utilisées à l’extérieur
des shell scripts.

Pr. Khadija OUAZZANI TOUHAMI 15


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux

Les caractères spéciaux peuvent être utilisés :

➢ Sur une ligne de commande :

✓ avec des commandes shell

✓ avec des commandes utilisateurs ou shell

scripts

➢ Dans un shell script

Pr. Khadija OUAZZANI TOUHAMI 16


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux 5.1. Commandes séquentielles

Plusieurs commandes sur une même ligne, séparées par des


points virgules, de la façon suivante :
cmd1 ; cmd2 ; cmd3

Exemples :

➢ Dans un shell script :


cours=unix ; annee=2022 ; classe=3eme ; sem=2

➢ Sur une ligne de commande :


$ date ; ls ; who
$ date ; srch casa > contacts_casa

Pr. Khadija OUAZZANI TOUHAMI 17


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux 5.2. Commandes Backgound

Exécuter une commande en arrière plan ou en background de


la façon suivante :
cmd &
En effet, 2 modes d’exécution d’une commande :
➢ Mode foreground :
✓ commande bloquante
✓ le shell se bloque en attendant que le
processus soit terminé, après quoi il est réactivé
Exemple : $ ls
$ Exo1 F G H

Pr. Khadija OUAZZANI TOUHAMI 18


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux 5.2. Commandes Backgound

➢ Mode background
✓ commande non bloquante
✓ le contrôle est rendu au shell appelant
immédiatement
✓ les processus père (shell) et fils s’exécutent
en parallèle

Exemple :
$ cp -r gros-rep rep &
$ Exo1 &

Pr. Khadija OUAZZANI TOUHAMI 19


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux 5.2. Commandes Backgound

Remarques :

➢ possibilité d’usage des redirections

d’E/S avec le mode arrière plan

➢ l’exécution d’un processus en

background ne change pas l’entrée et la

sortie standard de celui-ci

Pr. Khadija OUAZZANI TOUHAMI 20


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux 5.3. Groupement de commandes

Grouper plusieurs commandes séquentielles, par l’usage des

parenthèses, de la façon suivante :

(cmd1 ; cmd2 ; cmd3)

Le but étant généralement de fusionner leurs résultats.

Exemple :
$ (date ; cat resultat) > datres
Concaténation de la date du jour et du contenu du
fichier «resultat» dans un fichier en sortie «datres».

Pr. Khadija OUAZZANI TOUHAMI 21


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux 5.4. Redirections

Exécution d’un shell script

Processus

Input Output Error

0 1 2
Entrée Sortie Erreur
standard standard standard
Clavier Ecran Ecran
par défaut par défaut par défaut

Pr. Khadija OUAZZANI TOUHAMI 22


Système d’exploitation – UNIX
Programmation SHELL

5. Caractères spéciaux 5.4. Redirections

Exemple :
$ sort < agenda > [Link] 2 > errlog &

Remarque :
2 > &1 Redirection de la sortie d’erreur vers la sortie
des résultats
1 > &2 Redirection de la sortie des résultats vers la
sortie d’erreur

Exemple : un message d’erreur dans un shell script


echo fichier $nom inexistant 1 > &2

Pr. Khadija OUAZZANI TOUHAMI 23


Système d’exploitation – UNIX
Programmation SHELL

6. Notion d’état de sortie

Etat de sortie ou exit status d’une commande :


✓ Terminaison correcte exit 0
✓ Terminaison incorrecte exit == 0

Exemple :
$ grep mot fichier

exit 0 : mot trouvé


exit 1 : mot non trouvé
exit 2 : pattern incorrect

Pr. Khadija OUAZZANI TOUHAMI 24


Système d’exploitation – UNIX
Programmation SHELL

7. Variables spéciales

$0 : nom de la commande en cours

$* : liste des paramètres positionnels

$# : nombre de paramètres positionnels

$$ : n° de processus du shell courant

$! : n° de processus du dernier processus en background

$? : état de sortie de la dernière commande exécutée

Pr. Khadija OUAZZANI TOUHAMI 25


Système d’exploitation – UNIX
Programmation SHELL

7. Variables spéciales

Exemple :
$ who >> Fwho
$ echo $? # état de sortie dernière commande?
0
$ cp -r gros-rep rep &
3657 # pid du processus lancé en background
$ echo $! # pid du dernier processus en background
3657
$

Pr. Khadija OUAZZANI TOUHAMI 26


Système d’exploitation – UNIX
Programmation SHELL

8. Mécanismes d’échappement

Echapper à l’interprétation, ou inhiber l’interprétation, des

caractères spéciaux :

\ (back slash) : négation d’un méta caractère

‘…’ (simple quottes) : négation de tous les méta caractères

’’…’’ (double quottes) : interprétation de $ , ` (back quotte) et

\ (back slash). Et non interprétation

de tous les autres.

Pr. Khadija OUAZZANI TOUHAMI 27


Système d’exploitation – UNIX
Programmation SHELL

8. Mécanismes d’échappement

Exemple :
$ echo `date`
Mon feb 10 17:00
$ echo ’Nous sommes le `date`’
Nous sommes le `date`
$ echo ’’Nous sommes le `date`’’
Nous sommes le Mon feb 10 17:00
$ set `date`
$ echo ’’Nous sommes le \’’ $1 \’’ ’’
Nous sommes le ’’Mon’’

Pr. Khadija OUAZZANI TOUHAMI 28


Système d’exploitation – UNIX
Programmation SHELL

8. Mécanismes d’échappement

$ echo ’Ceci est une <rc>


> tres longue <rc>
> phrase …’ <rc>
Ceci est une
tres longue
phrase …
$ echo Voici une etoile: \*
Voici une etoile: *
# Ceci est un commentaire
# Une commande nulle

Pr. Khadija OUAZZANI TOUHAMI 29

Vous aimerez peut-être aussi