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.

Slides:



Advertisements
Présentations similaires
Formation - Fedora et VMware
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
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.
Synchronisation des processus père - fils
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
Historique 1970 Développement dans un laboratoire de recherche Bell (Kernighan, Ritchie, Thompson) parallèlement au langage C Diffusion gratuite aux.
Linux de Base Merci à Arnaud dupont.
Mémoire & Processus Cours SE - SRC
Outils de développements
Systèmes d’exploitation
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,
Systèmes d'exploitations Les redirections d'entrées/sorties GRARI Mounir ESTO Année 2011.
Unix Raymond Ripp.
Les commandes Unix.
Principes de programmation (suite)
CPI/BTS 2 Programmation Web Introduction au PHP
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)
Analyse lexicale Généralités Expressions rationnelles Automates finis
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Version 2007Administration système Linux Francis Rogard 1 SYSTEME DEXPLOITATION LINUX La ligne de commandes.
Système d’exploitation
Programmation fonctionnelle Le langage LISP
Systèmes d'exploitations
Outils de Programmation
FICHIERS : Définition : Algorithme général:
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Perl, un langage de programmation pour les données textuelles
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 4 Syntaxe des commandes, documentation standard,
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Exemples de programmation Bourne shell et nawk(1)
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Programmation nawk(1)
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.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie I 2014.
Systèmes dexploitation et programmation de systèmes -GPA435- Cours #5: Éléments de programmation (Partie 2) Enseignant: Jean-Philippe Roberge Jean-Philippe.
Systèmes d’exploitation et programmation de systèmes -GPA435- Cours #4: Éléments de programmation (Partie 1) Enseignant: Jean-Philippe.
LAL Service Informatique Stage Informatique 1 Le système Unix l Multitâche, multi-utilisateur, partage des ressources l Universel : machines, portabilité.
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 6 Substitution: variables et commandes,
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
Animateur : Med HAIJOUBI
Utilisation avancée de linux
CHAPITRE 4 : Gestion des Utilisateurs et Groupes
Shell Equipe ID Bioinformatics Training Course June 2014.
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.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Maria Malek - EISTI - CPI11 Présentation d’UNIX –1969, laboratoire Bell –Systèmes multi-tâches multi-utilisateurs –Architecture Le noyau –Gestion de la.
Le langage Racket (Lisp)
Unix Raymond Ripp.
Finder => Application => Utilitaires => Terminal Editor:pico Touches –Finder=>Applic.=> Utili. => Touches –~: Alt+N –|: Shift+Alt+N –[: Shift+ Alt+5 –{:
Variables et environnement utilisateur W. Barhoumi.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Systèmes d’exploitation
 Formulaires HTML : traiter les entrées utilisateur
Le Korn Shell. 2 Contenu  Présentation  Généralités  Les paramètes du shell  Les processus  l’édition des commandes  Les entrées sorties  La commande.
Elaboré par Ahmed BESSAIDI
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
FORMATION Unix/Linux CHAPITRE 3: Commandes De Base.
Scripts et fonctions Instructions de contrôle
Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell.
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,
Introduction à l’utilitaire
Chapitre 9 Les caractères.
Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

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 l’enseignant. Il est fortement conseillé d’annoter ce document grâce aux explications et exemples fournis durant le cours. Pour toute remarque, envoyer un courrier à abchiche@lami.univ-evry.fr ou à gilney@iup.univ-evry.fr

Programmation en exploitation sous UNIX Objectifs Plan du cours Bibliographie Nadia Abchiche Mimouni Gilney Damm Département GEII IUT Évry

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 d’exploitation Nombreuses versions sh shell Bourne (disponible sur toutes les machines) csh Berkeley (Bill Joy) rsh exécution à distance tcsh, ksh, bash, vsh,…

Caractéristiques de l’interprè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 l’exploitation Propose un véritable langage de programmation Nombreuses versions (sh, csh, ksh, bash,…)

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

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,…

Langage shell : généralités Variables utilisateurs (chaînes de caractères) Contenu obtenu en préfixant  $  à la variable Affectation par l’opérateur = ( autrement selon le shell) Exemple : v=bonjour echo $v Afficher bonjour Variables prédéfinies Affectées par le shell : # ? $ ! – Affectées avant l’exé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 Mettre exemples pour expliquer chaque point

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 MAILCHECK intervalle en sec au bout duquel le mail est contrôlé DISPLAY nom de l’écran d’affichage TERM nom du type de terminal

Quotage Méta-caractères: \ $ * ` " ' Caractère d ’échappement: \ 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

Syntaxe des commandes $ <cmde> [<option> [<option[… ]]] [<fichier> [<fichier> […]]] $ est le prompt shell (modifiable par PS1) <cmde> 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 n’importe quelle chaîne « ? » pour n’importe quel caractère « […] » n’importe quel caractère de la liste « - » séparateur d’intervalle <<mettre exemples>>

Les commandes Le symbole $ invite l’utilisateur à taper une commande (interprète de commandes) Les commandes sont tapées en minuscules $ <nom de la commande> [options] [paramètres] $ man <nom de la commande> 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 Nous verrosn comment modifier le prompt avec la variable PS1 Exemple : man login donne la description et l’utilisation de la commande login. Souvent les commandes lancées sans paramètres attendent une saisie au clavier. Pour stopper la saisie de paramètres faire ctrl D Détailler l’explication de man avec un exemple

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 d’ensemble 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 d’un chiffre.

La commande man Name Synopsis Description See also synatxe et arguments Synopsis usage Description exemples, fichiers, exit values See also Fichiers et autres commandes liés Variable MANPATH contient le chemin d’accè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. Mettre copie d’écran pour man et expliquer en détails. C’est la seule commande dont on étudiera les options en détails.

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 <nom du répertoire destination> Exemple1 : cd /users/ens/ Exemple 2 : cd ramène dans le répertoire de login

Lister le contenu d’un 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-x 1 etud1 51 Oct 1 12:00 planing drwx r-x r-x 2 etud1 512 Oct 1 12:00 src Propriétaire du fichier Le premier caractère indique le type de l’objet : - fichier ordinaire d repertoire c fichier device (périphérique) en mode caractère b fichier device (périphérique) en mode bloc On retrouve les droits dont on a parlé. Le nombre de lien d’un répertoire st tjs > 1 (lien. Et ..) Pour les répertoires non vides, c’est le nombre de sous répertoires Plus 2 Taille du fichier Nom du fichier Date dernière modification Nombre de liens Spécification d’accès pour le autres Spécification d’accès pour le groupe Spécification d’accès pour le propriétaire Spécification du type de fichier

Les options de la commande ls –a affiche 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 qu’objets 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. Differentes options selon le format d’affichage soushaité. Les majuscules et minuscules ont leur importance

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 Les répertoires sources, lettres et jeux sont créés dans le répertoire courant Le rep projets est créé dans le rep courant alors que le rep cours est créé dans le rep users sous la racine. Dans certains systèmes, l’option permet de créer des répertoire de niveau différents. le dernier exemple; le rep jeux est créé dans lettres même si lettre n’existe pas.

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

Changer les attributs d’un fichiers Possibilité de modifier les droits d’accès à un fichier avec la commande chmod pour change mode chmod <utilisateurs> [+-=][rwx] Paramètres : u User + Ajouter r lecture g groupe - Retirer w écriture o Others = Positionner x exécution

Exemples d’utilisation de la commande chmod $ chmod o-r toto retire le droit de lecture pour les autres utilisateurs pour le fichier toto $ chmod ug+w toto ajout 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

Afficher le contenu d’un 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 Cat sans argument attend une saisie au clavier. Au caractère ctrl d cat envoie les données sur l’entrée standard

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 l’affichage prématurément

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 IL est possible de spécifier des chemins absolus ou relatifs pour chaque fichiers. L’option –R permet de copier une arboresecence Attention, pour copier vers un rep, l’utilisateur doit avoir les droits d’écriture sur ce répertoire

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)

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 Necessite le droit d’écriture sur le répertoire Point arrêt cours 5 oct 2001 (2 heures)

Commandes de manipultion de fichier basename permet d’extraire le nom le plus relatif d’un fichier : $ basename <nom de fichier> [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 l’existence des fichiers Pas de vérification de l’existence des fichiers le traitement est effectué sur les chaines de caractères

La commande dirname Extrait le chemin du fichier Exemple : dirname /etc/passwd  /etc Extrait le chemin du fichier fait l’inverse de basename

La commande cut Découpe des lignes d’un fichier ou de l’entrée standard $ cut –cliste [<nom de fichier>] $ cut –fliste [-d<caractère>] [-s] [<nom de fichier>] liste est une liste d’entiers séparés par des virgules correspondant aux caractères Exemples de valeurs de liste : 1,4,7 1 et 4 et 7 1-3, 8 1 à 3 et 8 -5,10 1 à 5 et 10 3- 3 à la fin

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

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

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

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

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 {}\; $ find / -name passwd –print Rechreche le fichier de nom relatif passwd à partir de la racine et les affiche $ find .. –user u1 –print recherche à partir d’un répertoire père les fichiers appartenant à u1 et les affichent $ find . –type d –print –exec ls –l {}; -print recherche tous les répertoires depuis le répertoire courant et exécute la commande ‘ls –l’ avec chaque nom de répertoire trouvé $ find / -name core –exec rm {}\; recherche tous les fichiers portant le nom core depuis, puis les efface en les affichant $ find / -name core –exec ls _l \; -exec rm {}\; plusieurs commandes différentes peuvent être exécutées avec le même find en utilisant plusieurs fois exec

La commande grep Recherche une chaîne de caractères dans un ou plusieurs fichiers $ grep [<options>] <chaine> [<fichier>] Les options : -i ignore 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 Parler des méta caracères et leur sens et de l’utilité de les protéger pour éviter leur évaluation

Exemples commande grep $ grep ‘^u’ /etc/passwd $ grep –v « ; » *.c $ grep ksh$ /etc/passwd $ grep ‘^u’ /etc/passwd affiche les ligne commençant par le caractère u du fichier /etc/passwd $ grep –v « ; » *.cr les lignes ne contenant pas le caractère ; $ grep ksh$ /etc/passwd les lignes se terminant par les caractères ksh dans le fichier /etc/passwd

La commande head Extrait les n premières lignes d’un fichiers Syntaxe : head [-<n>] [<fichier>] Par défaut n=10 et c’est l’entrée standard qui est prise Exemples : $ head –2 prog.c $ head lettre

La commande od Affiche le contenu d’un fichier sous des format de données Les options : -o affiche le contenu en octal (option par défaut) -c caractères ascii -d, -D contenu affiché en décimal -x, -X contenu affiché en hexadécimal Exemples : od –c pgme od –x prog.c

La commande sort Trie et fusionne des fichiers Syntaxe : $ sort [<options>] [+pos1] [-pos2] [<fichier>] Les options : -d ordre lexicographique (par défaut) -n, -b trie suivant la valeur numérique des champs -r trie selon l’ordre inverse -tx le caractère x devient le caractère séparateur de champs par défaut c’est l’espace) +pos1-pos2 restreint la zone qui est utilisée pour le tri aux champs qui commencent avec ppos1 et se terminant à pos2 Toutes les liognes de tous les fichiers sont triées et sont envoyées vers la sortie standard

Exemples commande sort $ sort /etc/passwd $ sort –r toto $ sort +0 –1 +3 –4 toto $ sort /etc/passwd trie avec les valeurs par défaut $ sort –r toto trie ds ordre iverse $ sort +0 –1 +3 –4 toto trie le fichier de données toto sur les champs 1 et 4. On commence à 0

La commande tail Copie une partie d’un fichier depuis un certain point jusqu’à la fin Syntaxe : $ tail [+-n [lbc] [fr]] [<fichier>] +n à partir du début -n à partir de la fin L’unité 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 s’arrête pas en fin de fichier, mais boucle en attendant que le fichier grossisse

Exemples commande tail $ tail –10 prog.c $ tail +10 prog.c $ cat >> /tmp/essai $ tail –2lf /tmp/essai $ cat >> /tmp/essai $ tail –2lf /tmp/essai Imprime au fur et à mesure des données entrées par la commande cat

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

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

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

Toute commande Unix, dès son lancement, possède 3 fichiers ouverts : L’entré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 s’incrémente à chaque ouverture de fichier. stdin, stdout et stderr sont respectivement pour toute commande lancée dans le shell &0, &1 et &2.

Exemples : 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

Exemple 3 : compter le nombre d’utilisateurs connectés $ who | wc –l 6 $ who | wc –l >temp $ cat temp

$(ls;who)>temp; cat 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

Exécution des commandes Différents modes d’exécution des commandes Interactif (foreground) Asynchrone (arrière plan, background) Différé cyclique

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

Asynchrone (arrière plan, background) <commande> & nohup <commande> & 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 à l’utilisateur. Lancement de plusieurs commandes sans attendre que chacune d’entre elles se termine cat essai1 & cat essai2 … numéro du processus lancé par le Shell $ cc pgme.c & 124569 On récupère le promt shell avant que la compilation ne soit terminée $ (echo « Bonjour »;sleep 15; echo « Bye ») &

Différé at <un temps> <commande> 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 Utilisation de jobs et fg At.allow et at.deny

Exécution cyclique Démon cron Commande crontab Pour un utilisateur quelconque : /var/spool/cron/crontabs/<nom utilisateur> Pour le super utilisateur : /var/spool/cron/crontabs/root Format d’une 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. Cron.allow accès autorisé si nom user apparaît dedans ou bien si ccron.allow n’existe pas et si le nom user n’appaeait pas dsc cron.deny /etc/cron.d.logchecker script qui regarde si le fichier de log n’a pas dépassé une taille limite aquel cas il le transfère dans /var/cron/olog Acces refuse à un user si /etc/cron.d/cron.allow existe et le user n’y est pas Cron.deny existe et user est dedans et cron.allow n’existe pas Si aucun des deux fichiers n’existe, seukement les users ayant les autorisation solaris.jobs.users qui peuvent soumeetre des jobs Pour root, les règles s’aapliquent si les 2 fichiers allow et deny existent Commande crontab avec différentes options permet de visualiser les jobs cycliques

Contrôle du lancement de commandes cyclique 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 n’y est pas Ou bien : /etc/cron/cron.allow n’existe pas et si le nom user n’apparait pas dans cron.deny Acces refuse à un user si : Ou bien /etc/cron/cron.deny existe et l’utilisateur est dedans et cron.allow n’existe pas Si aucun des deux fichiers n’existe, seuls les utilisateurs ayant les autorisation solaris.jobs.users peuvent soumetre des jobs Pour root, les règles s’appliquent si les 2 fichiers /etc/cron/cron.allow et /etc/cron/cron. deny existent

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,…

Comment changer shell de login ? 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. Si les binaires ne sont pas disponibles : Acquérir les sources et effectuer la compilation soi-même. Dans les manuels d’Unix, on précise qu’il faut faire chsh ou bien passwd –s. Mais cela suppose que votre nouveau shell soit reconnu comme un shell valide. <<(présent dans /etc/shells) >>. Il s’agit alors de modifier son shell sans passer par la modification de l’entrée dans le fichier /etc/passwd. Si les binaires ne sont pas disponibles : Acquérir les sources et effectuer la compilation soi-même. opération délicate, faire appel à quelqu’un qui l’a déjà fait. A mettre dasn /etc/<nom du shell>, et mettre à jour son fichier de login. Attention : Il faut être vigilant pour la modif du shell, le processus peut être difficilement réversible, à moins de faire un backup de son environnement sur des supports externes ou un autre compte. Si les binaires ne sont pas disponibles : Acquérir les sources et effectuer la compilation soi-même.

pdksh : version libre de ksh : ftp://ftp.cs.mun.ca/pub/pdksh bourne shell : compilateur CCsh, commercialié par Comeau Computing : comeau@csanta.attmail.com bash écrit et maintenu par Free Software Foundation <<Point Arret>> Pour les shells fournis avec le système, se référer au vendeur pour les bugs rencontrés.

Quelques spécificités syntaxiques des différents shell Caractères spéciaux: * ? [akl] [a-g] [!A-Z] # $ & ; < << > >> | ‘ «  ` / () {} Passage d’arguments : $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

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

Structure de contrôle Condition : c’est toujours le code retour d’une 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

expr Permet l’arithmé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 l’extraction de chaînes expr « toto.c » : « \(.*\).c donne toto

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

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

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

Entrées/sorties read listeNomVariables Lit sur l’entré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,…

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 Poizat page 6 à complétéer mettr exemples

ksh et bash Fichiers de configuration ~/.profile /etc.profile /etc/suid_profile Variables d’environnement 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

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 chaînes @(listeDechaine) reconnaît une des chaînes !(listeDechaine) reconnaît tout sauf une des chaînes

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

ksh et bash (suite) 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) Expression conditionnelle [[expression]] où expression peut être : fichier1 –nt fichier2 plus récent fichier1 –ot fichier2 plus ancien chaine1<chaine2 avant dans l’ordre lexicographique chaine1>chaine2 après dans l’ordre lexicographique -l c’est un lien -s c’est un socket connecteurs ! && ||

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) else endif

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

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

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

