La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Avertissement Ce document est un support de cours. Il ne constitue en aucun un ouvrage de référence à la programmation en exploitation. Son exploitation.

Présentations similaires


Présentation au sujet: "Avertissement Ce document est un support de cours. Il ne constitue en aucun un ouvrage de référence à la programmation en exploitation. Son exploitation."— Transcription de la présentation:

1 Avertissement Ce document est un support de cours. Il ne constitue en aucun un ouvrage de référence à la programmation en exploitation. Son exploitation est subordonnée à la présence au cours dispensé par lenseignant. Il est fortement conseillé dannoter ce document grâce aux explications et exemples fournis durant le cours. Pour toute remarque, envoyer un courrier à ou à

2 Programmation en exploitation sous UNIX Nadia Abchiche Mimouni Gilney Damm Département GEII IUT Évry

3 Le Shell Un programme C non intégré au noyau Interpréteur de commandes Langage de programmation Permet détendre les commandes du système dexploitation Nombreuses versions sh shell Bourne (disponible sur toutes les machines) csh Berkeley (Bill Joy) rsh exécution à distance tcsh, ksh, bash, vsh,…

4 Caractéristiques de linterprète Analyse et interprète des lignes de commandes Création et lancement des processus associés aux commandes (contrôle de processus) Distinction entre processus bloquant et tâche de fond Redirection des E/S Mécanisme de substitution de chaînes de caractères Accès aux ressources de la machine : le processeur (implicitement), le(s) disque(s), imprimantes, … via des commandes. Affiche un prompt pour signifier qu'il est prêt à interpr é ter une commande Permet détendre les commandes du système lexploitation Propose un v é ritable langage de programmation Nombreuses versions (sh, csh, ksh, bash,…)

5 Structure de la boucle dinterprétation Le shell est un programme dont lalgo pourrait être : Tant que vrai –Lire une ligne –Identifier la commande (vérifier la syntaxe et sémantique) –Création dun processus exécutant le fichier associé à la commande –Attente de la fin dexécution de ce processus Fin Tant que

6 Choix du shell Nombreuses versions sh shell Bourne (disponible sur toutes les machines) csh Berkeley (Bill Joy) bash (bourne again shell) rsh exécution à distance tcsh, ksh, bash, vsh,…

7 Langage shell : généralités Variables utilisateurs (chaînes de caractères) – Contenu obtenu en préfixant $ à la variable –Affectation par lopérateur = ( autrement selon le shell) Exemple : v=bonjour echo $v Afficher bonjour Variables prédéfinies –Affectées par le shell : # ? $ ! – –Affectées avant lexécution : HOME PATH MAIL TERM PS1 PS2 IFS (variables de configuration) –Macroprocesseur de substitution –Commandes internes break continue cd eval exit export login newgrp read shift set wait unmask trap Structure de contrôles : if-then-else for-do-done while-do-done case-in-esac

8 Variables d'environnement prédéfinies HOME chemin d'accès au répertoire initial de l'utilisateur PATH suite de chemins d'accès aux répertoires des exécutables PS1 invite principale du shell en mode interpréteur PS2 invite secondaire du shell en mode programmation IFS séparateurs de champ des arguments MAIL chemin d'accès à la boite aux lettres utilisateur MAILCHECKintervalle en sec au bout duquel le mail est contrôlé DISPLAYnom de lécran daffichage TERM nom du type de terminal

9 Quotage Rôle le quotage est utilisé pour supprimer les fonctionnalités de certains caractères spéciaux du shell, dont les métacaractères. Méta-caractères: \ $ * ` " ' Caractère d échappement: \ le caractère \ préserve la valeur littérale du caractère qui le suit Simples quotes '...' les caractères inclus entre 2 simples quotes ne sont pas évalués Doubles quotes "..." les caractères inclus entre 2 doubles quotes conservent leur valeur à l'exception de $ ` et \. Exemple TOTO='bonjour echo '$TOTO et ' "$TOTO" $TOTO et bonjour

