TP3 : les shells. 1. Définition. 2. Un environnement de travail

Documents pareils
Environnements informatiques

TP1 - Prise en main de l environnement Unix.

Aide-Mémoire unix. 9 février 2009

Initiation à la Programmation en Logique avec SISCtus Prolog

TP 1. Prise en main du langage Python

Introduction aux Systèmes et aux Réseaux

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Cours Informatique Master STEP

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Les structures. Chapitre 3

Initiation à la programmation en Python

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

I. Introduction aux fonctions : les fonctions standards

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Service Déposant: Procédure d installation. Page 1. Service déposant. Procédure d installation Version 2.3

TP 1 Prise en main de l environnement Unix

L informatique en BCPST

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et Programmation, IMA

TP1 : Initiation à l algorithmique (1 séance)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Table des matières Hakim Benameurlaine 1

ACTIVITÉ DE PROGRAMMATION

sshgate Patrick Guiran Chef de projet support

TP, première séquence d exercices.

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

1. Structure d'un programme FORTRAN 95

Cours d algorithmique pour la classe de 2nde

1 Démarrage de Marionnet

SCHMITT Année 2012/2014 Cédric BTS SIO. TP Serveur Backup

TP1. Outils Java Eléments de correction

Utilisation d objets : String et ArrayList

TD3: tableaux avancées, première classe et chaînes

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

TP Service HTTP Serveur Apache Linux Debian

La mémoire. Un ordinateur. L'octet. Le bit

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

Premiers pas en Linux

Outils pour la pratique

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Introduction à l Administration Systèmes et Réseaux

Corrigé des TD 1 à 5

Polycopié Cours Système d Exploitation I. Programme : Filière SMI S3

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Chap III : Les tableaux

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

TP WINDOWS 2008 SERVER - OUTILS DE SAUVEGARDE ET DE RESTAURATION

Cours Programmation Système

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb


Sauvegarde sous MAC avec serveur Samba

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

Tutoriel Prise en Main de la Plateforme MetaTrader 4. Mise à jour : 7/09/

SAGESSE. Système Automatisé GEStion Santé Etablissement. Version 5.0. Manuel Utilisateur

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Chapitre 4 : Édition de fichiers texte - Vi

Les clients GNU/Linux

Système clients serveur Kwartz Vulgarisation, identification, dossier personnel

Pack Evolix Serveur Mail Documentation d'utilisation

Séance 0 : Linux + Octave : le compromis idéal

Python Les fondamentaux du langage

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Vue d ensemble de Windows PowerShell

Shell Bash Niveau débutant

Examen Médian - 1 heure 30

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

I. MySQL : Serveur et SGBD

TP LINUX : MISE EN RÉSEAU D UN SERVEUR LINUX

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Gestion des utilisateurs : Active Directory

Ce qu'il faut savoir: L'outil de sauvegarde Bacula, peut exploiter 3 moyens différents:

UTILITAIRE BRM BACKING UP, RESTORING AND MOVING CONTENT

INFO-F-404 : Techniques avancées de systèmes d exploitation

Le langage C. Séance n 4

Plan du cours. Historique du langage Nouveautés de Java 7

Débuter avec Excel. Excel

Intranet d'établissement avec Eva-web Installation configuration sur serveur 2000 ou 2003 Document pour les administrateurs

INSTALLATION DE PEGASUS MAIL 3.12 c FR Avec l interface Harp


Programmation en Caml pour Débutants

Algorithmique et programmation : les bases (VBA) Corrigé

Les chaînes de caractères

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Algorithme. Table des matières

EXCEL TUTORIEL 2012/2013

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Projet Administration Réseaux

Les fichiers. Chapitre 4

Téléphoner avec les téléphones IP DECT Gigaset PRO

Contents. 1 Premiers pas en Linux. 1.2 Généralités. 1.1 Bref historique Linux

Cours 14 Les fichiers

Transcription:

