1 Système d’exploitation Les scripts csh 1 ère Année Année 2001-20002 Tienté HSU.

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

Premier programme en C :
Introduction au Langage C,C++
Le langage Z Pr ZEGOUR DJAMEL EDDINE
UNIX Pour débutant. Applications En directNavigateurCourrierMode consoleFenêtrage http smtp ssh X protocoles - langages de programmation protocoles -
UNIX Pour débutant. Applications En directNavigateurCourrierMode consoleFenêtrage http smtp ssh X Protocoles de communication Protocoles de communication.
Algorithmique Résume.
C.
Outils de développements
Objectifs Présentation et utilisation du langage PERL
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
Système d’exploitation Évolué ”Unix”
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,
Unix Raymond Ripp.
Licence GNU FDL - Version 1.5
Les commandes Unix.
INTRODUCTION A MATLAB ENVIRONNEMENT MATLAB.
Principes de programmation (suite)
CPI/BTS 2 Programmation Web Introduction au PHP
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Partie 1 Etude de l'existant
La technologie au collège et le B2i
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)
Les éléments de base de l’algorithmique
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Outils de Programmation
Outils de Programmation
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Formation Python Modules (d'après "Learning Python", de Mark Lutz)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Projet de C – Matrices creuses
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Programmation nawk(1)
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.
IFT 6800 Atelier en Technologies d’information
Web dynamique PhP + MySQL AYARI Mejdi 2006
LAL Service Informatique Stage Informatique 1 Le système Unix l Multitâche, multi-utilisateur, partage des ressources l Universel : machines, portabilité.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Structures de données IFT-10541
Plan cours La notion de pointeur et d’adresse mémoire.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
FORMATION Unix/Linux CHAPITRE 1: LES PREMIERS PAS.
Shell Equipe ID Bioinformatics Training Course June 2014.
JavaScript.
Scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash),
Créer des packages.
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Tutorat en bio-informatique
Maria Malek - EISTI - CPI11 Présentation d’UNIX –1969, laboratoire Bell –Systèmes multi-tâches multi-utilisateurs –Architecture Le noyau –Gestion de la.
Unix Raymond Ripp.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
 Formulaires HTML : traiter les entrées utilisateur
Elaboré par Ahmed BESSAIDI
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Scripts et fonctions Instructions de contrôle
Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell.
Algorithmique Tableaux de données
GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 7 Neutralisation, redirection, décodage des paramètres,
1.1: notions de bases de l’informatique
Objets et Actions Élémentaires.
Flash 2 ème séance Interaction François Marliac Mickaël Moreira.
A.Aarabi ´. ´ Objectifs Faciliter la prise en main du logiciel MATLAB Présenter les fonctionnalités utiles au travail scientifique.
Introduction à Unix au LAL
Elaboré par Ahmed BESSAIDI
Transcription de la présentation:

1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU

2 Système d’exploitation Matériel et logiciels informatiques Généralités d’un système Unix Les processus Le système de fichiers (SGF) Les commandes unix Les scripts C-shell

3 Il existe 2 types de programmes exécutables : Les programmes obtenus par compilation : cc, c++, javac, …etc Les programmes scripts contenant des commandes directement exécutable par un interpréteur de commandes (csh, sh, perl, …etc). Les programmes exécutables

4 Un shell est un interpréteur de langage de commandes. Il a 2 rôles : Un rôle interactif : l’utilisateur peut exécuter directement des commandes Un rôle de langage de programmation : le shell exécute les commandes contenues dans un fichier Sous unix, il existe plusieurs shells : Le C-shell (csh) ou turbo C-shell (tcsh) Le Korn-shell (ksh) Le Bourne-shell (sh) ou le Bourne-Again-Shell (bash) La liste des shells disponibles se trouve dans /etc/shells Interpréteur de commandes : shell

5 Exécution d’un programme shell (1) CommandeConditions sur le fichier Effet csh nom_fichierFichier lisibleInterprétation par un sous processus shell nom_fichierFichier exécutable dont la première ligne commence par #! ref_shell Interprétation par un sous processus ref_shell source nom_fichierFichier lisibleInterprétation dans le shell courant exec nom_fichierFichier lisible et exécutable Recouvrement du csh courant par un csh interprétant le fichier

6 Un programme shell est un fichier contenant un ensemble de commandes unix. Cet ensemble est interprétable par le shell. Exemple : script #! /bin/csh  interpréteur de commandes echo "ceci est un script"  instruction à exécuter Exemples d’exécution : csh script argument1 argument2 …. source script argument1 argument2 … script argument1 argument2 …. Dans le dernier cas le programme devra : commencer par #! Référence d’un shell (ex. #! /bin/csh) posséder l’attribut d’exécution (x) Exécution d’un programme shell (2)