10 Syntaxe des commandes $ [ [ [ […]]] $ est le prompt shell (modifiable par PS1) correspond à un nom de commande (fichier exécutable) Une commande peut contenir plusieurs lignes (utiliser \) le prompt devient alors « > » (modifiable par PS2) Une option est une lettre précédée par « - » Les espaces sont des séparateurs Pour les noms de fichiers, il existe des caractères génériques (métacaractères) : –« * » pour nimporte quelle chaîne –« ? » pour nimporte quel caractère –« […] » nimporte quel caractère de la liste –« - » séparateur dintervalle

11 Les commandes Le symbole $ invite lutilisateur à taper une commande (interprète de commandes) Les commandes sont tapées en minuscules –$ [options] [paramètres] –$ man donne une documentation en ligne. Exemple : man login –La variable MANPATH contient le répertoire où est installé le manuel Voir les commandes whatis et catman Pour stopper la saisie de paramètres faire ctrl D

12 Les méta caractères (ou jockers) Un méta caractère est un caractère qui a une signification particulière –Le caractère * représente un nombre quelconque de caractère quelconques –Le caractère ? représente un et un seul caractère quelconque –Le caractère [ commence une définition densemble qui se termine par ] Exemple1 : a[bc]d = abd acd Exemple2 : a[0-9] représente tous les fichier dont le nom commence par a suivi dun chiffre.

13 La commande man Name synatxe et arguments Synopsis usage Description exemples, fichiers, exit values See also Fichiers et autres commandes liés Variable MANPATH contient le chemin daccès aux sources la documentation Documentation organisés par thèmes en chapitres Exemple : les commandes utilisateurs sont dans le chapitre 1 et les primitives système dans le chapitre 2.

14 Pour savoir dans quel répertoire vous vous trouvez, utiliser la commande pwd : pwd pour print working directory pwd donne le chemin absolu de ce catalogue Pour changer de répertoire, utiliser la commande cd –cd pour change directory Syntaxe : cd Exemple1 : cd /users/ens/ Exemple 2 : cd ramène dans le répertoire de login

15 Lister le contenu dun répertoire La commande ls –l liste les fichiers en donnant des informations. Exemple : Si on est dans gesinfo, ls –l donne : total 2 -rwx r-x r-x1etud151Oct 1 12:00planing drwx r-x r-x2etud1512Oct 1 12:00src Spécification daccès pour le propriétaire Spécification daccès pour le groupe Spécification daccès pour le autres Nombre de liens Propriétaire du fichier Taille du fichier Date dernière modification Nom du fichier Spécification du type de fichier

16

17 Les options de la commande ls –aaffiche tous les fichiers même ceux cachés (commençants par.) -A affiche tous les fichiers même ceux cachés sauf les répertoires. et.. -d affiche les répertoires en tant quobjets et non pas répertoire -l format long, donne toutes les informations sur les objets. -t trie les fichiers selon la date de dernière modification -R (Récursif) affiche le contenu des répertoires et sous- répertoires associées.

18 Créer un répertoire mkdir pour make directory crée un répertoire ou un sous répertoire Exemples : $ mkdir sources $ mkdir lettres jeux $ mkdir /users/cours projets $ mkdir –p lettres /jeux

19 Supprimer un répertoire rmdir pour remove directory supprime tout répertoire vide $ rmdir projets

20 Changer les attributs dun fichiers Possibilité de modifier les droits daccès à un fichier avec la commande chmod pour change mode chmod [+-=][rwx] Paramètres : uUser+Ajouterrlecture ggroupe-Retirerwécriture oOthers=Positionnerxexécution

21 Exemples dutilisation de la commande chmod $ chmod o-r toto retire le droit de lecture pour les autres utilisateurs pour le fichier toto $ chmod ug+w totoajout du droit décriture pour le proriétaire et le groupe $ chmod –rwx toto enlève tous les droits pour tout le monde $ chmod =r toto positionne pour tout le monde le droit de lecture $ chmod u=rw,go-rwx toto positionne les droits de lecture/écriture pour le propriétaire, et retire tous les droits pour le groupe et les autres

22 Afficher le contenu dun fichier cat pour concatenate, admet plusieurs paramètres Pour arrêter le défilement, taper ctrl s Pour reprendre le défilement, taper ctrl q

23 La commande more more accepte plusieurs fichiers : met en en tête de chaque fichoer une bannière avec le nom du fichier courant. Offre plusieurs options –? Permet de voire toutes les options –Return passe à la ligne suivante –Espace passe à la page suivante –q sort de laffichage prématurément

24 Copier un fichier Deux utilisations de la commande cp cp fichier1 fichier2 duplique fichier1 dans fichier2 cp fichier1 fichier2… fichiern repertoire cp –R rep1 rep2

25 Renommer/déplacer un fichier mv (move) Exemples : –mv toto titi(renome toto en titi) –mv essai toto(renome essai en toto) –mv toto titi /tmp(déplace deux fichiers) –mv toto /tmp/titi(déplace et renomme)

26 Détruire un fichier rm (remove) efface un ou plusieurs fichiers Exemples : –rm toto –rm essai1 essai2 –rm –r users/ens Options possibles : –-f (force malgré les protections) –-i pour confirmer la destruction –-r pour détruire récursivement un répertoire

27 Commandes de manipultion de fichier basename permet dextraire le nom le plus relatif dun fichier : $ basename [suffixe] Exemples : –$ basename /users/ens/moncompte moncompte –$ basename moncompte/src/pgme.c.c pgme –$ basename moncompte/src/pgme.c e.c pgm Pas de vérification de lexistence des fichiers

28 La commande dirname Extrait le chemin du fichier Exemple : –dirname /etc/passwd /etc

29 La commande cut Découpe des lignes dun fichier ou de lentrée standard $ cut –cliste [ ] $ cut –fliste [-d ] [-s] [ ] liste est une liste dentiers séparés par des virgules correspondant aux caractères Exemples de valeurs de liste : –1,4,71 et 4 et 7 –1-3, 81 à 3 et 8 –-5,101 à 5 et 10 –3-3 à la fin

30 Les options de la commande cut -c découpe selon les caractères -f découpe par champ selon le caractère séparateur de champ donné par –d. Par défaut le caractère séparateur est le caractère tab -s supprime les lignes qui ne contiennent pas de séparateur

31 Exemples dutilisation de cut $ cut –c-5 /etc/passwdextrait les 5 premiers caractères de chaque ligne du fichier /etc/passwd $ cut –f1,5 –d: /etc/passwdextrait le premier champ (nom de login) et le cinquième champ (nom réél de lutilisateur) du fichier /etc/passwd

32 La commande find Exécute une recherche selon les critères définis dans une expression depuis le chemin indiqué. Syntaxe : find [ ]

33 Les expressions possibles pour find -name recherche le fichier portant un nom -links recherche les fichiers possédant n liens -user recherche les fichiers appartenant à un utilisateur -group recherche les fichiers appartenant à un groupe -type recherche les fichiers ayant un type (f=fichier, d=répertoire, b=périphérique) -ctime recherche les fichiers créés avant ou après une date de création -print affiche le fichier pour lequel lexpression est réalisée -exec exécute une commande pour le fichier trouvé -perm recherche les fichier ayant le mode correspondant à un masque (3 chiffres en octal)

34 Exemples commande find $ find / -name passwd –print $ find.. –user u1 –print $ find. –type d –print –exec ls –l {}; - print $ find / -name core –exec rm {} \; -print $ find / -name core –exec ls -l \; -exec rm {}\;

35 La commande grep Recherche une chaîne de caractères dans un ou plusieurs fichiers $ grep [ ] [ ] Les options : –-iignore majuscules et minuscules –-h supprime le nom du fichier devant chaque lligne –-n affiche le numéro de ligne dans le fichier –-v affiche toutes les lignes sauf celles contenant la chaîne

36 Exemples commande grep $ grep ^u /etc/passwd $ grep –v « ; » *.c $ grep ksh$ /etc/passwd

37 La commande head Extrait les n premières lignes dun fichiers Syntaxe : head [- ] [ ] –Par défaut n=10 et cest lentrée standard qui est prise Exemples : –$ head –2 prog.c –$ head lettre

38 La commande od Affiche le contenu dun fichier sous des format de données Les options : –-oaffiche le contenu en octal (option par défaut) –-ccaractères ascii –-d, -Dcontenu affiché en décimal –-x, -X contenu affiché en hexadécimal Exemples : –od –c pgme –od –x prog.c

39 La commande sort Trie et fusionne des fichiers Syntaxe : $ sort [ ] [+pos1] [-pos2] [ ] Les options : –-dordre lexicographique (par défaut) –-n, -btrie suivant la valeur numérique des champs –-r trie selon lordre inverse –-txle caractère x devient le caractère séparateur de champs par défaut cest lespace) –+pos1-pos2 restreint la zone qui est utilisée pour le tri aux champs qui commencent avec ppos1 et se terminant à pos2