Écriture de commandes shell Fichier de commandes Édition d’un fichier Rendre le fichier exécutable Le nom du fichier sera le nom de la commande Modification de la variable PATH Mode interactif Affichage d’un second prompt si retour à la ligne

Le langage awk Permet d’appliquer 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 d’effectuer 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

La commande awk possède deux formes awk ‘<programme>’ <fichier1> <fichier2> … awk –f <fichierPgme> -F <carSep> <fichier1> <fichier2> … La première forme de la commande exécute les instructions awk dans la chaine <programme> sur l’entrée provenant des fichiers donnés en argument. La deuxième forme exécute les instructions awk se trouvant dans le fichier <fichierPgme> en utilisant comme caractère séparateur de champs le caractère qui suit l’option –F (si elle est spécifiée), sur l’entrée provenant des fichiers donnés en argument. La sortie de awk est généralement dirigée vers la sortie standard.

Forme générale d’un programme awk BEGIN{<instructions initiales> } <sélecteur1 (pattern)> {<action1>} <sélecteur2 (pattern)> {<action2>} … END{<instructions finales> Awk cherche dans chaque ligne du programme un sélecteur, et s’il s’applique,l’action associée est effectuée. Il peut y avoir autant de couples sélecteur/action qu’il est nécessaire. Après chaque lecture d’une ligne, chacun des sélecteurs est évalué (dans l’ordre de leur écriture). Si le sélecteur est vrai, l’action associée est exécutée. S’il n’y a pas de sélecteur, l’action est exécutée pour chaque ligne d’entrée. S’il n’y a pas d’action, la ligne d’entrée est copiée vers la sortie. Une action peut consister en plusieurs instructions séparées par un ; BEGIN et END indiquent des actions qui ne sont exécutées qu’au début (avant de lire la première ligne du fichier) et à la fin du fichier (après avoir lu la dernière ligne du fichier) Lecture d’une ligne par awk Awk lit chaque ligne d’entrée et la divise en des champs séparés par un séparateur.

Dans une expression awk : $0 représente la ligne d’entré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 d’arguments 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 d’impression des nombres OFS représente le séparateur de champs à l’impression ORS représente le séparateur de lignes à l’impression Les valeurs par défaut peuvent être modifiées par une simple affectation (dans la section BEGIN pour une prise en compte globale) Pour revenir à la valeur par défaut d’une variable il suffit de lui affecter la chaîne vide.

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 l’entrée awk ‘{champ=$NF} END{print champ}’ imprime le dernier champ de la dernière ligne

Et encore d’autres 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 d’entré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

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

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 d’ordre (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)

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/ <expression> ~ /r/ vérifiée si la ligne contient r <expression> !~ /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

Expressions régulières utilisées c le 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 d’une 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

Signification des caractères précédé de \ \b backspace : supprime le dernier caractère d’une chaîne \f formfeed : nouvelle page \n newline : nouvelle ligne \r carriage return : retour à la ligne \t tabulation : crée une tabulation de 10 espaces \ddd valeur octale ddd où ddd est trois nombres compris entre 0 et 7

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]+)?$/ Lignes contenant l’un des des deux mots de la prem parenthèse suivi de remain ou and Nbr rerels avce signe optionnel et un exp optionnel

