1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D.,...

18
1 GPA435 Systèmes GPA435 Systèmes d’exploitation et d’exploitation et programmation de programmation de système système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell, E/S standard, tu séparation et regroupement des commandes U n ive rs ité d u Q uébec É co le d e te c h n o lo g ie s u p érieu re D é partem e n t de génie de la p ro du ctio n a u to m a tisée

Transcript of 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D.,...

Page 1: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

1

GPA435 Systèmes GPA435 Systèmes d’exploitation et d’exploitation et programmation de programmation de systèmesystème

Copyright, 2000 © Tony Wong, Ph.D., ing.

Chapitre 5Interpréteur de commande,

Bourne shell, E/S standard, tuyauxséparation et regroupement

des commandes

Université du Québec

École de technologie supérieureDépartem ent de génie de la production autom atisée

Page 2: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

2

Interpréteur de Interpréteur de commandescommandes

Bourne shell:Bourne shell:

•créé par Steve Bourne;créé par Steve Bourne;

•interpréteur par défaut de nombreux interpréteur par défaut de nombreux système UNIX.système UNIX.

Pourquoi utiliser le Bourne shell?Pourquoi utiliser le Bourne shell?

•plus ancien et plus répandu;plus ancien et plus répandu;

•très utilisé parmi les gestionnaires de très utilisé parmi les gestionnaires de systèmes et les développeurs de systèmes et les développeurs de logiciels.logiciels.

Interpréteur de commande

Page 3: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

4

Entrée-sortie standardEntrée-sortie standardEntrée standard Entrée standard normalement attachée à l’écran. normalement attachée à l’écran.• possède le numéro de descripteur 0.possède le numéro de descripteur 0.

Sortie standard Sortie standard normalement attachée au clavier. normalement attachée au clavier.• possède le numéro de descripteur 1.possède le numéro de descripteur 1.

Erreur standard Erreur standard normalement attachée à l’écran. normalement attachée à l’écran.• possède le numéro de descripteur 2.possède le numéro de descripteur 2.

Interpréteur de commande

Page 4: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

5

Entrée-sortie standardEntrée-sortie standard

Il est possible de rediriger les entrées-Il est possible de rediriger les entrées-sorties standards à des fichiers ou à sorties standards à des fichiers ou à d’autres programmes et commandes.d’autres programmes et commandes.

Redirection de l’entrée standardRedirection de l’entrée standard cat < NomFichiercat < NomFichier

Démonstration de la procédureDémonstration de la procédure

Interpréteur de commande

CommandeCommande Redirection de l’entrée standard à un fichier. Redirection de l’entrée standard à un fichier. L’entrée de la commande L’entrée de la commande cat(1)cat(1) est le fichier est le fichier

NomFichierNomFichier

Page 5: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

6

Entrée-sortie standardEntrée-sortie standard

Redirection de la sortie standardRedirection de la sortie standard• cat > NomFichiercat > NomFichier

Redirection de l’entrée et de la sortie standardRedirection de l’entrée et de la sortie standard• cat < FichierEntree > FichierSortiecat < FichierEntree > FichierSortie

Interpréteur de commande

Démonstration de la procédureDémonstration de la procédure

CommandeCommande Redirection de la sortie standard à un Redirection de la sortie standard à un fichier. La sortie de la commande fichier. La sortie de la commande cat(1)cat(1) est est

enregistré dans le fichier enregistré dans le fichier NomFichierNomFichier

Page 6: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

7

Entrée-sortie standardEntrée-sortie standard

Effet de la redirection:Effet de la redirection:

Interpréteur de commande

Clavier

C o m m an de

Ent

rée

stan

dard

Sans red irection

Clavier

C o m m an de

Fichiers

Fichiers

Term inal

Sort

ie sta

ndar

dTerm inal

E ntrée et sortiestand ard red irigées

< >

Page 7: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

8

Entrée-sortie standardEntrée-sortie standard

Rediriger la sortie vers un fichier Rediriger la sortie vers un fichier écrase le contenu du fichier de sortie.écrase le contenu du fichier de sortie.