40 Exemples commande sort $ sort /etc/passwd $ sort –r toto $ sort +0 –1 +3 –4 toto

41 La commande tail Copie une partie dun fichier depuis un certain point jusquà la fin Syntaxe : $ tail [+-n [lbc] [fr]] [ ] –+n à partir du début –-n à partir de la fin –Lunité l pour les lignes (10 par défaut), b pour les blocs (512 octets), et c pour les caractères –Si r est indiqué tail affiche alors en commençant par la fin –f indique que tail ne sarrête pas en fin de fichier, mais boucle en attendant que le fichier grossisse

42 Exemples commande tail $ tail –10 prog.c $ tail +10 prog.c $ cat >> /tmp/essai $ tail –2lf /tmp/essai

43 tr remplace un caractère ou un ensemble de caractères par un autre. –Syntaxe :tr [-cds] [chaine1] [chaine2]

44 Commandes de surveillance who, w, ps nice, renice, kill vmstat : statistiques sur la mémoire virtuelle swapon, swapoff gestion espace pour la pagination du espace sur les répertoires df espace sur le système de fichiers

45 Commandes et flux Tubes nommés Redidections Arguments de commandes et entrées de commandes

46 Toute commande Unix, dès son lancement, possède 3 fichiers ouverts : –Lentrée standard (stdin) ou 0 –La sortie standard (stdout) ou 1 –La sortie erreur (stderr) ou 2 Dans le shell sh, tout fichier ouvert par un programme est représenté par &X, où X est un numéro qui sincrémente à chaque ouverture de fichier. – stdin, stdout et stderr sont respectivement pour toute commande lancée dans le shell &0, &1 et &2.