Utilisation des variables en awk Pas de déclaration ni d’initialisation 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 l’exé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 »

Les actions awk Une action awk se compose d’une 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 l’appel d’une fonction standard telle que print. Voici la liste des instructions : If (condition) <instruction1> [else <instruction2>] While (<condition>) <instruction> for (<expr1>;<cond>;<expr>) <instr> for (<var> in <tableau>) <inst> do <instr> while (expr) break continue {[<instructions]…} Variable=expr print [liste expr] [>epxr]

Les tableaux awk Pas de déclaration. Indexation possible avec des chaînes de caractères D’où 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 }’ </etc/passwd Chap1 page 23

Les fonctions prédéfinies awk exp (x) retourne l’exponentiel de x log(x) sqrt (x) int (x) retourne l’entier >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 n’apparaît pas dans s. int (s) tronque s pour avoir un entier length (s) longueur de s match (s,x) position de l’expression 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)

Définition d’une fonction function <nom>(<liste de paramètres>) { [return [<expression>]] <instructions> } <liste de paramètres> =séquence de variables séparées par des virgules La fome d’un prgme awk devient alors une séquence de pattern-action suivie de définitions des focntions crées par l’utilisateur Ds le corps de la fonction les variables (paramètres) réfèrent aux arguments passés en paramètres lors de l’appel de la fonction. Ces varaables sont locales. Toute autre variable est globale. L’instruction return dans le corps de la fonction retourne la valeur d’une expression qui peut servir dans le niveau supérieur appelant. L’expression est optionnelle.