Utiliser la concaténation pour préserver Utiliser la concaténation pour préserver le contenu du fichier de sortie:le contenu du fichier de sortie:• cat < toto.txt >> FichierSortiecat < toto.txt >> FichierSortie

Démonstration de la procédureDémonstration de la procédure

Interpréteur de commande

La sortie de la commande La sortie de la commande catcat est est ajoutée à la fin du fichier ajoutée à la fin du fichier FichierSortieFichierSortie

Page 8: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

9

Entrée-sortie standardEntrée-sortie standardRediriger l’erreur standard Rediriger l’erreur standard implique une syntaxe un peu implique une syntaxe un peu

différente.différente.Utilisation des numéros de descripteur.Utilisation des numéros de descripteur.commande < FichierEntreecommande < FichierEntreecommande <0 FichierEntreecommande <0 FichierEntreecommande > FichierSortiecommande > FichierSortiecommande 1> FichierSortiecommande 1> FichierSortiecommande 2> FichierErreurcommande 2> FichierErreur

Interpréteur de commande

ÉquivalentÉquivalentee

ÉquivalentÉquivalentee

Redirection de l’erreur standardRedirection de l’erreur standard

Page 9: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

10

Entrée-sortie standardEntrée-sortie standard

cat < entree.txt > sortie.txt 2> erreur.txtcat < entree.txt > sortie.txt 2> erreur.txt

cat > sortie.txt 2>&1cat > sortie.txt 2>&1

Démonstration de la procédureDémonstration de la procédure

Interpréteur de commande

Les messages d ’erreur de la commande Les messages d ’erreur de la commande cat cat seront enregistrés dans ce fichierseront enregistrés dans ce fichier

La sortie de La sortie de catcat est enregistrée dans le fichier est enregistrée dans le fichier sortie.txtsortie.txt. L ’erreur standard est redirigée à la . L ’erreur standard est redirigée à la

sortie standard. Donc, l’erreur standard est sortie standard. Donc, l’erreur standard est également redirigée au fichier également redirigée au fichier sortie.txtsortie.txt..

Page 10: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

11

TuyauxTuyaux

Tuyaux Tuyaux brancher la sortie brancher la sortie standard d’une commande à standard d’une commande à l’entrée standard d’une autre l’entrée standard d’une autre commande.commande.

Interpréteur de commande

commandeA [-option] [parametres] | commandeB [-option] [parametres] | commandeC

cmd1 cmd2

C o m m an de C o m m an de| (tuyau)

So rtiestan d ard

E n tréestan d ard

Page 11: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

12

TuyauxTuyaux

ls -lR | morels -lR | moreLa sortie de la commande La sortie de la commande lsls est l’entrée est l’entrée

de la commande de la commande moremore.. cat document.txt | tr abc ABC > traduit.txtcat document.txt | tr abc ABC > traduit.txt

Interpréteur de commande

TuyauTuyau

trtr ( (translatetranslate) remplace le ) remplace le caractère a par A, b par B et c caractère a par A, b par B et c

par C.par C.La sortie de La sortie de trtr est enregistrée est enregistrée dans le fichier dans le fichier traduit.txttraduit.txt

Page 12: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

13

Exécution arrière-planExécution arrière-planToutes les commandes vues jusqu’à présent sont Toutes les commandes vues jusqu’à présent sont

exécutées en avant-plan.exécutées en avant-plan.Monopolisent le terminal.Monopolisent le terminal.Ne convient pas à des tâches de longue durée.Ne convient pas à des tâches de longue durée.Lancer les commandes en arrière-plan:Lancer les commandes en arrière-plan:

• commande [-options] [paramètre] commande [-options] [paramètre] &&

Interpréteur de commande

Symbole indiquant une Symbole indiquant une exécution en arrière-plan d’une exécution en arrière-plan d’une

commandecommande

Page 13: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

14

Exécution arrière-planExécution arrière-plan

Exemple:Exemple: cat passwd.dat | sort > sortie.txt &cat passwd.dat | sort > sortie.txt &