47 Rediriger la sortie : $ ls –l 1>listeFich.txt Rediriger les deux flux dans un même fichier (en tapant une commande erronée) $ ls –l >>erreur 2>&1 Exemples :

48 Exemple 3 : compter le nombre dutilisateurs connectés $ who | wc –l 6 $ who | wc –l >temp $ cat temp 6

49 $ ls ; who >temp bin users tmp $ cat temp u1 tty05 Oct 8 08:35 u2 tty05 Oct 8 09:55 Seule la sortie de la dernière commande est redirigée vers le fichier temp $(ls;who)>temp; cat temp bin users tmp u1 tty05 Oct 8 08:35 u2 tty05 Oct 8 09:55

50 Exécution des commandes 1)Interactif (foreground) 2)Asynchrone (arrière plan, background) 3)Différé 4)cyclique Différents modes dexécution des commandes

51 Mode dans lequel le système rend de façon interactive le résultat de la commande (vue précédement) 1)Interactif (foreground)

52 & nohup & les touches ctrl (contrôle) et z (simultanément), puis suivies de la commande bg permet de lancer une commande en background nohup évite que les processus lancés en backgroud ne soit arrêtés lors du logout. Envoi résultat par mail à lutilisateur. Lancement de plusieurs commandes sans attendre que chacune dentre elles se termine cat essai1 & cat essai2 … numéro du processus lancé par le Shell $ cc pgme.c & On récupère le promt shell avant que la compilation ne soit terminée $ (echo « Bonjour »;sleep 15; echo « Bye ») & Asynchrone (arrière plan, background)

53 Différé at Démon at Commandes atq et atrm Fichiers de configuration at.allow et at.deny (voir plus loin fonctionnement similaire à ceux de cron) Fichers : /var/spool/cron/atspool /var/spool/cron/at.jobs Exemple : at 8:15 May 24 < fichCmde

54 Exécution cyclique Démon cron Commande crontab Pour un utilisateur quelconque : /var/spool/cron/crontabs/ Pour le super utilisateur : /var/spool/cron/crontabs/root Format dune ligne de ce fichier : Minute heure jours_mois mois jours-semaine commande Où : –Minute : 1 à 60 –heure : 1 à 60 –jours_mois : 1 à 31 –mois : 1 à 12 –jours-semaine : 0 à 6 (0=dimanche) –Commande : commande à exécuter de façon cyclique.

55 Fichiers de configuration associés : /etc/cron.d/cron.allow /etc/cron.d /cron.deny Accès autorisé à un utilisateur si : /etc/cron.d/cron.allow existe et le user ny est pas Ou bien : /etc/cron/cron.allow nexiste pas et si le nom user napparait pas dans cron.deny Acces refuse à un user si : /etc/cron.d/cron.allow existe et le user ny est pas Ou bien /etc/cron/cron.deny existe et lutilisateur est dedans et cron.allow nexiste pas Si aucun des deux fichiers nexiste, seuls les utilisateurs ayant les autorisation solaris.jobs.users peuvent soumetre des jobs Pour root, les règles sappliquent si les 2 fichiers /etc/cron/cron.allow et /etc/cron/cron. deny existent Contrôle du lancement de commandes cyclique

56 La programmation Shell Différentes versions sh shell Bourne (disponible sur toutes les machines) csh Berkeley (Bill Joy) rsh exécution à distance tcsh, ksh, bash, vsh,…

57 Comment changer shell de login ? 1. Si le shell est valide (présent dans /etc/shells) et les binaires disponibles (/etc/sh, /etc/csh/, /etc/bash,…): – chsh –s shellDeLogin utilisateur – passwd –s Une ligne du fichier /etc/passwd contient à la fin, le nom du shell par défaut, à activer au moment du login. 2.Si les binaires ne sont pas disponibles : Acquérir les sources et effectuer la compilation soi- même.

58 pdksh : version libre de ksh : –ftp://ftp.cs.mun.ca/pub/pdkshftp://ftp.cs.mun.ca/pub/pdksh bourne shell : compilateur CCsh, commercialié par Comeau Computing : – bash écrit et maintenu par Free Software Foundation

