0% ont trouvé ce document utile (0 vote)
39 vues49 pages

Module 3

Transféré par

kouyatemoussa003
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)
39 vues49 pages

Module 3

Transféré par

kouyatemoussa003
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

UTILISATION DU SHELL D'UNIX

Module3: UTILISATION DU SHELL

© Copyright eni-abt Dr Yacouba GOITA 1


OBJECTIFS

❶Connaître la structure de la ligne de


commande dans le SHELL d'UNIX.
❷Manipuler les méta caractères du SHELL
d’UNIX.
❸Introduire la notion de la programmation
dans le SHELL d’UNIX.

© Copyright eni-abt Dr Yacouba GOITA 2


La structure de la ligne de
commande:
• Lorsqu'une commande est lancée par le
SHELL, trois fichiers ayant chacun un numéro
appelé "file discriptor (fd) " sont ouverts par le
système. Ce sont:
– f Le fichier stdin ou standard input (fd=0)
– f Le fichier stdout ou standard output (fd=1)
– f Le fichier stderr ou standard error (fd=2)

© Copyright eni-abt Dr Yacouba GOITA 3


La forme canonique.

• La commande la plus simple est


un mot qui fait appel à un fichier
de même nom:
• Exemple:
–$ who
–$ date
© Copyright eni-abt Dr Yacouba GOITA 4
L'association de plusieurs commandes
sur la même ligne.
• Plusieurs commandes peuvent êtres
lancés sur la ligne si elles sont
séparées par un point virgule ";".
• Exemple:
$ date ; who

© Copyright eni-abt Dr Yacouba GOITA 5


Lancement d'une commande en
arrière plan.
• Il est possible de profiter de la
caractéristique multitâche d'UNIX pour
avoir plusieurs commandes qui tournent
en même temps et qui proviennent du
même utilisateur.
• Ceci est accompli en faisant exécuter des
commandes en arrière plan a l'aide du
caractère &.

© Copyright eni-abt Dr Yacouba GOITA 6