7 Le C-shell distingue 2 types de variables : les variables locales : visibles uniquement par le processus qui les a créées. Les variables locales du processus père ne sont pas accessibles par le fils. les variables globales : les variables du père sont accessibles et modifiables par le processus fils L’ensemble des variables globales est appelé environnement du processus Par convention : Les variables locales sont en minuscules Les variables globales sont en majuscules csh : les variables (1)

8 Nom de variable : chaîne de caractères Accès au contenu d’une variable ($) Exemple : echo $path Affectation d’une variable : set nomvar = valeur  initialisation d’une variable locale setenv NOMVAR valeur  initialisation d’une variable globale Listage les variables déclarées : set  liste des variables locales setenv  liste des variables globales les variables (2) : utilisation (1)

9 Désallocation d’une variable : unset nomvar  désallocation d’une variable locale unsetenv NOMVAR  désallocation d’une variable globale Existence d’une variable : $?nomvar  1 si la variable est définie, 0 sinon les variables (3) : utilisation (2)

10 Par défaut tous les variables sont du type caractère. Exemple : set a = echo $a On obtient comme résultat et non 27 Affectation d’une variable nomvar = valeur  initialisation d’une variable numérique Opérateurs +, -, *, /, %, ++, --, +=, -=, *=, /=, %= Exemples a = 1  a contient a ++  a contient b = 3*$a  b contient c = $a - $b  c contient -4 les variables (4) : variables numériques

11 Le shell permet de définir les variables de type tableau Affectation d’une variable tableau: set vartab = (v1 v2 …)  initialisation d’une variable tableau Les éléments du tableau sont indicés de 1 à $#vartab Accès au contenu des éléments $vartab  la totalité du tableau $vartab[1]  le 1er élément du tableau $vartab[2]  le 2ème élément du tableau $vartab[$#vartab]  le dernier élément du tableau $vartab[3-5]  l’élément 3 à l’élément 5 $vartab[-7]  du 1er élément au 7ème élément $vartab[5-]  du 5ème élément au dernier élément La dimension d’un tableau : $#vartab La dimension d’une variable de type tableau peut être modifiée set vartab = ($vartab[2-$#vartab])  le 1er élément est supprimé set vartab = ($vartab valeur)  ajout d’une valeur en fin set vartab = (valeur $vartab)  ajout d’une valeur au début les variables (5) : les tableaux

12 Saisi des éléments à partir du clavier : set nomvar = $<  initialisation à partir du clavier, le résultat est une chaîne set nomvar = ($<)  initialisation à partir du clavier, le résultat est un tableau les variables (6) : suite

13 Variables globales HOME : répertoire de connexion de l’utilisateur PATH : liste des répertoires de recherche des commandes PWD : répertoire courant TERM : type de terminal utilisé SHELL : nom du shell utilisé USER : nom de l’utilisateur DISPLAY : localisation de l’affichage Variables locales : argv : liste des arguments du shell $#argv  le nombre d’arguments $argv  la liste des arguments $argv[1]  le 1er argument cwd : référence absolue du répertoire de travail les variables prédéfinies (1)

14 Variables locales homonymes status : code de retour de la dernière commande prompt : chaîne de caractères utilisée comme invite home : répertoire de connexion de l’utilisateur path : liste des répertoires de recherche des commandes term : type de terminal utilisé shell : nom du shell utilisé user : nom de l’utilisateur Toute modification d’une de ces variables entraîne la modification de la variable globale correspondante. Par contre l’inverse n’est pas vrai. les variables prédéfinies (2)

15 Toute chaîne précédée du caractère # est un commentaire. Exemple : #Ceci est un commentaire Les instructions (1) : commentaire

16 ’ : une chaîne de caractères mise entre simple quotes ne sera pas interprétée par le shell " : seuls les métacaractères ($, ` et \) sont interprétés, les autres seront pas interprétés. ` : un texte entre quotes inversés est considéré comme une commande à exécuter. Exemples : echo ’ ceci est une chaine de caractères non interprétée’ echo `pwd` echo " Le répertoire courant de l’utilisateur $user est `pwd` " Utilisation des divers guillemets

17 Les opérateurs utilisables dans une expression logique sont ==test si égalité !=test si différent <test si inférieur >test si supérieur <=test si inférieur ou égal >=test si supérieur ou égal &&opérateur ET logique ||opérateur OU logique !opérateur NOT Exemples : if ($val =0)  la variable val est comprise entre 0 et 20 if ("$chaine" != "")  la variable chaine est différente vide Remarque : le caractère espace est nécessaire avant et après un des opérateurs ci-dessus Les instructions (2) : expression logique