59 Quelques spécificités syntaxiques des différents shell sh Caractères spéciaux: * ? [akl] [a-g] [!A-Z] # $ & ; >> | « ` / () {} Passage darguments : $0 $1… $9 $# nombre arguments (sauf $0) $$ pid du shell qui exécute $* chaine des arguments (sauf $0) liste des arguments (sauf $0) $? Code retour de la dernière commande $! Pid du dernier processus asynchrone

60 sh (suite) Variables nomDeVariable=valeur Echo $ nomDeVariable Variables denvironnement –Créées au login (HOME, USER…) –Générales (MAIL, CLASSPATH, PATH,…° Le problème dexportation de variables echo $TOTO TOTO='bonjour je suis sh' echo $TOTO bonjour je suis sh sh echo $TOTO (TOTO n'a pas été exporte) Ctrl+D export TOTO sh echo $TOTO (TOTO a été exporté) bonjour je suis sh

61 Structure de contrôle Condition : cest toujours le code retour dune commande (0 pour vrai, faux sinon) Test expression où expression vaut : -f nom -d nom -r (xw) nom -s nom (taille) -z chaine (chaine vide) chaine1 = chaine2 chaine1 != chaine2 (égalité entre chaines) Nombre1 –eq nombre2 (-ne –gt –ge –lt –le) –Connecteurs ! –a -o

62 Permet larithmétique entière sur les variables. + - * / % A = `expr $A + 1` Permet la comparaison de chaînes de caractères (le résultat est le nombre de caractères reconnus au début) expr « 1234trfhj » : [0-9]* donne 4 Permet lextraction de chaînes expr « toto.c » : « \(.*\).cdonne toto expr

63 Conditionnelle if cond1 then Cmde… elif cond2 then Cmde… … else Cmde… fi Conditionnelle multiple case nomVariable in chaine1) cmde…;; chaine2) cmde…;; … esac

64 Boucles for nomVar in liste do Cmde… Done while cond do Cmde… done until cond do Cmde… done Sortie exceptionnelle par break(n) continue exit(n)

65 Liste de commande : {commande…} && {commande} si code retour est 0 {commande…} || {commande} si code retour nest pas 0 Fonction : nomFonction() {commande…} Peut renvoyer un code retour avec return(n)

66 Entrées/sorties read listeNomVariables Lit sur lentrée standard. Les chaînes sont séparées par des espaces ou des tab echo chaine \c pas de passage à la ligne \b backspace \n newline,…

67 Compléments sur les variables ${nomVariable}chaine ${nomVariable:-chaine} la substitution se fait même si la variable est nulle ou non initialisée ${nomVariable:+chaine} la substitution se fait si la variable est initialisée, sinon substitution de la chaine vide

68 ksh et bash Fichiers de configuration ~/.profile /etc.profile /etc/suid_profile Variables denvironnement en plus Des fonctions en plus Autres spécificités : Expansion de ~ en HOME Compléments des noms par EscEsc Commande alias et unalias (alias nomAlias=chaine) Capture de la sortie standard par $(commande) Historique des commandes ${nomVariable#chaine} enlève chaîne au début ${nomVariable%chaine} enlève chaîne à la fin

69 ksh et bash (suite) ${#nomVariable} retourne le nombre de caractères ${#*} ou retourne le nombre de paramètres positionnels Génération des noms de fichiers ?(listeDechaine) reconnaît 0 ou une des chaînes contenues dans listeDechaine *(listeDechaine) reconnaît 0 ou plusieurs chaînes +(listeDechaine) reconnaît une ou plusieurs reconnaît une des chaînes !(listeDechaine) reconnaît tout sauf une des chaînes

70 bash (suite) Tableau de variables : typeset nomVariable[taille]déclaration set –A nomVariablelisteChaineaffectation nomVariable[rang]=chaîneaffectation ${nomVariable[rang]}désignation ${nomVariable}[*]} retourne la taille du tableau

71 Commande let (préférable à la commande expr) + - * / % >= == !== = (affectation) Exemples : let i=2 let i=i+1 let « j =i*2 » quoter si espaces ou bien ((j =i*2)) pour ne pas quoter if ((j <=i*2)) …. ksh et bash (suite)

72 Expression conditionnelle [[expression]] où expression peut être : fichier1 –nt fichier2 plus récent fichier1 –ot fichier2 plus ancien chaine1chaine2 après dans lordre lexicographique -l cest un lien -s cest un socket connecteurs ! && || ksh et bash (suite)

73 csh Ce qui change : Fichier de configuration ~/.cshrc Définition des variables : set nomVariable = valeur (unset) setenv nomVariable valeur (unsetenv) Structures de contrôle if ( expression) then commande… elsif (expression) commande… else commande… endif

74 csh switch (chaine) case motif: commande… [breaksw] … default: commande… endsw

75 csh (suite) foreach nomVariable (listeValeurs) Commande… end while (expression) commande end repeat nbFois commande goto etiquette etiquette:

76 csh (suite) Les paramètres positionnels ($0 $1… $9) argv[] accepté Les entrées : le read est remplacé par : set nomVariable = $< Expression dans if while … : + - * / % = == != =~ !~ & ^ | (opération bit à bit) ! && || if {commande} permet de tester le code retour

77 Écriture de commandes shell 1.Fichier de commandes Édition dun fichier Rendre le fichier exécutable Le nom du fichier sera le nom de la commande Modification de la variable PATH 2.Mode interactif Affichage dun second prompt si retour à la ligne

78 Le langage awk Permet dappliquer un programme, écrit dans une syntaxe spécifique, à un ensemble de fichiers donnés en entrée Basé sur la notion de pattern qui permet deffectuer un filtrage sur les données des fichiers traités Plus élaboré que sed (stream editor) Deux commandes /etc/bin/awk et /usr/xpg4/bin/awk

79 La commande awk possède deux formes 1)awk … 2)awk –f -F …

