1 / 113

Avertissement

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.

inigo
Download Presentation

Avertissement

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 d’exploitation 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 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,…)

  5. 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

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

  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 • 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

  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 \. ExempleTOTO='bonjour ’ echo '$TOTO et ' "$TOTO" $TOTO et bonjour

  10. 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

  11. 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

  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 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.

  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 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.

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

  15. 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 1etud1 51 Oct 1 12:00 planing drwxr-xr-x2etud1512Oct 1 12:00src Propriétaire du fichier 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

  16. 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.

  17. 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

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

  19. 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 :

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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)

  25. 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

  26. 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

  27. La commande dirname • Extrait le chemin du fichier • Exemple : • dirname /etc/passwd  /etc

  28. 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

  29. 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

  30. 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

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

  32. 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)

  33. 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 {}\;

  34. 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

  35. Exemples commande grep • $ grep ‘^u’ /etc/passwd • $ grep –v « ; » *.c • $ grep ksh$ /etc/passwd

  36. 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

  37. 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

  38. 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

  39. Exemples commande sort • $ sort /etc/passwd • $ sort –r toto • $ sort +0 –1 +3 –4 toto

  40. 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

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

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

  43. 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

  44. Commandes et flux • Tubes nommés • Redidections • Arguments de commandes et entrées de commandes

  45. 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.

  46. 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

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

  48. $ 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

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

More Related