Les sorties print print <expression1>, <expression2>,… print <expression1>, <expression2>,…> <fichier> print <expression1>, <expression2>,…>> <fichier> print <expression1>, <expression2>,…| <commande> printf (<format>,<expression1>, <expression2>,…)> <nomfichier> printf (<format>,< expression1>, <expression2>,…)>> <fichier> printf (<format>,< expression1>, <expression2>,…) | <commande> close(<fichier>), cloture de la connexion entre printf et <fichier close(<commande>) fermeture des pipes system (<commande>) exécute une commande et retourne la valeur retournée par la commande <commande> print <expression1>, <expression2>,…écrit les epxressions séparées par OFS terminées par ORS Close(<fichier>), close(<commande) cloture de la connexion entre printf et <fichier> et <fichier> ou <commande> fermeture des pipes System (<commande>) exécute <commande>. La valeur retournée est celle de la commande Deux formes pour la fonctions print et printf (avec ou sans les parenthèses) : print <expression1>, <expression2>,… Ou bien print (<expression1>, <expression2>,…) <<formats d’impression>>

Caractères d’écriture de formats c caractère ASCII d partie entière d’un 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é

Exemples de formats Format : fmt expression résultat %c 97 a %e 97.5 9.750000E+01 %f 97.5 97.500000 |%s| largeur |largeur| |%.3s| largeur |lar|