80 Forme générale dun programme awk Awk lit chaque ligne dentrée et la divise en des champs séparés par un séparateur. BEGIN{ } { } … END{ } Lecture dune ligne par awk

81 Dans une expression awk : $0 représente la ligne dentrée dans sa totalité $1 représente le premier champ de la ligne $2 représente le deuxième champ de la ligne … $i représente le i ième champ de la ligne NF représente le nombre de champs de la ligne traitée NR représente le nombre de lignes lues FNR représente le nombre de lignes du fichier FS représente le séparateur de champs (défaut espace ou tabulation) RS représente le séparateur de ligne (défaut retour chariot) ARGC représente le nombre darguments de la commande ARGV représente un tableau des arguments (sans les options et le programme et commence à zéro) : ARGV[0] contient le nom de la commande, ARGV [1] le premier fichier, ARGV [2] le deuxième fichier,… de la commande FILENAME représente nom du fichier actuel OFMT représente le format dimpression des nombres OFS représente le séparateur de champs à limpression ORS représente le séparateur de lignes à limpression

82 Exemples awk /srb/ $HOME/toto imprime toutes les lignes contenant la chaine srb dans le fichier $HOME/toto awk END{print NR} $HOME/toto imprime le nombre de lignes du fichier $HOME/toto awk {print $3} $HOME/toto imprime le troisième champ de chaque ligne du fichier awk NR==10 imprime la dixième ligne de lentrée awk {champ=$NF} END{print champ} imprime le dernier champ de la dernière ligne

83 Et encore dautres exemples awk utiles awk NF>4 /$HOME/toto imprime toute ligne à plus de 4 champs awk $NF>4 /$HOME/toto imprime toute ligne dont le dernier champ est supérieur à 4 awk {nf=nf+NF} END{print nf} /$HOME/toto imprime le nombre de champs de toutes les lignes dentrées awk /jean/ {nlignes+=1; print nlignes} imprime le nombre de lignes contenant le mot jean awk $1>max {max=$1;maxligne=$0} END{print max,maxligne} imprime le plus grand champ et la ligne qui le contient awk length($0)>80 /$HOME/toto imprime toute ligne plus longue que 80

84 Exemples (suite) awk {temp=$1;$1=$2;$2=temp;print} /$HOME/toto imprime chaque ligne en permutant le premier et le deuxième champ awk {print NR,$0} /$HOME/toto imprime chaque ligne précédée par le numéro de ligne awk {for (i=NF;i>0;i=i-1) printf (« %s »,$i) printf(« \n ») } imprime les champs de chaque ligne en ordre inverse

85 Expression awk Une expression awk peut prendre une valeur numérique ou une chaine Opérateurs disponibles: +,-,*,/,%,^ et la concaténation (caractère espace) ++,--,+=,-=,*=,/=,^= et %= Relations dordre (appliqués aux chaînes et aux nombres) =,> Opérateurs de filtrage explicites : ~ et !~ Exemples : $1~ /srb/ est vraie que pour les enregistrements dont le premier champ est égal à srb (cf. Description ci dessous)

