Historique 1970 Développement dans un laboratoire de recherche Bell (Kernighan, Ritchie, Thompson) parallèlement au langage C Diffusion gratuite aux universités avec les sources, intégration de UUCP Maturité d’Unix (AT & T System V, BSD, Xenix, SunOS, SGI, Cray, HP ..) Début de la normalisation : IEE, POSIX, OSF … intégration de TCP/IP et de X windows du MIT Linux 1976 1980 1990 TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Caractéristiques générales Multi tâches (temps partagé) Multi utilisateurs Organisation arborescente des fichiers Création dynamique de processus (fork) Communication entre processus (pipe) Langage de commandes (shell) Accès généralisé aux périphériques TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Description du système Unix Shell Outils Matériel Interface Graphique Noyau SGBD … TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Le Shell Les différentes familles de Shell : Bourne Shell (sh), C Shell (csh), Korn Shell (ksh) … Les caractéristiques communes : Définition de variables Redirection des entrées et des sorties Communication par des « pipe» Lancement de programmes en arrière plan Programmation (shell scripts) TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Connexion au système Connexion à la machine : Déconnexion login : nicolas password : ????? Déconnexion exit Changement de mot de passe passwd Eviter les mots simples et les prénoms. Faire un mélange Majuscules, minuscules, chiffres & caractères spéciaux (e.g. LaKc2cD!) Les utilisateurs sont rassemblés en groupes TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Syntaxe générale Commande option paramètres ls -l /etc Commande d’aide man Commande option paramètres ls -l /etc Enchaînement des commandes ; Traitement en arrière plan & Redirections < > Connexion de deux processus | TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Commandes de repertoires Notion de chemin relatif et absolu Positionnement et déplacement dans l’arborescence pwd (print working directory) cd (change directory) Création et destruction de répertoires mkdir (make directory) rmdir (remove directory) Contenu d’un répertoire ls (liste) / dev var etc home moi doc TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Commandes de fichiers compress uncompress Contenu d’un fichier cat, more Renommer un fichier mv Copie d’un fichier cp Détruire un fichier rm Lien sur un fichier ln Compression & décompression d’un fichier compress uncompress gzip gunzip bzip2 bunzip2 Type d’un fichier file Fin du contenu d’un fichier tail TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Droits sur les fichiers & répertoires Les droits sont de trois types : lecture ( r ) écriture ( w ) exécution ( x ) Ils sont appliqués à trois catégories d’utilisateurs Propriétaire du fichier Groupe les Autres rwx rwx rwx Modification des droits d’un fichier/répertoire chmod Modification du propriétaire d’un fichier /répertoire chown Modification du groupe d’un fichier /répertoire chgrp TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Autres commandes Heure et date date Calendrier cal Qui est connecté who Traitement du contenu d’un fichier Tri d’un fichier sort Recherche dans un fichier grep Comptage du contenu d’un fichier wc Recherche d’un fichier find TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Editeur de textes vi Très puissant et toujours disponible quelque soit le terminal, mais totalement déroutant vi fonctionne en deux modes ESC commandes édition Quelques commandes de base (attention aux majuscules/minuscules) Annulation u Insertion i Remplacement d’ un caractère r Effacement d’ un caractère x Effacement d’ une ligne dd Enregistrer :w Quitter :q Quitter & enregistrer :wq Déplacement Gauche h Droite l Haut k Bas j TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Les scripts shell Un shell script est un fichier qui contient une suite de commandes shell reliées par des instructions de structuration C’est l’outil fondamental de Unix qui permet de lier l’exécution de « briques » de programmes Un shell script doit être un fichier exécutable (chmod +x) La première ligne contient #[chemin vers le shell] (e.g. #!/bin/sh) Le # en début de ligne indique un commentaire On peut lui passer des paramètres TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Les variables du shell Rôle particulier des quotes pour le shell Un nom de variable est une chaîne de caractères sans espaces en général en Majuscules : COUCOU TRUC ESSAI Affectation du contenu en sh COUCOU=Bonjour (Attention pas d’espace) Accès au contenu d’une variable $[nomde la variable] : echo $COUCOU Rôle particulier des quotes pour le shell ‘ ‘ Pas d’évaluation du contenu entre les quotes TRUC=‘$COUCOU’ « « Evaluation du contenu entre les quotes TRUC=« $COUCOU » ` ` Double évaluation du contenu entre les quotes $COUCOU=date;TRUC=`$DATE` Quelques variables standard Unix PATH chemins d’accès aux programmes HOME répertoire de connexion USER nom d’utilisateur MANPATH chemins d’accès aux manuels TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Les scripts shell Variables spécifiques des shell scripts Paramètres $# nombre de paramètres $* liste des paramètres $0 nom du script $1 $2 … $9 contenu des paramètres Autres $$ numéro du processus $? Valeur de retour du dernier processus #!/bin/sh echo « Je suis le programme $0 » echo « avec $# paramètres » TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Les scripts shell : structuration Test et branchement if condition then commande else fi On teste la valeur de retour d’une commande Unix, il en existe une particulière qui s’appelle « test » (vérification d’existence de fichier, comparaison …). Elle peut également s’écrire [ ] #!/bin/sh if test -f monfichier.txt then echo « le fichier existe » fi #!/bin/sh if [ -f monfichier.txt ] then echo « le fichier existe » fi TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Les scripts shell : structuration Tests et branchements multiples case variable in pattern1) commande ;; pattern2) commande ;; esac #!/bin/sh case $1 in 1) echo « un »;; 2) echo « deux »;; 3) echo « trois »;; esac TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Les scripts shell : structuration Boucles for variable in liste do commande done #!/bin/sh for $i in 1 2 3 echo $i done while condition do commande done #!/bin/sh i=0 while [ $i -ne "1" ] do read i done TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Les scripts shell Calculs Tout comme pour les tests, on utilise une fonction spécifique d’évaluation : expr (attention à l’utiliser avec les `` ) Opérateurs d’expression numériques + addition - soustraction \* multiplication / division #!/bin/sh i=0 while [ $i -ne 100 ] do i=`expr $i + 1` echo $i done TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Commandes réseau Connexion à distance telnet machine [port] Transfert de fichiers ftp machine Commandes sécurisées ssh machine Test de la présence d’une machine sur le réseau ping machine TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002
Références URL Publications http://www.bell-labs.com/history/unix/ http://www.ling.helsinki.fi/users/reriksso/unix/shell.html http://www.shelldorado.com/ http://linuxcommand.org/writing_shell_scripts.html http://www.linuxfocus.org/Francais/September2001/article216.shtml … D. Ritchie B. Kenighan Publications J.M. Rifflet La programmation sous Unix (Mc Graw Hill) … TRANSFER Bujumbura – préformation Unix Nicolas Larrousse Février 2002 K.Thompson