Les entrées awk ‘<programme>’ <liste fichiers en entrée> awk ‘<programme>’ <entree standard> L’entrée peut être un pipe : Exemple: grep ‘toto’ /etc/temp | awk ‘{ $1<=10 {print $0} }’ Séparateurs d’entré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 l’option –F Exemple : awk –F’:’ –f fichpgme /etc/passwd La pluparat des versiiosn de awk ne prévoit pas la possibilité d’avoir une expression régulière à la place d’une valeur pour FR

La fonction getline, pour lire des enregistrement en entrée getline lit sur l’entrée standard et remplit les variables $0, $1, $2, $3,…, NR, NF et FNR getline <nom de variable> lit sur l’entrée standard et met le met dans une variable getline  <nom de fichier>  lit l’enregistrement suivant dans le fichier et le met dans $0 en mettant à jour NR getline <nom de variable> < <nom de fichier> lit le prochain enregistrement du fichier et le met dans une variable <commande> | getline lit la sortie de commande et le place dans $0 en mettant à jour NF  <commande> | getline <nom de variable> lit la sortie de commande et le place dans une variable Cherche l’enregistrement suivant et remet à jour les différentes valeurs de NR, NF et FNR en focntion de l’enregistrement lu et du progme. Elle retourne 1 si un enregistrement est effectivement présent, 0 si la fin du fichier est attenite et –1 si une erreur s’est produite. Plusieurs utilisations sont possibles pour cette fonction. Copier tableau page 77 Pour getline < « fichier l’expression ne modifie pas NR et FNR mais installe la nouvelle valeur de NF Getline x < « fichier ne modifie pas NF, NR et FNR<

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