86 Les expressions régulières Pour être utilisées en tant que pattern (sélecteur) une expression régulière doit être placée entre slash (/ et /) de la façon suivante : si r est une expression régulière, on écrit /r/ ~ /r/ vérifiée si la ligne contient r !~ /r/ vérifiée si la ligne ne contient pas r Les métacaractères employés : ^,$,.,[], |(),*,+,?,\ (cf. Tableau) \ sert à masquer un des autres caractères, placé devant certains caractères il filtre une séquence de tabulation (tab chap2 p40

87 Expressions régulières utilisées cle non méta caractère \c le caractère littéral c ^début de chaine $fin de chaîne. tout caractère [c1c2…] tout caractère c1, c2,… [^c1c2…] tout caractère sauf c1, c2,… r1|r2 toute chaîne filtrée (matchée) par r1 ou bien r2 (r1)(r2) toute chaîne xy où r1 filtre x et r2 filtre y (r)* zéro ou plusieurs chaînes consécutives filtrées par r (r)+ une ou plus dune chaînes consécutives filtrées par r (r) ? La chaîne nulle ou bien la chaîne filtré par r (r) toute chaîne filtrée par r

88 Signification des caractères précédé de \ \bbackspace : supprime le dernier caractère dune chaîne \fformfeed : nouvelle page \n newline : nouvelle ligne \rcarriage return : retour à la ligne \ttabulation : crée une tabulation de 10 espaces \dddvaleur octale ddd où ddd est trois nombres compris entre 0 et 7

89 Exemples expressions régulières /([a-zA-Z])(ee)/ /(forever|closer) (remain|and)/ /F*/ /FR+E/ /FRR*E/ /FR?E/ /[A-Z]+/ /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][+-]?[0-9]+)?$/

90 Utilisation des variables en awk Pas de déclaration ni dinitialisation explicite de variables ni de type Une variable peut correspondre à un type nombre ou chaîne ou même aux deux. Awk convertit la valeur de la chaîne en nombre ou en chaîne lors de lexécution du programme. Initialisation à la chaîne vide Exemple : $1==« Fredo » { Fredo=10;$2=$2+Fredo print $2 } Affiche la valeur du deuxième champ augmentée de 10 pour toute ligne dont le premier champ est Fredo Exemples : –NF>5 –$1> « s »