Matière Classe TP3 : les shells AS2 R. BEN AZZOUN Enseignantes TI1 A & B S.BEN CHAABAN 1. Définition Sous Unix, on appelle shell l interpréteur de commandes qui fait office d'interface entre l'utilisateur et le système d exploitation. Les shells sont des interpréteurs : cela signifie que chaque commande saisie par l utilisateur (ou lue à partir d un fichier) est syntaxiquement vérifiée puis exécutée. Un shell est un interpréteur de commande en mode texte. Il peut s utiliser en mode interactif ou pour exécuter des programmes écrits dans le langage de programmation du shell (appelés shell scripts). Exemples : sh (Bourne shell) bash (Bourne again shell) csh (C shell) ksh (Korn shell) Un shell possède un double aspect : un aspect environnement de travail un aspect langage de programmation. 2. Un environnement de travail En premier lieu, un shell doit fournir un environnement de travail agréable et puissant. Par exemple, bash permet le rappel des commandes précédentes (gestion de l historique), la modification en ligne du texte de la commande courante, la gestion des travaux lancés en arrière-plan (ajout de & à la fin du commande), l initialisation adéquate de variables de configuration et la création de raccourcis de commandes. En mode interactif, bash affiche à l écran une chaîne d appel (appelée également prompt ou invite), qui se termine par défaut par le caractère # suivi d un caractère espace pour l administrateur système (utilisateur root) et par le caractère $ suivi d un caractère espace pour les autres utilisateurs. 1

3. Un langage de programmation Les shells ne sont pas seulement des interpréteurs de commandes mais également de véritables langages de programmation. Un shell comme bash intègre : les notions de variable, d opérateur arithmétique, de structure de contrôle, de fonction, présentes dans tout langage de programmation classique, mais aussi des opérateurs spécifiques (ex : et ;) Remarque : L opérateur, appelé tube, est un opérateur caractéristique des shells et connecte la sortie d une commande à l entrée de la commande suivante. 4. Shell utilisé La manière la plus simple de connaître le shell que l on utilise est d exécuter la commande unix ps qui liste les processus de l utilisateur 5. Métacaractères du shell Certains caractères, appelés métacaractères, sont interprétés spécialement par le shell avant de lancer la commande entrée par l utilisateur. Les métacaractères permettent donc de spécifier facilement des ensembles de fichiers, sans avoir à rentrer tous leurs noms. Voici les plus utilisés : *: remplacé par n importe quelle suite de caractères?: remplacé par un seul caractère quelconque [ ]:remplacé par l un des caractères mentionnés entre les crochets. On peut spécifier un intervalle avec le tiret - (Exemple :[a-z]spécifie l ensemble des lettres minuscules). 6. Initialisation d un shell Lors de leur démarrage, les shell exécutent des fichiers de configuration (généralement sous /etc, modifiable par l'administrateur système et utilisé chaque fois qu'un shell est lancé) qui peuvent contenir des commandes quelconques et sont généralement utilisés pour définir des variables d environnement et des alias. csh exécute le fichier ~/.cshrc (le rc signifie run command) sh exécute ~/.profile bash exécute ~/.bash_profile ou à défaut ~/.profile. 2

Rappelons que les fichiers dont le nom commence par un point ne sont pas affichés par la commande ls (sauf si on emploie l option -a) ; les fichiers d initialisation sont donc invisibles. 7. Variables d environnement Le système UNIX défini pour chaque processus une liste de variables d environnement, qui permettent de définir certains paramètres : répertoires d installation des utilitaires, type de terminal, etc. Chaque programme peut accéder à ces variables pour obtenir des informations sur la configuration du système. La commande set permet d afficher la liste des variables d'environnement et de leurs valeurs. Voici quelques variables caractéristiques : HOME : Répertoire de base d'un utilisateur (dynamique) LOGNAME : Login de l'utilisateur en session (dynamique) PATH : Ensemble des chemins de recherche des applications lancées PS1 : Prompt PWD : Répertoire courant (dynamique) SHELL : Nom du shell courant (dynamique) ~ : Répertoire de base d'un utilisateur (dynamique) Remarque : pour désigner la valeur d'une variable, on utilise son nom précédé d'un $. 8. Fichiers shell ou scripts Lorsqu un traitement nécessite l exécution de plusieurs commandes, il est préférable de les sauvegarder dans un fichier plutôt que de les retaper au clavier chaque fois que le traitement doit être lancé. Ce type de fichier est appelé fichier de commandes ou fichier shell ou encore script shell. Un script peut être une simple liste de commandes. La première ligne du script doit préciser l interpréteur utilisé, elle commence par les deux caractères #!, suivis du chemin de l interpréteur. Voici un exemple simple : #!/bin/bash # liste echo Contenu du repertoire courant ls -l 3