Exemple:
• $ sleep 5 (Attende 5 secondes pour
donner la main)
• $ (Le prompt reçue après 5 secondes )
• $(sleep 5 ; date )& date
2108 (l'identificateur du processus)
Mon March 00 09:13:21 2016
Mon March 00 09:13:26 2016

© Copyright eni-abt Dr Yacouba GOITA 7


• L'avant dernière ligne est le résultat
de deuxième commande date, alors
que la dernière ligne est celui de la
première commande date.
• On remarque le décalage de 5
secondes dans l'heure.

© Copyright eni-abt Dr Yacouba GOITA 8


Remarque
• Si le résultat d'une commande lancée en arrière plan
n'est pas affichable sur l'écran, la fin du processus
n'est pas indiquée par le SHELL. Dans ce cas, il est
conseillé de terminer la commande par un message.
• Exemple:
$ (ls -l > liste; sleep 10; echo "fini")&
21554
$fini
Le mot fini est affiché 10 secondes après l'écriture
sur liste.

© Copyright eni-abt Dr Yacouba GOITA 9


• L'exemple d'utilisation le plus courant est
l'écriture sur l'imprimante.
• Chaque tâche lancée en arrière-plan est
identifiée par un numéro appelé identificateur
de processus (process identifier) ou PID.
• Les état de ces tâches peuvent êtres consultés
sur l'écran grâce à la commande PS:

© Copyright eni-abt Dr Yacouba GOITA 10


$ ps -f.
• Les informations obtenues sont:
• Le nom de l'utilisateur qui a lancé la
commande,
• le numéro du PID de chaque processus,
• le numéro du PID du processus père,
• l'heure du début du processus,
• la durée du processus
• la commande de lancement

© Copyright eni-abt Dr Yacouba GOITA 11


Exemple
• $sleep 50&

© Copyright eni-abt Dr Yacouba GOITA 12


• Connaissant le numéro de la tâche ou son PID,
il est possible d'arrêter son exécution.
• Pour ce faire, il suffit d'envoyer le signal 9 a la
tâche désirée à l'aide de la commande kill.

© Copyright eni-abt Dr Yacouba GOITA 13


Exemple

On remarque que le processus (sleep 50) qui avait le


PID 22472 à disparu de la liste des processus.
© Copyright eni-abt Dr Yacouba GOITA 14
La redirection.
• Toute commande d'UNIX suppose l'existence
d'un flux de données en entrée qui provient
généralement du clavier et un flux de données
en sortie qui est généralement affiché sur
l'écran.
• Le clavier est donc considéré comme entrée
standard (stdin) et l'écran est considéré
comme la sortie standard (stdout).

© Copyright eni-abt Dr Yacouba GOITA 15


• Toute fois, le SHELL permet à l'utilisateur de :
• rediriger ses résultats vers un fichier accepter
les données à partir d'un fichier.
• Les données résultat d'une commande
peuvent êtres dirigées vers un fichier au lieu
de l'écran en utilisant le caractère ">" si le
fichier est nouveau et le caractère ">>" si les
données seront ajoutées en fin de fichier.
• Les syntaxes sont les suivantes:
© Copyright eni-abt Dr Yacouba GOITA 16
$commande > fichier

$commande >> fichier

© Copyright eni-abt Dr Yacouba GOITA 17


Exemple
$
$echo toto > temp
$cat temp
toto
$echo lolo >>temp
$cat temp
toto
Lolo
$echo bonjour > temp
$cat temp

© Copyright eni-abt Dr Yacouba GOITA 18


Le tube (pipe).
• C'est un moyen qui permet la simplification de
l'exécution de plusieurs commandes quand
chaque commande doit prendre comme
entrée la sortie de la commande qui la
précède.

© Copyright eni-abt Dr Yacouba GOITA 19


• En général, la séquence de redirection
suivante:
$commande1 > fichier_temp
$commande2 < fichier_temp
• est remplacée par:
$commande1 | commande2
• Les données résultat de la commande1 sont
les données entrée de la commande2.
© Copyright eni-abt Dr Yacouba GOITA 20
Exercice(a corriger en classe)

• Décomposez et interprétez les


commandes suivantes:
1. $ls -l | wc -l
2. $ls -l | head -6 | tail -1
3. $ls -l | tail -8 | tail -2

© Copyright eni-abt Dr Yacouba GOITA 21


Les métacaractères
• Le SHELL possède un ensemble de
caractères spéciaux appelés
métacartères:
❖Le métacaractère astérist (*) remplace
n'importe quelle séquence de caractères:
$echo * → ls
$echo fich.* → ls fich.*
© Copyright eni-abt Dr Yacouba GOITA 22
Les métacaractères(suite)
❖Le métacarctère point d'interrogation (?)
remplace un seul caractère.
• Exemple:
$ ls *.?
• Permet de lister que les fichiers dont les
extensions se composent d'un seul caractère.
❖Le métacaractère crochet ([...]) remplace un des
caractères contenus entre crochet.
❖ Le métacaractère crochet ([^...]) remplace un dås
caractères non contenus entre crochet.

© Copyright eni-abt Dr Yacouba GOITA 23


• Exemples:
• $ls essai[0-9]
• affiche fichiers ayant le nom "essai" et qui se
termine par un chiffre (essai1, esaai2,...etc)

© Copyright eni-abt Dr Yacouba GOITA 24


• $ls essai[!5,7]
• affiche fichiers ayant le nom "essai" et qui ne
se termine pas par 5 ou 7.

© Copyright eni-abt Dr Yacouba GOITA 25


• L'interprétation spéciale des métacaractères
par le SHELL est annulée soit en les faisant
précédé par l'antislash "\", ou en les mettant
entre guillemets.

© Copyright eni-abt Dr Yacouba GOITA 26


La programmation dans le SHELL
• L'un des rôles les plus importants du SHELL est
la programmation (est de créer de nouvelles
procédures et commandes).
• Le SHELL utilise les variables pour mémoriser
et traiter les données.

© Copyright eni-abt Dr Yacouba GOITA 27


types de variables SHELL.
• Deux (2) types de variables sont traités par le
SHELL:
• les entiers
• les chaînes de caractères.
• Le type de variable est implicitement reconnu
par le SHELL.

© Copyright eni-abt Dr Yacouba GOITA 28


Exemples
• $var1=167 :var1 est un entier
• $var2=suite :var2 est une chaîne de
caractères.

© Copyright eni-abt Dr Yacouba GOITA 29


• La valeur d'une chaîne de caractères doit être
incluse entre guillemets si elle comprend des
• espaces, des tabulations ou des point-virgules.
• Le caractère $ doit toujours précéder le nom
de la variable, sauf au moment de la
• déclaration de cette variable.
• Une variable peut être assignée à une autre
variable:
© Copyright eni-abt Dr Yacouba GOITA 30
Exemple
• $ch2=$ch1 (Attention, ici le premier dollar ($)
est le prompt d'UNIX)

© Copyright eni-abt Dr Yacouba GOITA 31


Exercice
• Ecrire l'instruction qui permet d'obtenir la
réponse suivante du système:
• ch1=première chaîne et ch2= deuxième
chaîne

© Copyright eni-abt Dr Yacouba GOITA 32


Evaluation des expression
arithmétiques.
• La commande expr ordonne au shell d'évaluer
une expression arithmétique qui peut être
composée de variables entières seulement, de
constantes entières seulement ou d'une
combinaison des deux.
• Les opérations arithmétiques permises sont:

© Copyright eni-abt Dr Yacouba GOITA 33


• L'addition
• la soustraction -
• la multiplication \*
• la division /
• et le reste de la division euclidienne %
• Les termes de l'expression doivent être
séparés par des blancs.

© Copyright eni-abt Dr Yacouba GOITA 34


Exemples
$
$var1=15
$var2=5
$X1= ` expr $var1 + 1 `
$echo $X1
16
$expr $var1 - $var2
10
$X2=` expr $var1 / $var2 `
$echo $X2
0
$

© Copyright eni-abt Dr Yacouba GOITA 35


Les arguments résultats de
commandes.
• Le résultat d'une commande peut servir
comme argument à une autre commande.
Dans ce cas, la commande argument doit être
à l'intérieur des apostrophes.
• Exemple:
$mail ‘cat work/agenda’ < essai1
• permet d'envoyer le fichier essai1 à tous les
utilisateurs déclarés dans le fichier agenda.

© Copyright eni-abt Dr Yacouba GOITA 36


• Le résultat d'une commande peut aussi être
stocké dans une variable et utilisé
ultérieurement.
• Exemple:
• $date
• $heure=‘date’
• $echo $heure

© Copyright eni-abt Dr Yacouba GOITA 37


• Le résultat paramètré, c'est à dire subdivisé en
plusieurs champs par la commande set. Ces
• champs seront représentés par les paramètres
$1, $2, ........., $N
• Exemple:

© Copyright eni-abt Dr Yacouba GOITA 38


• $
• $set `date `
• $echo $1
• Fri
• $echo $5
• EET
• $echo $6
• 1997
• $

© Copyright eni-abt Dr Yacouba GOITA 39


La création de nouvelles commandes.
• Soit le traitement suivant:
$
$cat > cmd1
echo la date est `date `
^d
$cat cmd1
echo la date est `date `
$
• Cette nouvelle commande est lancée en utilisant le
fichier comme argument de la redirection en entrée
pour le SHELL. La forme générale est:
sh < commande ou sh commande

© Copyright eni-abt Dr Yacouba GOITA 40


Exemple
• $
• $sh cmd1
• L'exécution du fichier des commandes peut
être simplifier en invoquant seulement son
nom. Seulement, l'utilisateur doit posséder de
droit d'accès en exécution sur ce fichier.

© Copyright eni-abt Dr Yacouba GOITA 41


• L'exemple suivant montre comment on peut
combiner plusieurs commandes utiles pour ne
former qu'une seule.
$
$Vi etat
echo " salut,
la date est ` date `
les utilisateurs sont ` who `
mon répertoire est ` pwd ` "
:wq

© Copyright eni-abt Dr Yacouba GOITA 42


Affectation de variables en interactif.
• La commande read permet l'interaction de l'utilisateur
avec le système.
$
$ cat > menu
echo "Quel est votre choix 1, 2 ou 3 ?"
read choix
echo "vous avez choisis $choix"
^d
$sh menu
Quel votre choix 1, 2 ou 3 ?2
vous avez choisis 2
$

© Copyright eni-abt Dr Yacouba GOITA 43


Les commandes avec arguments.
• Pour généraliser l'utilisation d'une commande
récemment créer il est possible de la
paramètrer. Les arguments de la commande
sont indiqués par les paramètres $1, $2, $3,
.....,$9 dans le fichier.

© Copyright eni-abt Dr Yacouba GOITA 44


Exemple:

$
$cat > cx
chmod u+x $1
echo permission execute accordée.
^D
$

© Copyright eni-abt Dr Yacouba GOITA 45


• L'étape suivante consiste à rendre la
commande cx elle même exécutable:
$
$cx cx
cx : execute permission dinied
$sh cx cx
permission execute accordée.
$

© Copyright eni-abt Dr Yacouba GOITA 46


• Une fois que le fichier ( ou la commande ) cx est rendu
exécutable, il peut être utilisé avec de nouveaux
arguments sans passer par sh.
• Exemple:
$
$ ls -l menu
-rw-r--r-- 1 user1 group ......... menu
$cx menu
permission execute accordée.
$ ls -l menu
-rwxr--r-- 1 user1 group ......... menu
$

© Copyright eni-abt Dr Yacouba GOITA 47


Exercice:
• Modifiez la commande cx pour qu'elle puisse
accepter plusieurs arguments en une seule
fois.

© Copyright eni-abt Dr Yacouba GOITA 48


Questions ?

© Copyright eni-abt Dr Yacouba GOITA 49

Vous aimerez peut-être aussi