91 Les actions awk Une action awk se compose dune ou plusieurs instructions séparées par un point-virgule ou un retour chariot. Une instruction peut être : Une affectation,une instruction conditionnelle, une boucle ou lappel dune fonction standard telle que print. Voici la liste des instructions : If (condition) [else ] While ( ) for ( ; ; ) for ( in ) do while (expr) break continue {[epxr]

92 Les tableaux awk Pas de déclaration. Indexation possible avec des chaînes de caractères Doù une utilisation possible comme mémoire associative Exemple : le premier champ du fichier /etc/passwd contient les noms de login des utilisateurs. awk BEGIN{FS=« : » } {if (user[$1] {print $1, « dupliqué » } user[$1]=NR }

93 Les fonctions prédéfinies awk exp (x) retourne lexponentiel de x log(x) sqrt (x) int (x) retourne lentier >0 le plus proche de x rand() retourne un nombre au hasard entre 0 et 1 (>=0 et <1) index (s,t) position de la première occurrence (apparition) de t dans s. rend zéro si t napparaît pas dans s. int (s) tronque s pour avoir un entier length (s) longueur de s match (s,x) position de lexpression régulière x dans la chaîne s split (s,a,fs) disperse la chaine s dans un tableau a et retourne le nombre déléments de a sprint (fmt, listExpr) retourne listExpr formatée selon le format fmt substr (s,m,n) retourne les n caractères, sous chaîne de s, en commençant à la position m. getline lit une ligne dans $0 (cf. ci-dessous)

94 Définition dune fonction function ( ) { [return [ ]] } =séquence de variables séparées par des virgules

95 Les sorties print print,,… print,,…> print,,…>> print,,…| printf (,,,…)> printf (,,,…)>> printf (,,,…) | close( ), cloture de la connexion entre printf et

96 Caractères décriture de formats c caractère ASCII d partie entière dun nombre e[-]d.ddddddE[+-] dd f [-]ddd.dddddd g e ou f selon ce qui est le plus court; supprime les zéros en trop o nombre octal non signé s chaîne x nombre hexadécimal non signé % écrit un % aucun argument nétant utilisé

97 Exemples de formats Format : fmtexpressionrésultat %c97a %d %5d %e E+01 %f |%s|largeur|largeur| |%.3s|largeur|lar|

98 Les entrées awk Lentrée peut être un pipe : Exemple: grep toto /etc/temp | awk { $1<=10 {print $0} } Séparateurs dentrée: FS (équivalent de OFS sur la sortie) et RS (équivalent de ORS sur la sortie) Modification possible en ligne de commande de FS avec loption –F Exemple : awk –F: –f fichpgme /etc/passwd

99 La fonction getline, pour lire des enregistrement en entrée getline lit sur lentrée standard et remplit les variables $0, $1, $2, $3,…, NR, NF et FNR getline lit sur lentrée standard et met le met dans une variable getline lit lenregistrement suivant dans le fichier et le met dans $0 en mettant à jour NR getline lit le prochain enregistrement du fichier et le met dans une variable | getline lit la sortie de commande et le place dans $0 en mettant à jour NF | getline lit la sortie de commande et le place dans une variable

100 Applications Validation, transformation et traitements de données Gestion de bases de données Génération de texte, mise à des formats spéciaux Compilation, interprétation, transformation de langage Expérimentation sur des algorithmes

101 Etudes dexemples Base de données Mini langage

102 Base de données (spécifications) Interrogation dune base de données dune discothèque. Elle regroupe, par style de musique, les groupes, les titres des albums, le nombre de disques selon le type de support (cassette, CD, ou disque vinyl). On effectue plusieurs interrogations de la base : – par style de musique (liste de tous les groupes avec renseignements associés), –Par groupe (liste des albums présents dans la base, le nombre disponible et leur prix) –Par titre dalbum (prix, disponibilité, groupe et style)

103 Le menu qui apparaîtrait est : Style de musique Groupe Titre dalbum Quitter Tant que le choix Quitter nest pas choisi, le programme bouclera et chaque résultat dinterrogation sera à la fois affiché sur la sortie standard et mis dans un fichier out.dat où tous les résultats seront mémorisés. Il est également possible de modifier la base de données.

104 Nom du fichier = musique Structure du fichier avec les particularités suivantes : –Tous les caractères doivent être en majuscules –Le champ séparateur entre les éléments virtuels est « : » qui est initialisé au début du programme –Le champ de détection du style de musique est « * » –Le champ « ; » est un sous champ de détection à lintérieur dun élément virtuel qui permet de distinguer le type de support et le prix qui lui associé

105 * STYLE : HARD GROUP : SCORPIONS ALBUM : IM STILL LOVING YOU SUPPORT : CD=546; VINYL=400; K7=71 PRIX :110;63;44 * STYLE:ROCK GROUP : ALAN PARSON PROJECT ALBUM : AYE IN THE SKY: STEREOTOMY SUPPORT : CD=5346; VINYL=456; K7=96 PRIX :115;70;52

106 STYLE:ROCK GROUP : PINK FLOYD ALBUM : THE ALL: ANIMALS: OBSCUED BY CLOUDS SUPPORT : CD=4200; VINYL=213; K7=45 PRIX :105;75;42 *

107 Un mini-langage: génération dun calculateur Description des expressions arithmétiques par une grammaire : expr terme expr + terme expr – terme terme fait terme*fait terme/fait fait nombre (expr)

108 Environnements graphiques Unix: pas d'environnement graphique dans l'OS même. Avantages Liberté de choix de linterface contrairement à Windows ou Macintosh accès à pratiquement toutes les ressources de la machines via des commandes complètes et puissantes. Inconvénients Il faut travailler pour installer un environnement graphique Accès initial à la machine 'moins intuitif Tous les env. graph. ont les mêmes buts: avoir plus d'informations disponibles sur l'écran interface Homme/Machine plus intuitive et plus facile d'accès La contre-partie: utilisation de la CPU utilisation de la mémoire

109 Le Système X-Window: –Interface graphique standard des systèmes UNIX –Repose sur un « serveur X » –Utilise un gestionnaire de fenêtres: plusieurs sont disponibles (KDE2, WindowMaker, Enlightenment, etc…) –Sous Linux: XFree86 –Possibilité de déporter laffichage à travers un réseau (variable DISPLAY et autres authorisations)

110 Le Système X-Window: Bureau KDE2

111 Le Système X-Window: Bureau Gnome

112 Le Système X-Window: WindowMaker

113 Bibliographie Programmation shell sous Unix/Linux sh (Bourne), ksh, bash ISBN: Éditions Eyrolles Les bases des l'administration système - 3ème édition ISBN: Éditions Eyrolles Unix - Administration système - AIX, HP-UX, Solaris, Linux ISBN: Édition Eyrolles UNIX Guide de l'administrateur Garth SnyderGarth Snyder, Scott Seebass, Trent R. Hein Trent R. Hein ISBN: Éditions Eyrolles UNIX La Référence Installation Configuration Administration, Yves Lepage, Paul Iarrera


Télécharger ppt "Avertissement Ce document est un support de cours. Il ne constitue en aucun un ouvrage de référence à la programmation en exploitation. Son exploitation."

Présentations similaires


Annonces Google