Attention aux entrées-sorties des Attention aux entrées-sorties des commandes exécutées en arrière-plan !!!commandes exécutées en arrière-plan !!!

Interpréteur de commande

Laquelle des commandes sera-t-elle exécutée Laquelle des commandes sera-t-elle exécutée en arrière-plan ?en arrière-plan ?

Démonstration de la procédureDémonstration de la procédure

Page 14: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

15

Regroupement des Regroupement des commandescommandesExécution séquentielle d’une ligne de commandes:Exécution séquentielle d’une ligne de commandes:

• cmd1 ; cmd2 ; cmd3cmd1 ; cmd2 ; cmd3

Exécution séquentielle d’une ligne de commandes Exécution séquentielle d’une ligne de commandes par regroupement:par regroupement:• (cmd1 ; cmd2) ; cmd3(cmd1 ; cmd2) ; cmd3

• (cmd1 ; cmd2) & cmd3(cmd1 ; cmd2) & cmd3

Interpréteur de commande

Commandes regroupés sont exécutées dans un Commandes regroupés sont exécutées dans un interpréteur enfant (interpréteur enfant (subshellsubshell).).

Plusieurs Plusieurs combinaisons combinaisons sont possiblessont possibles

Page 15: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

16

Regroupement des Regroupement des commandescommandesExemple:Exemple:

Démonstration de la procédureDémonstration de la procédure

Interpréteur de commande

$ pwd ; (cd ..; pwd; cp user.txt test.txt; ls -l test.txt); pwd

Quelle sera la sortie de Quelle sera la sortie de ces deux commandes ?ces deux commandes ?

Commandes entre parenthèses sont Commandes entre parenthèses sont exécutées par un interpréteur enfant.exécutées par un interpréteur enfant.

Page 16: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

17

Regroupement des Regroupement des commandescommandes

Explication de l’exemple précédent:Explication de l’exemple précédent: pwdpwd affiche le nom du répertoire courant. affiche le nom du répertoire courant. (cd ..; pwd; cp user.txt test.txt; ls -l test.txt)(cd ..; pwd; cp user.txt test.txt; ls -l test.txt)

pwdpwd revient à l’interpréteur père et affiche le revient à l’interpréteur père et affiche le nom du répertoire courant.nom du répertoire courant.

Interpréteur de commande

Remonter Remonter vers le vers le répertoirrépertoire parente parent

Affiche le nom du Affiche le nom du répertoire courantrépertoire courant

Copier le fichier Copier le fichier user.txtuser.txt vers le fichier vers le fichier test.txttest.txt

Montrer que le Montrer que le fichier a été fichier a été copiécopié

Toutes ces Toutes ces commandes sont commandes sont exécutées dans un exécutées dans un interpréteur enfantinterpréteur enfant

Page 17: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

18

Regroupement des Regroupement des commandescommandes Explication de l’exemple précédent Explication de l’exemple précédent

(suite):(suite):

Interpréteur de commande

I n terp réteurd e

co m m an de

I n terp réteurd e

co m m an de

P aren t E n fan tE x écutio n d es co m m an d es regro up ées

C réatio n d 'un n o uv eau in terp réteur

F in d e l'ex écutio n d es co m m an d es regro up éesD estructio n d u n o uv eau in terp réteur

Page 18: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,

19

Fichiers de commandeFichiers de commande Conditions d’un fichier de commande:Conditions d’un fichier de commande:

• contient des commandes et instructions contient des commandes et instructions légales de Bourne shell;légales de Bourne shell;

• fichier est lisible et/ou exécutable par le fichier est lisible et/ou exécutable par le Bourne shell.Bourne shell.

Exécution d’un fichier de commande:Exécution d’un fichier de commande:• sh FichierCommandesh FichierCommande

• contient contient à la première ligneà la première ligne du fichier la du fichier la directive: directive: #!/bin/sh#!/bin/sh

Interpréteur de commande

Dém

on

stra

tion

de la p

rocé

dure

Dém

on

stra

tion

de la p

rocé

dure