Ce script affiche la liste détaillée des fichiers du répertoire courant. Il doit être entré à l aide d un éditeur de texte, enregistré dans un fichier (nommé par exemple liste ), puis rendu exécutable grâce à la commande chmod a+x liste (a designe all ;users+groups+others) La deuxième ligne s agit d un commentaire (inutile dans le fonctionnement de script) qui comporte le nom du fichier. Pour lancer l exécution d un fichier shell, on peut utiliser la commande : bash nom_fich ou. /nom_fich 9. Utilisation des variables Une variable est identifiée par un nom, c'est-à-dire une suite de lettres ou de chiffres. Les lettres majuscules et minuscules sont différenciées. Les variables peuvent être classées en trois groupes : les variables utilisateur (définies par l utilisateur lors de l ecriture du script) les variables prédéfinies du shell (ex : PS1, PATH, REPLY, IFS) les variables prédéfinies de commandes unix (ex : TERM). En général, les noms des variables utilisateur sont en lettres minuscules tandis que les noms des variables prédéfinies (du shell ou de commandes unix) sont en majuscules. L utilisateur peut affecter une valeur à une variable en utilisant l opérateur d affectation = la commande interne read a) Affectation directe Syntaxe: nom=[valeur] Il est impératif que le nom de la variable, le symbole = et la valeur à affecter ne forment qu une seule chaîne de caractères. Plusieurs affectations peuvent être présentes dans la même ligne de commande. Pour accéder au contenu (valeur) de variable on utilise le caractère $ suivi du nom de variable Exemple : > x=coucou > echo x est : $x x est coucou 4

b) Affectation par lecture Elle s effectue à l'aide de la commande interne read. Celle-ci lit une ligne entière sur l entrée standard (le clavier). Syntaxe: read [ var1... ] Exemple: > read a b bonjour Monsieur > echo $b Monsieur Lorsque la commande interne read est utilisée sans argument, la ligne lue est enregistrée dans la variable prédéfinie du shell REPLY. Exemple: > read bonjour tout le monde > echo $REPLY bonjour tout le monde L option p de read affiche une chaîne d appel avant d effectuer la lecture ; la syntaxe à utiliser est : read p chaîne_d_appel [ var ] Exemple: > read -p "Entrez votre prenom : " prenom Entrez votre prenom : Eric > echo $prenom Eric Remarque : S il y a moins de variables que de mots dans la ligne lue, le shell affecte le premier mot à la première variable, le deuxième mot à la deuxième variable, etc., la dernière variable reçoit tous les mots restants. c) Variable en «lecture seule» Pour définir une variable dont la valeur ne doit pas être modifiée (appelée constante dans d autres langages de programmation), on utilise la syntaxe : declare r nom=valeur 5

10. Commande interne set La commande interne set affecte une valeur à un ou plusieurs paramètres de position en numérotant ses arguments suivant leur position. La numérotation commence à 1. Syntaxe: set arg1 arg2 arg3 Exemple: > set alpha beta gamma Pour obtenir la valeur d un paramètre de position, il suffit de placer le caractère $ devant son numéro ; ainsi, $1 permet d obtenir la valeur du premier paramètre de position, $2 la valeur du deuxième et ainsi de suite. Exemple : > echo $3 $2 alpha beta Pour supprimer une ou plusieurs variables, on utilise la commande interne unset ou set - - Syntaxe : unset var Remarques : on peut récupérer également des items de la ligne de commande via les codes $0, $1, $2, $3,... dans l'ordre de frappe et incluant le nom de la commande. Exemple : > ls -l /home > echo $3 /home => $0 : ls $1 : -l $2 : /home La Récupération de la liste complète des items avec $*. la Récupération du nombre d'items avec $#. La Récupération du résultat d'exécution de la dernière commande via le code $?. (0 indique "Pas d'erreur d'exécution".) 11. Substitution de commandes Syntaxe : $( cmd ) Une commande cmd entourée par une paire de parenthèses () précédées d'un caractère $ est exécutée par le shell puis la chaîne $( cmd ) est remplacée par les résultats de la commande cmd écrits sur la sortie standard (l écran). Ces résultats peuvent alors être affectés à une variable ou bien servir à initialiser des paramètres de position. 6