18 Les opérateurs de test sur les fichiers sont : -e fichiervrai si fichier existe -f fichiervrai si fichier est un fichier -r fichiervrai si l’utilisateur a le droit de lecture sur fichier -w fichiervrai si l’utilisateur a le droit d’écriture sur fichier -x fichiervrai si l’utilisateur a le droit d’exécution sur fichier -o fichiervrai si l’utilisateur est propriétaire du fichier -z fichiervrai si fichier existe et est de taille nulle -d fichiervrai si fichier est un répertoire Exemples : if (-d ~user)  vrai si le répertoire utilisateur user existe if (-f $argv[1])  vrai si l’argument 1 est un fichier Les instructions (3) : opérateur de test sur les fichiers

19 Il existe 3 formes possibles : La plus simple : (pas du mot clef then) if (expression) instruction ou if (expression) \ instruction La plus traditionnelle : if (expression) thenou if (expression) then {instructions} {expressions} elseendif {instructions} endif L’instruction conditionnelle (1) : IF

20 If en cascade : un seul endif sur la totalité de la structure. if (expression) then {instructions} else if (expression) then {instructions} else if (expression) then {instructions} … else {instructions} endif Remarque : le shell est un langage interprété, il est nécessaire de respecter scrupuleusement la syntaxe (par exemple le mot then doit être sur la même ligne que if) L’instruction conditionnelle (2) : IF

21 Syntaxe : foreach var (liste) {instructions} end liste : une liste de valeurs ou une variable de type tableau Les instructions entre foreach et end sont exécutées avec var prenant successivement les valeurs des éléments de liste. Exemples : foreach i ( ) echo $i end foreach fic (`ls`) echo $fic end Les instructions itératives (1) : FOREACH

22 Syntaxe : while (expression) {instructions} end Les instructions sont exécutées tant que l’expression est vraie. Remarque : une expression de valeur nulle est considérée comme fausse, tout autre valeur est considérée comme vraie Exemple n = 4 while ($n >= 0)ou while ($n) echo n-- end Les instructions itératives (2) : WHILE

23 break : provoque la sortie immédiate de la boucle, le script reprend son cours après le end correspondant Exemple somme = 0 set n = $< while ($n) if ($n >=20 || $n < 0) then set n = $< break somme += $n set n = $< end echo "Le somme totale est $somme" Les instructions de rupture d’itération (1) : break

24 continue : provoque le passage immédiat à l’itération suivante de la boucle Exemple somme = 0 set n = $< while reste = $n % 2 if ($reste) n -- continue somme += n -- end echo "Le somme totale est $somme" Les instructions de rupture d’itération (2) : continue

25 switch ($var)default : case valeur1 : {instructions} {instructions}breaksw breakswendsw case valeur2 : {instructions} breaksw endsw …… La commande switch teste si le contenu de var est égal à valeur1 : si oui, les instructions jusqu’au breaksw sont exécutées sinon, la commande teste var par rapport à valeur2 et ainsi de suite Si aucune clause n’est vérifiée, la clause default sera exécutée La clause default et l’instruction breaksw sont facultatives L’instruction de choix multiple : switch (1)

26 echo "entrer une note : " set note = $< switch ($note) case 10 : case 9 : case 8 : case 7: case 6: echo " Vous êtes bon … " breaksw case 5 : echo " Vous êtes moyen … " breaksw default : echo " Vous n’êtes pas très fort … " breaksw endsw L’instructions de choix multiple : switch (2)

27 etiquette :une étiquette est une chaîne de caractères suivie du caractère : goto etiquettebranchement inconditionnel sur l’etiquette L’instructions goto

28 Un script c-shell peut contenir n’importe quelle commande exécutable sous unix. On appelle un script récursif un script qui fait appel à lui même. Exemple : nb_fichiers est un script permettant de déterminer le nombre de fichiers contenus dans un répertoire rep passé en paramètre. #! /bin/csh # nom du programme : nb_fichiers if ($#argv == 1) nbfic = 0 foreach fic (`\ls $argv`) if (-f $argv/$fic) nbfic ++ endif end echo "le nombre de fichiers est $nbfic" endif Les scripts récursifs

29 Exemple 2 : nb_fichiers2 est un script permettant de déterminer le nombre de fichiers contenus dans le sous arbre ayant pour racine rep passé en paramètre. #! /bin/csh # nom du programme : nb_fichier2 if ($#argv == 1) nbfic = 0 foreach fic (`\ls $argv`) if (-f $argv/$fic) nbfic ++ else if (-d $argv/$fic) then set res = `nb_fichiers2 nbfic += $res[6] endif end echo "le nombre de fichiers est $nbfic" endif Les scripts récursifs (2)