Etudes d’exemples Base de données Mini langage

Base de données (spécifications) Interrogation d’une base de données d’une 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 d’album (prix, disponibilité, groupe et style) Cet exemple montre comment AWK peut être utilisé pour extraire des renseignements et générer des résultats à partir de données stockées dans les fichiers.Une certaine structure est choisie. Mais la technique peut être appliquée à toute autre structure du moment qu’elle ne change pas aléatoirement.

Le menu qui apparaîtrait est :  Style de musique Groupe Titre d’album Quitter Tant que le choix Quitter n’est pas choisi, le programme bouclera et chaque résultat d’interrogation 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.

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 à l’intérieur d’un élément virtuel qui permet de distinguer le type de support et le prix qui lui associé

ALBUM : I’M STILL LOVING YOU SUPPORT : CD=546; VINYL=400; K7=71 * STYLE : HARD GROUP : SCORPIONS ALBUM : I’M 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 Le programme utilise la plupart des pouvoirs de awk : Expressions régulières Fonctions prédéfinies Fonctions crées par l’utilisateur La majorité des entrées/sorties en awk Des fonctions UNIX

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

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

Environnements graphiques Unix: pas d'environnement graphique dans l'OS même. Avantages Liberté de choix de l’interface 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

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 l’affichage à travers un réseau (variable DISPLAY et autres authorisations)

Le Système X-Window: Bureau KDE2

Le Système X-Window: Bureau Gnome

Le Système X-Window: WindowMaker

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