> pwd /home/sanchis => résultat écrit par pwd sur la sortie standard > repert=$(pwd) => la chaîne /home/sanchis remplace la chaîne $(pwd) > echo mon repertoire est $repert mon repertoire est /home/sanchis 12. Les structures itératives il existe des classiques instructions de structuration comme if, case, for et while qu on peut les utiliser dans les scripts shell. If case For while if commande then... else.. fi case variable in v1)... ;; v2)... ;; vn) ;; esac for variable in liste do... done while commande do... done 13. Les tests dans le shell UNIX propose une procédure de TEST pour programmer une condition (avec la commande test suivie de la condition) Tests sur les caractéristiques des fichiers. test -f fichier : Vrai si fichier ordinaire test -d fichier : Vrai si fichier répertoire test -r fichier : Vrai si fichier est accessible en lecture test -w fichier : Vrai si fichier est accessible en écriture. test -x fichier : Vrai si fichier est exécutable. test -s fichier : Vrai si fichier non nul tests de comparaison entre deux expressions de type chaine de caractères : test E1 = E2 : E1 égal à E2 test E1!= E2 : E1 différent de E2 tests de comparaison sur expressions numériques : test E1 -eq E2 : E1 égal à E2 test E1 -ne E2 : E1 différent de E2 test E1 -ge E2 : E1 plus grand ou égal à E2 7

test E1 gt E2 : E1 strictement plus grand qu E2 test E1 -le E2 : E1 plus petit ou égal à E2 test E1 -lt E2 : E1 strictement plus petit qu E2 tests des booléens : test (E) : E est vrai test!e : E est faux test E1 -a E2 : E1 et E2 test E1 -o E2 : E1 ou E2 Exercices d applications Exercice 1 Ecrire un script shell nommé ladate qui affiche la date du système. Exercice 2 Ecrire un programme shell deuxfois qui affiche le message "Entrez un mot : ", lit le mot saisi par l'utilisateur puis affiche ce mot deux fois sur la même ligne. Exercice 3 Créer un script shell nommé "change" qui affichera la date de dernière modification d'un fichier puis la modifiera avec l'heure actuelle et enfin réaffichera la date de dernière modification du fichier. Cette procédure acceptera 1 paramètre qui sera le nom du fichier. Exercice 4 Ecrire un programme shell «untrois» qui demande à l'utilisateur de saisir une suite de mots constituée d'au moins trois mots et qui affiche sur la même ligne le premier et le troisième mot saisis. Exemple : > untrois Entrez une suite de mots : un petit coucou de Rodez un coucou Exercice 5 copier le script suivant dans un fichier «copier» et l'exécuter avec copier /home fich et interpréter le résultat 8

#!/bin/bash # copie echo "Nom du programme : $0" echo "Nb d'arguments : $#" echo "Source : $1" echo "Destination : $2" Exercice 6 Ecrire le script suivant dans un fichier «ecrase» et l'exécuter avec la commande : ecrase bonjour coucou. Interpréter le résultat #!/bin/bash echo '$1' est $1 set hello echo '$1' est $1 Exercice 7 En utilisant la substitution de commande, écrire un fichier shell «mach» qui permet d'afficher le nom d'utilisateur avec lequel vous travaillez et votre répertoire courant. Exercice 8 Ecrire un script shell nommé heure dans le quel vous affichez la date sous la forme suivante: La date du jour est: jour mois année L heure actuelle est: heure Exercice 9 Créer un script shell nommé "nombrejours" qui affichera le nombre de jours du mois courant. "nombrejours" affichera pour mars 2012 le message "31 jours en mars 2012". Exercice 10 Créer un script shell nommé «création» réalisant la création d'un répertoire "Exo3" contenant 5 fichiers nommés "Un" à "cinq". Chaque fichier contient une seule ligne: 9

"Un" contient "Première ligne" "Deux" contient "Deuxième ligne"... "cinq" contient "cinquième ligne" Vérifier que le répertoire à créer n'existe pas déjà auquel cas il ne sera pas recréé mais les fichiers si. Exercice 11 Créer un script permettant d'afficher la liste des fichiers du répertoire /etc accessibles en lecture puis la liste des fichiers accessibles en écriture. Exercice 12 Créer un script nommé "table" permettant d'afficher des tables de multiplication. "table 5 10" aura pour résultat l'affichage: 0 x 5 = 0 1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45 10 x 5 = 50 10