Top Banner
78

Unix et programmation du shell Table des mati res

Feb 18, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Unix et programmation du shell Table des mati res

Universit� de Nice Sophia�Antipolis

Unixet

programmation du shell

Version ���

Richard Grin

�� juillet ����

ii TABLE DES MATI�RE

Table des mati�res

Pr�sentation du polycopi� i

I Connaissances de base

� G�n�ralit�s sur Unix

��� Syst�mes d�exploitation � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Historique � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Standards et versions d�Unix � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Propri�t�s d�Unix � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�� Structure d�Unix � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Noyau � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Shell � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�� Organisation des syst�mes de �chiers � � � � � � � � � � � � � � � � � � � � �

���� Syst�me de �chiers � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Types de �chiers � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� Acteurs�objets du monde Unix

��� Utilisateurs � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Un utilisateur dans le syst�me � � � � � � � � � � � � � � � � � � � � �

����� Super�utilisateurs � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Administrateur du syst�me � � � � � � � � � � � � � � � � � � � � � � � �

��� Processus � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Signaux envoy�s aux processus � � � � � � � � � � � � � � � � � � � � � �

����� Terminal de contr�le d�un processus� ex�cution en arri�re�plan � � � �

����� Propri�taires et groupes e�ectifs et r�els d�un processus � � � � � � � �

����� Cr�ation d�un nouveau processus� arbre des processus � � � � � � � � �

��� Fichiers � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� i�node � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Structure interne des r�pertoires � � � � � � � � � � � � � � � � � � � � �

����� Propri�taire et groupe d�un �chier � � � � � � � � � � � � � � � � � � � �

����� Mode d�acc�s au �chier � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Protection des �chiers � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

Page 2: Unix et programmation du shell Table des mati res

TABLE DES MATI�RES iii

����� Droits associ�s aux autorisations � � � � � � � � � � � � � � � � � � � �

����� Autorisations �set user id� et �set group id� � � � � � � � � � � � � � � �

����� M�canisme de protection des �chiers � � � � � � � � � � � � � � � � � ��

� Premiers pas dans le syst�me ��

��� Entr�e dans le syst�me � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Changer son mot de passe �passwd� � � � � � � � � � � � � � � � � � � ��

����� D�marrage d�une session � � � � � � � � � � � � � � � � � � � � � � � � �

��� Sortie du syst�me � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Touches sp�ciales � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Format des commandes Unix � � � � � � � � � � � � � � � � � � � � � � � � � � ��

�� Consultation du manuel en ligne �man� � � � � � � � � � � � � � � � � � � � � ��

�� Nom d�un �chier� nom absolu� nom relatif � � � � � � � � � � � � � � � � � � ��

��� Commandes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Lancer une commande� supprimer un processus � � � � � � � � � � � ��

����� Nom d�une commande� variable PATH � � � � � � � � � � � � � � � � ��

����� Nom complet et type d�une commande �whence� whereis� � � � � � � ��

����� Compl�tion des commandes par zsh � � � � � � � � � � � � � � � � � � ��

II Commandes ��

Commandes li�es l�arborescence des �chiers �

��� Visualisation de l�arborescence �ls� � � � � � � � � � � � � � � � � � � � � � � ��

��� Information d�taill�e sur les �chiers �ls �l� � � � � � � � � � � � � � � � � � � ��

����� Format d�a�chage � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Types de �chiers � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Mode d�acc�s au �chier � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Nombre de liens � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Se d�placer dans l�arborescence �cd� � � � � � � � � � � � � � � � � � � � � � � ��

��� A�cher le r�pertoire courant �pwd� � � � � � � � � � � � � � � � � � � � � � � ��

�� Caract�res sp�ciaux pour le shell � � � � � � � � � � � � � � � � � � � � � � � ��

���� G�n�ration des noms de �chiers ����� �� � � � � � � � � � � � � � � � � ��

���� Le caract�re sp�cial � � � � � � � � � � � � � � � � � � � � � � � � � � ��

���� Le caract�re sp�cial � � � � � � � � � � � � � � � � � � � � � � � � � � ��

���� Autres caract�res sp�ciaux � � � � � � � � � � � � � � � � � � � � � � � ��

�� A�cher le type d�un �chier ��le� � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Rechercher des �chiers dans l�arborescence ��nd� locate� � � � � � � � � � � ��

� Protection des �chiers ��

�� Changement des autorisations �chmod� � � � � � � � � � � � � � � � � � � � � �

�� Masque pour les autorisations �umask� � � � � � � � � � � � � � � � � � � � � �

iv TABLE DES MATI�RE

� Commandes d�observation du syst�me �

�� Date et Heure �date� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�� Nom de l�ordinateur �hostname� � � � � � � � � � � � � � � � � � � � � � � � � �

�� Nom du syst�me d�exploitation �uname� � � � � � � � � � � � � � � � � � � � �

�� Information sur les utilisateurs �who� �nger� � � � � � � � � � � � � � � � � � �

� Derni�res connexions au syst�me �last� � � � � � � � � � � � � � � � � � � � � �

� Syst�me �Network Information Service� �NIS� � � � � � � � � � � � � � � � � �

�� Espace disque occup� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Place occup�e par la branche d�un r�pertoire �du� � � � � � � � � � � �

���� Place libre d�un syst�me de �chiers �df� � � � � � � � � � � � � � � � � �

�� Nom du terminal utilis� �tty� � � � � � � � � � � � � � � � � � � � � � � � � � �

Commandes pour la gestion des processus

��� Processus en cours d�ex�cution �ps� � � � � � � � � � � � � � � � � � � � � � � �

��� Supprimer un processus en cours d�ex�cution �kill� � � � � � � � � � � � � � � �

��� Lancement automatique de processus � des moments donn�s �at� crontab� � �

��� Gestion du plan d�un processus par le shell � � � � � � � � � � � � � � � � � � �

� A�cher� imprimer� envoyer le contenu d�un �chier

��� A�cher le contenu d�un �chier� concat�ner plusieurs �chiers �cat� � Notion

de redirection � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� A�cher les octets d�un �chier �od� � � � � � � � � � � � � � � � � � � � � � � �

��� A�cher page � page �more� � Notion de pipe � � � � � � � � � � � � � � � � � �

��� Sorties sur les imprimantes � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Informations sur le syst�me d�impression �lpstat� printcap� � � � � � �

����� Lancement d�une requ�te d�impression �lpr� � � � � � � � � � � � � � �

����� Informations sur les requ�tes d�impression �lpq� � � � � � � � � � � � �

����� Suppressions de requ�tes d�impression �lprm� cancel� � � � � � � � � �

�� Envoyer le contenu d�un �chier �mail� � � � � � � � � � � � � � � � � � � � � � �

�� Mise en page �pr� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Passer en Postscript �a�ps� � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� Gestion des �chiers �

�� Copier des �chiers �cp� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�� Liens avec m�me num�ro de i�node �ln� � � � � � � � � � � � � � � � � � � � �

�� Liens symboliques �ln �s� � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�� Supprimer des �chiers �rm� � � � � � � � � � � � � � � � � � � � � � � � � � �

� D�placer� renommer des �chiers �mv� � � � � � � � � � � � � � � � � � � � � �

� Sauvegarder sur les lecteurs de disquettes des stations Sun � � � � � � � � �

�� Compression et d�compression �zip� gzip� compress� � � � � � � � � � � � � �

Page 3: Unix et programmation du shell Table des mati res

TABLE DES MATI�RES v

�� Travail sur les r�pertoires ��

���� Cr�er un r�pertoire �mkdir� � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Supprimer un r�pertoire �rmdir� rm �r�� � � � � � � � � � � � � � � � � � � � �

���� Changer le nom d�un r�pertoire �mv� � � � � � � � � � � � � � � � � � � � � �

���� Copier l�arborescence d�un r�pertoire �cp �r� � � � � � � � � � � � � � � � � �

��� Lien symbolique �ln �s� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Pliage de r�pertoires en une seul �chier �tar� cpio� � � � � � � � � � � � � � � �

�� Expressions r�guli�res ��

���� Expressions r�guli�res repr�sentant un seul caract�re � � � � � � � � � � � � �

���� Expressions r�guli�res repr�sentant un ensemble de caract�res d�un seul type

���� Autres expressions r�guli�res � � � � � � � � � � � � � � � � � � � � � � � � � � �

�� �diteur de texte �emacs� xemacs� ��

���� Entr�e et sortie � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Lancer emacs � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Sortir de emacs � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Concepts de base � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Description d�une fen�tre emacs � � � � � � � � � � � � � � � � � � � � �

������ Commandes et associations de cl�s � � � � � � � � � � � � � � � � � � �

������ Bu�ers et fen�tres � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Point d�insertion� marque� r�gions � � � � � � � � � � � � � � � � � � � �

����� Mode de travail � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Commandes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Commandes de base � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Autres commandes � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

���� Personnalisation de emacs � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Compl�ments pour les versions graphiques � � � � � � � � � � � � � � � � � � ��

�� Manipulation des donn�es des �chiers �

���� Tri �sort� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

���� Recherche d�une cha ne de caract�res �grep� � � � � � � � � � � � � � � � � � ��

���� Compter les caract�res� les mots� les lignes �wc� � � � � � � � � � � � � � � � ��

���� Conversion� suppression de caract�res �tr� � � � � � � � � � � � � � � � � � � �

��� Fractionnement vertical �cut� � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Comparaison du contenu de � �chiers � � � � � � � � � � � � � � � � � � � � � ��

����� Di��rences entre deux �chiers texte �di�� � � � � � � � � � � � � � � � ��

����� !galit� du contenu de � �chiers �cmp� � � � � � � � � � � � � � � � � ��

���� Traiter les lignes cons�cutives identiques �uniq� � � � � � � � � � � � � � � � �

���� Extraire le d�but ou la �n d�un �chier � � � � � � � � � � � � � � � � � � � � � �

������ D�but d�un �chier �head� � � � � � � � � � � � � � � � � � � � � � � � � �

������ Fin d�un �chier �tail� � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� Un �diteur non interactif �sed� � � � � � � � � � � � � � � � � � � � � � � � � � ��

vi TABLE DES MATI�RE

��� �� Description g�n�rale de l��diteur � � � � � � � � � � � � � � � � � � � � �

��� �� Structure d�une ligne de programme � � � � � � � � � � � � � � � � � � �

��� �� Format pour indiquer les lignes � traiter � � � � � � � � � � � � � � � �

��� �� Ex�cution du programme � � � � � � � � � � � � � � � � � � � � � � � � �

��� � Commandes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�����Un langage d��dition de �chiers �awk� � � � � � � � � � � � � � � � � � � � � � �

�������Description g�n�rale de la commande � � � � � � � � � � � � � � � � � �

�������Champs � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�������Structure d�un programme � � � � � � � � � � � � � � � � � � � � � � � �

�������Cas particuliers pour une ligne de programme � � � � � � � � � � � � �

������S�lecteurs � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������Actions � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�������Fonctions� op�rateurs � � � � � � � � � � � � � � � � � � � � � � � � � � �

�����Exemples de programmes � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�����Tableaux � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�����D�autres commandes de manipulation de �chiers � � � � � � � � � � � � � � � �

III M�canismes d�interpr�tation du shell �

� Interpr�tation du shell� M�canismes de base �

���� G�n�ralit�s sur le shell � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ D��nition � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Compatibilit� des di��rents shells � � � � � � � � � � � � � � � � � � �

������ Commandes et processus� commandes internes au shell � � � � � � �

������ Prompts � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� Environnement d�une commande ou d�un shellscript � � � � � � � � �

����� Code retour d�une commande � � � � � � � � � � � � � � � � � � � � �

���� Redirections � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ Redirections de la sortie standard � � � � � � � � � � � � � � � � � � �

������ Redirection du �chier d�erreur ���� � � � � � � � � � � � � � � � � � �

������ Envoi d�un message d�erreur ��"�� � � � � � � � � � � � � � � � � � �

������ Redirection de l�entr�e standard ��� � � � � � � � � � � � � � � � � �

����� Pseudo��chier #dev#null � � � � � � � � � � � � � � � � � � � � � � � �

���� Pipe �j� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Regroupement des commandes � � � � � � � � � � � � � � � � � � � � � � � � �

������ Regroupement entre parenth�ses � � � � � � � � � � � � � � � � � � � �

������ Regroupement entre accolades � � � � � � � � � � � � � � � � � � � � �

��� Processus en arri�re�plan �"� � � � � � � � � � � � � � � � � � � � � � � � � �

����� Gestion des �jobs� par ksh ou zsh � � � � � � � � � � � � � � � � � � �

��� Alias � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� Substitution de commande � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� M�canismes d�interpr�tation � � � � � � � � � � � � � � � � � � � � � � � � � �

Page 4: Unix et programmation du shell Table des mati res

TABLE DES MATI�RES vii

��� Inhiber l�interpr�tation du shell � � � � � � � � � � � � � � � � � � � � � � � �

�����Recherche d�une commande par le shell � � � � � � � � � � � � � � � � � � � � ���

�����Lancement de l�ex�cution d�un shellscript � � � � � � � � � � � � � � � � � � � ���

�������Lancement par le nom du shellscript � � � � � � � � � � � � � � � � � ���

�������Lancement par l�appel de la commande interne ��� � � � � � � � � � � ���

�������Lancement par l�appel explicite d�un shell � � � � � � � � � � � � � � ���

�����Lancement explicite d�un shell � � � � � � � � � � � � � � � � � � � � � � � � � ���

�� Variables� environnement ��

��� Param�tres� variables de position � � � � � � � � � � � � � � � � � � � � � � � ���

����� Param�tres des shellscripts � � � � � � � � � � � � � � � � � � � � � � � ���

����� Donner des valeurs aux param�tres de position �set� � � � � � � � � � ���

��� Variables � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Identi�cateur � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� A�ectation � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� D�signation de la valeur de la variable �$� � � � � � � � � � � � � � � ��

����� D�composition en mots des valeurs des variables de zsh � � � � � � � ��

���� Supprimer une variable �unset� � � � � � � � � � � � � � � � � � � � � ��

���� Variables sp�ciales du shell � � � � � � � � � � � � � � � � � � � � � � � ��

����� A�cher la valeur d�une variable �echo� � � � � � � � � � � � � � � � � ���

����� Entr�e de la valeur d�une variable au clavier �read� � � � � � � � � � ���

���� Port�e d�une variable �export�� environnement de travail � � � � � � ��

������Visualisation des variables disponibles �set� printenv� � � � � � � � � ���

��� Personnalisation de l�environnement � � � � � � � � � � � � � � � � � � � � � � ���

����� Options des shells �set� setopt� � � � � � � � � � � � � � � � � � � � � � ���

����� Fichiers de personnalisation � � � � � � � � � � � � � � � � � � � � � � ���

��� Strat�gie pour la personnalisation de l�environnement � � � � � � � � � � � � ���

�� Compl�ments sur le shell ���

��� Listes de commandes � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���

��� Ordre de priorit� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���

��� Fonctions � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���

��� Compl�ments sur les redirections � � � � � � � � � � � � � � � � � � � � � � � ��

����� Redirection de l�entr�e standard sur �chier inclus ���� � � � � � � � ��

����� Redirection pour tout un shell �exec� � � � � � � � � � � � � � � � � � ��

����� Descripteurs de �chier sup�rieurs � � � � � � � � � � � � � � � � � � � ��

����� Redirection vers un �chier d�sign� par son descripteur � � � � � � � � ���

���� Ordre d��valuation des redirections � � � � � � � � � � � � � � � � � � ���

���� Redirection sans commande avec zsh � � � � � � � � � � � � � � � � � ���

�� Compl�ments sur les variables � � � � � � � � � � � � � � � � � � � � � � � � � ���

���� Valeurs par d�faut pour les variables � � � � � � � � � � � � � � � � � ���

���� Modi�er l�environnement d�une commande � � � � � � � � � � � � � � ��

���� Facilit�s de ksh et zsh pour le traitement des valeurs de variables � ��

viii TABLE DES MATI�RE

���� Modi�cation interactive de la valeur d�une variable sous zsh �vared� ��

��� Tableaux sous ksh et zsh � � � � � � � � � � � � � � � � � � � � � � � � ��

IV Programmation ��

� Programmation des shellscripts ��

���� Tests divers �test� � ��� %� �� ��� %%� � � � � � � � � � � � � � � � � � � � � � � � � ��

���� D�caler les param�tres de position �shift� � � � � � � � � � � � � � � � � � � � ��

���� Sortie d�un shellscript �exit� � � � � � � � � � � � � � � � � � � � � � � � � � � ��

���� Les structures de contr�le � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

������ if �� then �� else �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

������ case ��� esac � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

������ for ��� do ��� done � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

������ while ��� do ��� done � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� until ��� do ��� done � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� Instructions li�es aux boucles �continue� break� � � � � � � � � � � � ��

������ Probl�mes avec les boucles redirig�es et les pipes � � � � � � � � � � � ��

��� Interception des signaux � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Commandes internes diverses � � � � � � � � � � � � � � � � � � � � � � � � � ��

���� R�cursivit� dans l�ex�cution des shellscripts � � � � � � � � � � � � � � � � � ��

���� Calculs� traitement des cha nes de caract�res � � � � � � � � � � � � � � � � � ��

������ Commande expr � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

������ Commande let � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� Traitement des cha nes de caract�res � � � � � � � � � � � � � � � � � � � � � ��

�����Aide pour traiter les options �getopts� � � � � � � � � � � � � � � � � � � � � ��

�����Mise au point des shellscripts �set �xv� � � � � � � � � � � � � � � � � � � � � ��

Page 5: Unix et programmation du shell Table des mati res

ix

Pr�sentation du polycopi�

Ce polycopi� est un support du cours donn� dans di��rentes �li�res de l�Universit� de

Nice�Sophia Antipolis�

Le cours est une introduction au syst�me d�exploitation Unix� Le but est de pr�senter�

� travers des cas concrets d�utilisation sous le syst�me Unix� les concepts essentiels des

syst�mes d�exploitation utiles � un utilisateur averti�

La programmation des shellscripts qui fait si souvent gagner un temps pr�cieux dans

l�ex�cution des t&ches r�p�titives ou complexes est pr�sent�e � la �n de ce cours et en

pr�sente en fait l�aboutissement�

Les chapitres de ce support de cours ne suivent pas n�cessairement l�ordre de leur

pr�sentation dans orale le cours� Ce polycopi� est plut�t un manuel de r�f�rence qui aidera

l�utilisateur � se remettre rapidement en m�moire les principales commandes et concepts

d�Unix� L�exhaustivit� �impossible de toute fa'on� n�a pas �t� recherch�e� Une lecture du

manuel en ligne �commande man� est indispensable pour conna tre toutes les commandes

et options de la derni�re version install�e� Mais cette aide en ligne est �crite en anglais

et les informations essentielles sont souvent noy�es dans les tr�s nombreuses options et

commandes� et les exemples sont trop souvent absents�

Ce cours n�aborde ni l�administration d�un syst�me Unix ni la programmation syst�me�

m�me s�il donne quelques rudiments d�information concernant ces deux th�mes�

Il ne suppose aucune connaissance en informatique si ce n�est quelques notions �l�men�

taires sur l�architecture des ordinateurs et sur la programmation�

Un autre polycopi� rassemble les notions et commandes li�es � l�utilisation des r�seaux

informatiques� Ces deux cours devront �tre compl�t�s par quelques connaissances de base

de l�interface graphique X Window� en particulier les notions de gestionnaire de fen�tres

et de ressources�

Le lecteur interess� par l�impl�mentation des di��rents Unix pourra consulter le livre

�Unix Internals� �crit par Uresh Vahalia� �ditions Prentice Hall �disponible � la biblioth�que

de l�universit� de Nice��

Les remarques et les corrections d�erreurs peuvent �tre envoy�es par courrier �lectro�

nique � l�adresse grin�unice�fr� en pr�cisant le sujet �Poly Unix et programmation du

shell� et la date de la version du polycopi��

Premi�re partie

Connaissances de base

Page 6: Unix et programmation du shell Table des mati res

Chapitre �

G�n�ralit�s sur Unix

��� Syst�mes d�exploitation

Unix est un syst�me d�exploitation�

Un syst�me d�exploitation est un logiciel qui fournit un environnement d�ex�cutio

pour les programmes qui vont s�ex�cuter sur l�ordinateur� Il doit g�rer en particulier le

ressources que vont se partager les programmes� Il a� entre autres� la charge des fonction

suivantes� essentielles pour la bonne marche d�un ordinateur (

) gestion du processeur

) gestion de la m�moire centrale

) gestion du syst�me de �chiers

) gestion des p�riph�riques

Un ordinateur ne peut fonctionner sans syst�me d�exploitation� Un ordinateur donn

peut fonctionner avec plusieurs syst�mes d�exploitation * par exemple� certains PC pe

mettent � l�utilisateur de travailler sous Unix ou sous Windows ou NT�

��� Historique

���� Ken Thompson �crit Unix en assembleur dans les laboratoires de Bell �AT"T��

�� � Dennis Ritchie et Ken Thompson r��crivent Unix en langage C �seulement �� + e

assembleur��

�� Unix est distribu� aux universit�s am�ricaines�

�� � Premi�re version d�Unix commercialis�e �licence pour le code source * version ��

�� Unix BSD �Berkeley Software Development� ��� de l�universit� de Berkeley au

!tats)Unis�

Page 7: Unix et programmation du shell Table des mati res

� CHAPITRE �� G�N�RALIT�S SUR UNIX

�� � Unix Version �� Commercialisation d�une licence binaire �moins on�reuse que la

licence pour le code source��

��� Unix Syst�me V

���� Unix OSF#�

��� Standards et versions d�Unix

Unix est un syst�me ouvert ( il n�est pas li� � un constructeur d�ordinateur ou � une

soci�t� d��dition de logiciels * AT"T a largement di�us� le code source d�Unix dans les

universit�s � ses d�buts et de multiples Unix ont �t� d�velopp�s par des soci�t�s di��rentes�

Tous les grands constructeurs ont leur Unix� r��crit enti�rement par eux ��Unix�like�� ou

d�velopp� � partir d�une licence achet�e � AT"T ��Unix�based��� Tous ces Unix respectent

un minimum de normes et il n�est pas trop di�cile de porter une application d�un Unix

vers l�autre�

Les di��rentes versions d�Unix �taient issues de Syst�me V de AT"T ou de Unix BSD

de l�universit� de Berkeley� Au d�but des ann�es � �� Open Software Fondation �OSF� a

d�velopp� un nouvel Unix ( OSF#��

Le syst�me Solaris actuellement utilis� sur de nombreux ordinateurs de l�universit� de

Nice est issu de Unix Syst�me V�

La plupart des commandes que vous utiliserez en tant qu�utilisateur ordinaire ou d�ve�

loppeur d�applications sont les m�mes dans toutes les versions d�Unix� Les di��rences les

plus sensibles se trouvent au niveau de l�administration du syst�me�

La tendance actuelle est au rapprochement des di��rentes versions d�Unix� au moins au

niveau de l�utilisateur et du d�veloppeur� autour de normes d��nies par des groupements

d�utilisateurs� des constructeurs d�ordinateurs ou des �diteurs de logiciels� Ces normes

sp�ci�ent des interfaces ( elles d��nissent les signatures et s�mantiques �mais pas les im�

pl�mentations� des fonctions qui constituent ces interfaces� Les trois normes principales

sont SVID �System V Interface De�nition�� POSIX �Portable Operating System based on

unIX� de l�IEEE et CAE �Common Applications Environment� de X#Open�

��� Propri�t�s d�Unix

Unix est un syst�me d�exploitation

) d�usage g�n�ral�

) multi�utilisateurs� multi�t&ches�

) interactif�

) orient� temps partag��

���� STRUCTURE D�UNIX

NOYAU UNIX

MATERIEL

APPLICATIONSSHELLSCRIPTS

SHELL

Fig� ��� ) Structure d�Unix

) portable�

) dont les syst�me de �chiers sont hi�rarchis�s en arbre�

) qui o�re une compatibilit� totale des entr�es�sorties �pour Unix� les p�riph�rique

sont des �chiers * voir ������

) pour lequel il est tr�s facile d�ajouter de nouvelles commandes sans modi�er le noya

�gr&ce � la grande puissance des langages des shells��

�� Structure d�Unix

����� Noyau

Le noyau est la partie centrale d�Unix� Il se charge des t&ches essentielles pour la bonn

marche du syst�me ( gestion du syst�me des �chiers� gestion du processeur et de la m�moir

centrale� Les drivers de p�riph�riques sont int�gr�s au noyau� Ils g�rent les �changes �le

entr�es�sorties� entre l�unit� centrale et les p�riph�riques�

Le noyau met � la disposition des autres programmes des proc�dures appel�es primitive

Les autres programmes peuvent inclure dans leur code des appels syst�me qui lancen

l�ex�cution de ces primitives� Les primitives permettent de lancer de nouveaux processu

de lire ou d��crire sur des �chiers� d�obtenir plus de place en m�moire centrale� etc��� Ce

appels syst�me sont r�pertori�s dans la section � du manuel en ligne �voir ����

Ce fonctionnement par primitives permet en particulier de r�soudre les probl�mes d�ac

c�s concurrent aux informations du syst�me �sur un syst�me mono�processeur�� En e�e

les appels syst�me font entrer l�ex�cution en mode noyau� Dans ce mode le processus es

assur� de garder le processeur jusqu�au retour au mode utilisateur quand l�appel syst�m

est termin��

����� Shell

Le shell est l�interpr�teur de commandes� Quand un utilisateur tape des commande

Unix� ces commandes sont lues par le shell qui e�ectue �ventuellement des traitement

Page 8: Unix et programmation du shell Table des mati res

CHAPITRE �� G�N�RALIT�S SUR UNIX

avant de lancer l�ex�cution de la commande� Le shell est une couche logicielle bien s�par�e

du noyau� Il existe plusieurs shells dont les plus utilis�s sont (

) le Bourne shell sh� le shell standard d�Unix AT"T�

) le C�shell csh� le shell d�Unix BSD * sa syntaxe rappelle le langage C�

) le Korn�shell ksh est une extension du Bourne shell� Il poss�de toutes les commandes

du Bourne shell �et il se comporte presque exactement comme lui pour ces com�

mandes� et il comprend aussi d�autres commandes et fonctionnalit�s qui facilitent le

travail de l�utilisateur comme� par exemple� la gestion de l�historique des commandes

tap�es par l�utilisateur� qui existe aussi dans le C�shell� On le trouve maintenant dans

la plupart des distributions Unix�

) le Z shell zsh est une extension du Korn�shell� Il o�re en particulier la compl�tion et

la correction de commande ( l�utilisateur peut lui demander de compl�ter un nom de

commande et il propose des corrections � l�utilisateur lorsque la commande comporte

une erreur� par exemple lorsqu�une commande a �t� mal orthographi�e�

Certaines commandes � la disposition de l�utilisateur� sont programm�es dans le shell

et celui�ci peut donc les ex�cuter directement� Elles sont peu nombreuses * on trouve par

exemple les commandes cd ou pwd� On les appelle les commandes internes au shell� Les

autres commandes sont des commandes externes au shell� Pour les ex�cuter le shell lance

un programme qui correspond � un �chier ex�cutable situ� dans l�arborescence des �chiers�

Le shell poss�de un v�ritable langage avec des structures de programmation �alterna�

tives� r�p�titions����� et l�utilisateur peut �crire ses propres commandes dans ce langage �le

programme s�appelle un shellscript�� Une fois �crites� ces nouvelles commandes peuvent

�tre utilis�es exactement comme les commandes classiques d�Unix�

Le shell que nous utiliserons est zsh�

�� Organisation des syst�mes de �chiers

���� Systme de �chiers

Les �chiers d�Unix sont enregistr�s dans un ensemble structur� hi�rarchiquement en

arbre� appel� syst�me de �chiers� Un syst�me de �chiers est compos� d�une racine et de

noeuds qui sont des �chiers r�pertoires �ces �chiers contiennent des r�f�rences � d�autres

�chiers�� et de �chiers ordinaires qui contiennent des donn�es et des programmes�

En g�n�ral� plusieurs syst�mes de �chiers sont �mont�s� sur le syst�me �racine�� c�est

� dire celui qui contient le r�pertoire � �voir commande df en ������ Ces syst�mes sont

enregistr�s sur des disques physiques di��rents ou sur un m�me disque mais sur des parti�

tions di��rentes �un disque physique peut �tre divis� en plusieurs disques logiques appel�s

partitions�� Tous ces syst�mes de �chiers sont vus par l�utilisateur comme un seul syst�me�

���� ORGANISATION DES SYST�MES DE FICHIERS

Commandes

Commandes Commandes

Commandes

dev etc usr students

/

bin

classe2classe1

toto

bin ucb local lib

Fichiers spéciaux

(périphériques)

Commandes et fichiers

système

bin

Commandes de

l’étudiant toto

l’étudiant toto

Fichiers de

bin libemacs

tmp

bibi

Fig� ��� ) Arborescence des �chiers

Des utilitaires de r�seaux �comme NFS� permettent m�me de voir des syst�mes implant�

sur des machines di��rentes comme s�ils appartenaient � une m�me arborescence�

L�arborescence totale ressemble � l�arborescence de la �gure ����

���� Types de �chiers

Unix utilise les types de �chiers suivants (

�chiers ordinaires � ils contiennent les donn�es ou les programmes� Ils n�ont aucun

structure particuli�re ( ils sont consid�r�s comme une suite d�octets� Il n�y a pa

de notion d�enregistrement ni d�acc�s par index� Si on veut un s�quentiel index�� o

le programme �ou on l�ach�te dans le commerce� ,

Page 9: Unix et programmation du shell Table des mati res

� CHAPITRE �� G�N�RALIT�S SUR UNIX

On peut cependant distinguer trois grands types de �chiers ordinaires (

) les �chiers binaires ex�cutables� �crits dans le code du processeur de la machine�

qui ont une structure particuli�re reconnue par le noyau Unix�

) les �chiers de textes qui sont structur�s en lignes�

En Unix� le caract�re de �n de ligne est par convention le caract�re de code

ASCII �� �� linefeed � en anglais��

On remarquera que ce n�est pas le m�me caract�re que celui utilis� par les

syst�mes d�exploitation MS�DOS �sur PC� ou Mac�OS �sur Macintosh�� ce qui

oblige � e�ectuer un traitement minimum pour transf�rer des �chiers de textes

entre ces syst�mes�

) les autres �chiers qui n�ont pas de structure particuli�re pour Unix �mais peuvent

avoir une structure particuli�re adapt�e au logiciel qui les a cr��s��

r�pertoires � ils sont les noeuds de la structure arborescente des �chiers� Ils contiennent les

identi�cateurs �i�nodes� d�autres �chiers� Ils correspondent � des sous�biblioth�ques

ou dossiers qui contiennent d�autres �chiers�

�chiers sp�ciaux � ils sont li�s � un p�riph�rique �#dev#tty�� est par exemple li� � un

terminal� * ils correspondent � des programmes �pilotes * drivers en anglais� qui g�rent

les �changes avec les p�riph�riques ( disques� terminaux� imprimantes� streamers� lec�

teurs de bandes� etc�

liens symboliques � ils contiennent le nom d�un autre �chier et permettent des indirec�

tions�

sockets � ils sont utilis�s pour les liaisons inter�processus * ils ne seront pas �tudi�s ici�

Unix Syst�me V utilise aussi les �pipes nomm�s� qui sont utilis�s pour la communication

entre les processus� Ils ne seront pas �tudi�s ici�

Chapitre �

Acteurs�objets du monde Unix

Ce chapitre expose quelques notions et concepts de base sur le fonctionnement d�Unix

Les commandes associ�es � ces notions seront �tudi�es dans les chapitres suivants�

Les acteurs#objets principaux que l�on rencontre en Unix sont les utilisateurs� les pro

cessus et les �chiers�

��� Utilisateurs

����� Un utilisateur dans le systme

Nom� mot de passe� uid

Un utilisateur est rep�r� par son nom qu�il doit taper au moment de l�entr�e dans

syst�me�

Chaque nom correspond � un num�ro d�utilisateur �un nombre entier� ( le uid �use

identi�er�� Plusieurs utilisateurs peuvent avoir un m�me uid mais cette possibilit� n�es

utilis�e que pour quelques pseudo�utilisateurs du syst�me qui ont par exemple besoin de

autorisations du super�utilisateur �voir ������ pour accomplir une t&che bien d��nie�

Un utilisateur s�authenti�e lors de son entr�e dans le syst�me gr&ce � son mot de pass

Groupes d�un utilisateur

Un utilisateur appartient � un groupe d�utilisateurs dont le num�ro est enregistr� dan

la ligne r�serv�e � cet utilisateur dans le �chier �etc�passwd �ou dans les �chiers syst�m

qui jouent un r�le �quivalents * voir ci�dessous page �� la section sur les �chiers syst�me�

La notion de groupe permet � plusieurs utilisateurs de partager certains droits pou

l�utilisation des �chiers appartenant au groupe �voir ��� et �������

La plupart des Unix modernes permettent � un utilisateur d�appartenir � plusieur

groupes en plus de son groupe principal �celui qui est enregistr� dans le �chier des mot

de passe��

Page 10: Unix et programmation du shell Table des mati res

�� CHAPITRE �� ACTEURSOBJETS DU MONDE UNIX

Les groupes ne sont pas g�r�s de la m�me fa'on par les di��rents types d�Unix� Nous

n��tudierons pas cette notion en d�tails dans ce cours�

R�pertoire HOME

Un utilisateur poss�de un r�pertoire �HOME� dans lequel il est positionn� lorsqu�il entre

dans le syst�me� Ce r�pertoire est choisi par l�administrateur en fonction de l�utilisateur�

En g�n�ral� le nom terminal de ce r�pertoire est le nom de l�utilisateur et il est plac� dans

un r�pertoire r�serv� � sa fonction dans l�institution� Par exemple� l��tudiant �jean� en

deuxi�me ann�e d�informatique aura le r�pertoire HOME ��students�info��jean��

Programme de d�marrage

L�administrateur attribue � chaque utilisateur un programme de d�marrage qui sera

ex�cut� quand l�utilisateur entrera dans le syst�me� Pour vous� c�est le shell zsh�

Attributs d�un utilisateur

En r�sum�� � chaque utilisateur est associ� (

) un nom�

) un mot de passe�

) un uid�

) un ou plusieurs groupes�

) un r�pertoire �HOME��

) un programme de d�marrage�

Fichiers syst�me

Les informations sur un utilisateur sont enregistr�es dans le �chier �etc�passwd� Pour

des raisons de s�curit� ou de commodit� �pour g�rer un r�seau de machines�� l�administra�

teur peut ajouter des utilitaires de gestion du syst�me ��Yellow pages� ou NIS� �Kerberos��

etc��� Dans ce cas� le �chier �etc�passwd peut ne pas contenir toutes les informations

concernant les utilisateurs �par exemple� les mots de passe sont remplac�s par ���� ou

m�me aucune information sur certains utilisateurs �ces informations ne sont enregistr�es

que sur certaines machines du r�seau * voir en particulier ���

���� PROCESSUS �

����� Super�utilisateurs

Les utilisateurs de uid � sont appel�s des super�utilisateurs� Ces utilisateurs ont de

droits que les autres utilisateurs n�ont pas� Ils peuvent� par exemple� changer le mot d

passe des autres utilisateurs et changer les autorisations ou le propri�taire de n�import

quel �chier de l�arborescence�

���� Administrateur du systme

Un syst�me Unix doit �tre g�r� par un administrateur qui est responsable du bo

fonctionnement du syst�me� Voici quelques unes de ses t&ches (

) enregistrer les nouveaux utilisateurs et cr�er leur environnement de travail�

) installer les nouvelles versions des logiciels�

) rep�rer les probl�mes qui emp�chent le syst�me de fonctionner correctement�

) nettoyer p�riodiquement le disque des �chiers non utilis�s�

) e�ectuer r�guli�rement des sauvegardes des donn�es et des programmes�

Pour beaucoup des t&ches qu�il doit accomplir� l�administreur doit entrer dans le syst�m

comme super�utilisateur�

��� Processus

L�unit� d�ex�cution est le processus� Toute action est ex�cut�e par un processus� Tous le

Unix modernes o�rent une unit� plus l�g�re appel�e �thread � qui permet � un processus d

faire ex�cuter une t&che par plusieurs �sous�t&ches� qui s�ex�cutent en parall�le et partagen

le m�me espace m�moire� Nous ne les �tudierons pas dans ce cours�

Chaque processus est identi�� par le syst�me par un num�ro de processus �pid * proces

identi�er��

Une commande tap�e par l�utilisateur peut engendrer un ou plusieurs processus� o

n�engendrer aucun nouveau processus si la commande est interne au shell�

Unix est multi�t&che� Tous les processus en cours d�ex�cution se partagent le processeur

de la machine� Chaque processus re'oit l�usage du processeur pendant un laps de temp

assez court �environ un centi�me de seconde� pour que l�utilisateur ne s�aper'oivent pa

de la pr�sence des autres processus pendant les p�riodes d�interaction avec le programm

�entr�es�sorties avec le clavier ou avec la souris��

Un processus travaille dans son propre environnement �en particulier avec ses propre

variables�� A un moment donn�� son environnement est repr�sent� par une image qui es

une sorte de clich� �au sens photographique� du processus�

�� m�me si la machine est a plusieurs processeurs� ceux�ci sont habituellement bien moins nombreu

que les processus

Page 11: Unix et programmation du shell Table des mati res

�� CHAPITRE �� ACTEURSOBJETS DU MONDE UNIX

L�image d�un processus est compos�e de (

) son code

) les donn�es associ�es �trait�es par le code�

) les �chiers ouverts et leur �tat

) le r�pertoire courant

) les informations du syst�me sur le processus �propri�taire� terminal associ�� etc��

On remarquera en particulier qu�� un moment donn� de son ex�cution un processus a

un r�pertoire courant o- il est situ��

Tout le code du programme n�est pas n�cessairement en m�moire durant l�ex�cution�

Le code est d�coup� en pages par le syst�me et seules les pages n�cessaires sont charg�es en

m�moire centrale� Au cours de l�ex�cution du programme des pages peuvent �tre transpor�

t�es du disque vers la m�moire centrale si la page n�est plus n�cessaire et que le syst�me a

besoin de place en m�moire centrale� et faire le chemin inverse lorsque la page est n�cessaire

� l�ex�cution du programme� Ce syst�me de gestion de la m�moire s�appelle le �demand

paging�� La zone du disque r�serv�e � ces allers et retours s�appelle la zone de �swap��

����� Signaux envoy�s aux processus

Durant son ex�cution� un processus peut recevoir un signal� La plupart des signaux

interrompent l�ex�cution du processus mais celui�ci peut les intercepter� Il peut alors ef�

fectuer un traitement sp�cial et choisir ensuite de continuer � s�ex�cuter ou d�arr�ter son

ex�cution �voir ��� et �����

Les signaux peuvent �tre envoy�s par (

) un processus� avec la commande ou l�appel syst�me kill �voir �����

) le noyau� engendr�s par la frappe d�une touche du clavier par l�utilisateur pour in�

terrompre �ou stopper momentan�ment� tous les processus li�s au terminal �notion

�tudi�e en �������

) le noyau� engendr�s par des erreurs venant du mat�riel ou du logiciel�

Voici quelques num�ros� noms et descriptions de signaux utiles � conna tre �on les trouve

dans le �chier �usr�include�signal�h� (

���� PROCESSUS �

� HUP �hangup� envoy� � ses processus quand on sort de la session de travail ou

quand se d�connecte par un modem

� INT envoy� au processus en avant�plan dans le terminal dans lequel la touche

d�interruption a �t� tap�e �voir ��� et ������

� QUIT comme INT� mais cr�e souvent un �chier core

KILL signal qui ne peut �tre intercept� �voir commande trap en ���� et qui va

donc tuer � coup s.r le processus qui le re'oit

� TERM �terminate� envoy� par d�faut par la commande kill �voir ����� Pour

terminer un processus d�une mani�re �l�gante si possible

�� TSTP suspend un processus �touche Ctrl Z�

� CONT pour continuer apr�s une suspension

����� Terminal de contr�le d�un processus� ex�cution en arrire

plan

Les processus lanc�s par un utilisateur restent li�s au terminal d�o- ils ont �t� lanc�

appel� terminal de contr�le du processus� Le syst�me peut ainsi rep�rer les processus qu

recevront le signal engendr� par la frappe de la touche d�annulation ou les processus qu

seront arr�t�s si l�utilisateur �teint son terminal�

Un utilisateur peut lancer certains processus en arri�re�plan �voir ����� Ces processu

deviennent ind�pendants du terminal ( ils s�ex�cutent sans intervention de l�utilisateur e

sans que celui�ci ait � attendre la �n de leur ex�cution� Il peut ainsi lancer plusieurs t&che

en parall�le �mais sans r�elle synchronisation entre elles�� Ces processus ne seront pa

arr�t�s si l�utilisateur appuie sur la touche d�annulation mais ils peuvent toujours �tre tu�

par la commande kill �voir ����� Ils ne peuvent pas lire les caract�res tap�s sur le termina

mais ils peuvent toujours y �crire�

Des processus peuvent �tre lanc�s automatiquement par le syst�me� en arri�re�pla

�comme le syst�me de spool pour l�impression �tudi� en ����� Ces processus sont appe

l�s des daemons� acronyme de l�anglais �deferred auxiliary execution monitor� c�est���dir

programme de contr�le d�ex�cution di��r�e� On les appelle souvent �d�mons� en fran'ais

���� Propri�taires et groupes e�ectifs et r�els d�un processus

Chaque processus a un propri�taire e�ectif et un propri�taire r�el� Le propri�taire r�

est l�utilisateur qui a lanc� la commande qui a g�n�r� les processus� Le propri�taire e�ect

d�termine les droits du processus dans le syst�me et en particulier les actions autoris�e

sur les �chiers �voir �����

Le plus souvent le propri�taire e�ectif est le propri�taire r�el� Il existe une exceptio

importante li�e � la notion de �set user id� �tudi�e en ������

De m�me� chaque processus a un groupe r�el �le groupe de l�utilisateur qui a lanc� l

commande qui a g�n�r� les processus� et un groupe e�ectif �voir ������� Nous n��tudieron

pas ces notions en d�tails dans ce cours�

Page 12: Unix et programmation du shell Table des mati res

�� CHAPITRE �� ACTEURSOBJETS DU MONDE UNIX

����� Cr�ation d�un nouveau processus� arbre des processus

Chaque processus �sauf le processus de pid �� est cr�� par son processus parent� On a

ainsi un arbre g�n�alogique des processus cr��s dans une session� Les pid ainsi que les pid

des parents de tous les processus sont a�ch�s par la commande ps�

��� Fichiers

Les donn�es �que l�on veut conserver entre deux sessions� et les programmes sont enre�

gistr�s dans des �chiers�

On a vu en �� que Unix utilise aussi la notion de �chier pour organiser l�ensemble des

�chiers �r�pertoires� et pour travailler avec les p�riph�riques ��chiers sp�ciaux��

�� �� i�node

Outre le contenu du �chier� le syst�me conserve d�autres informations �par exemple le

propri�taire� sur chacun des �chiers de l�arborescence�

Ces informations lui seront utiles pour la gestion et la s�curit� du syst�me� Ces infor�

mations ne sont pas enregistr�es avec le contenu du �chier� elles sont enregistr�es dans la

table des i�nodes �une table pour chaque syst�me de �chiers� qui est conserv�e dans un

endroit sp�cial sur le disque� Chaque �chier a un num�ro de i�node �un nombre entier� qui

indique dans quelle entr�e de la table des i�nodes les informations syst�me le concernant

sont rang�es�

�� �� Structure interne des r�pertoires

La liaison entre les noms des �chiers et les informations enregistr�es dans le i�node du

�chier se fait gr&ce aux r�pertoires�

Les r�pertoires sont des �chiers de l�arborescence mais leur contenu di��re des �chiers

ordinaires� Un �chier r�pertoire contient le nom et le num�ro de i�node des �chiers plac�s

directement sous ce r�pertoire dans l�arborescence des �chiers�

Les informations concernant un �chier sont donc conserv�es dans trois endroits di���

rents () le nom du �chier est conserv� dans le r�pertoire contenant le �chier�

) les informations syst�me sont conserv�es dans le i�node du �chier�

) le contenu du �chier �les donn�es� est enregistr� dans les blocs du disque dont les

adresses sont dans le i�node�

��� PROTECTION DES FICHIERS �

�� � Propri�taire et groupe d�un �chier

Au moment de sa cr�ation� le propri�taire d�un �chier est l�utilisateur qui l�a cr��� Seu

un super�utilisateur �voir ������ peut changer le propri�taire d�un �chier�

Un �chier a aussi un groupe qui est le nom d�un groupe d�utilisateur� C�est le plu

souvent le groupe de l�utilisateur qui a cr�� le �chier� Cette notion de groupe facilite

partage de �chiers entre plusieurs utilisateurs� Nous n��tudierons pas cette notion en d�tai

dans ce cours�

�� �� Mode d�accs au �chier

A chaque �chier sont attach�es les autorisations pour le propri�taire du �chier� pou

les membres du groupe du �chier �mais sans le propri�taire�� pour les autres ��le rest

du monde�� ceux qui ne sont pas le propri�taire et qui n�appartiennent pas au groupe d

�chier�� Ces autorisations forment le mode d�acc�s au �chier� Elles sont a�ch�es par l

commande �ls �l� �voir �gure ��� et section ���� juste apr�s le type du �chier�

Les autorisations peuvent �tre �leur signi�cation exacte sera �tudi�e en ������ (

) l�autorisation de lecture ��r� pour la commande �ls �l��

) l�autorisation d��criture ��w� pour la commande �ls �l��

) l�autorisation d�ex�cution ��x� pour la commande �ls �l��

Il existe aussi des autorisations sp�ciales r�serv�es � certains �chiers ex�cutables �elle

accordent des droits sp�ciaux aux processus qui ex�cutent ces �chiers * elles sont �tudi�e

en d�tail en ������ (

) set user id * suid en abr�g� ��s� � la place du �x� dans les autorisations du propri�tair

pour la commande �ls �l��

) set group id * sgid en abr�g� ��s� � la place du �x� dans les autorisations du group

pour la commande �ls �l��

��� Protection des �chiers

La protection des �chiers en Unix est fond�e sur les droits des processus sur les �chier

�rappelons que le processus est l�unit� �l�mentaire d�ex�cution en Unix�� Un processus n�es

pas autoris� � faire n�importe quelle action sur les �chiers� Par exemple� il peut avoir

droit de lire le contenu d�un �chier mais pas de supprimer ce �chier� Nous allons examine

dans cette section comment sont d�termin�s les droits d�un processus sur un �chier�

Page 13: Unix et programmation du shell Table des mati res

� CHAPITRE �� ACTEURSOBJETS DU MONDE UNIX

����� Droits associ�s aux autorisations

Les autorisations qui constituent le mode d�acc�s au �chier ne d��nissent pas toujours

d�une fa'on �vidente les actions qu�un processus a le droit d�ex�cuter sur le �chier� Par

exemple� un processus peut avoir le droit de supprimer un �chier sans avoir l�autorisation

�w� sur ce �chier� On peut aussi s�interroger sur la signi�cation de l�autorisation �x� pour

un r�pertoire�

L�autorisation de lecture correspond au droit de lire le contenu du �chier� l�autorisation

d��criture correspond au droit d��crire dans le �chier� l�autorisation d�ex�cution correspond

au droit d�ex�cution du �chier si le �chier n�est pas un r�pertoire et au droit de travailler

dans son arborescence si le �chier est un r�pertoire�

Pratiquement� on a le tableau suivant (

Type de Fichier Fichier ordinaire R�pertoire

Autorisation

Lecture r lire le contenu du �chier lister les sous��chiers

Ecriture w modi�er le contenu du �chier ajouter� enlever des sous�

�chiers

Ex�cution x ex�cuter le �chier travailler dans le r�pertoire

Pour mieux comprendre le tableau ci�dessus il est bon de se rappeler la structure interne

d�un r�pertoire �voir ������� Ainsi� on comprend que� si on veut supprimer un �chier d�un

r�pertoire� il faut et il su�t d�avoir l�autorisation d��crire dans le r�pertoire �pour e�acer

l�entr�e correspondant au �chier dans le r�pertoire��

Donc� si l�on veut prot�ger un �chier sans interdire l�acc�s au r�pertoire dans lequel il

est situ�� il faut enlever l�autorisation d��criture dans le r�pertoire parent pour interdire

la suppression de ce �chier et enlever l�autorisation d��criture sur le �chier lui�m�me pour

interdire la modi�cation du �chier�

����� Autorisations �set user id� et �set group id�

Les droits d�un processus sur un �chier d�pendent du propri�taire et du groupe e�ectifs

d�un processus et pas du propri�taire et du groupe r�els�

Habituellement le propri�taire et le groupe e�ectifs sont le propri�taire et le groupe r�els

�l�utilisateur qui a lanc� le processus� et son groupe�� Cependant� si le code ex�cut� par

un processus est celui d�un �chier binaire qui a le bit �set user id� �resp� �group user id��

positionn�� le propri�taire e�ectif �resp� le groupe e�ectif� du processus est le propri�taire

�resp� le groupe� du �chier binaire�

Ce fait est par exemple utilis� par la commande passwd pour permettre � un simple

utilisateur de changer son mot de passe dans des �chiers qu�il n�est pas normalement

autoris� � modi�er ( seul le super�utilisateur �root� a le droit de modi�er le �chier des mots

de passe mais la commande passwd a l�autorisation set user id et appartient � root� Le

simple utilisateur a donc tous les droits de root le temps qu�il ex�cute la commande passwd

�qui ne lui permet de modi�er que son propre mot de passe�� Il r�cup�re ses droits de

simple utilisateur d�s la �n de l�ex�cution de la commande passwd�

��� PROTECTION DES FICHIERS �

���� M�canisme de protection des �chiers

On a vu en ����� les actions qu�un processus a le droit d�e�ectuer sur un �chier * elle

d�pendent des autorisations que ce processus a sur le �chier lui�m�me et sur les r�pertoire

parents de ce �chier� Voici les r�gles qui d�terminent les autorisations d�un processus su

un �chier (

) si le propri�taire e�ectif du processus et le propri�taire du �chier sont les m�mes� le

autorisations du processus sont les autorisations du �chier accord�es au propri�tair

) sinon� si le groupe du �chier est le groupe e�ectif du processus ou l�un des groupe

de l�utilisateur �chier� les autorisations du processus sont les autorisations du �chie

accord�es au groupe�

) sinon� les autorisations du processus seront celles accord�es aux �autres��

Page 14: Unix et programmation du shell Table des mati res

�� CHAPITRE �� PREMIERS PAS DANS LE SYST�ME

Chapitre �

Premiers pas dans le syst�me

Ce chapitre donne quelques informations utiles pour commencer � travailler dans un

syst�me Unix� Certaines notions �voqu�es sont d�velopp�es dans la suite du cours �par

exemple� les �chiers de con�guration du shell��

��� Entr�e dans le syst�me

Lorsqu�un terminal est allum�� certains processus sont automatiquement lanc�s par le

syst�me pour g�rer les entr�es et les sorties depuis ce terminal� En particulier� un processus

est lanc� pour attendre l�entr�e d�un nom d�utilisateur et d�un mot de passe�

Le nom d�utilisateur est attribu� par l�administrateur du syst�me�

���� Changer son mot de passe �passwd�

Par prudence� l�utilisateur doit changer le mot de passe que l�administrateur lui a

attribu� lorsqu�il entre pour la premi�re fois dans le syst�me�

passwd

permet d�entrer un nouveau mot de passe�

Remarque �

Sur les syst�mes dont les mots de passe sont g�r�s par le syst�me NIS �voir ���

les mots de passe �et plusieurs autres �chiers utilis�s par le syst�me� de plusieurs

machines sont centralis�s sur une seule machine� La commande pour changer le mot

de passe est alors yppasswd qui a la syntaxe (

yppasswd nom�login

L�utilisateur doit entrer l�ancien mot de passe avant de donner le nouveau� Pour �viter

des fautes de frappe �impossibles � voir puisque le mot de passe ne s�a�che pas � l��cran��

le nouveau mot de passe doit �tre entr� deux fois� Seul le propri�taire du mot de passe �ou

le super utilisateur� peut entrer un nouveau mot de passe� Le mot de passe doit comporter

au moins caract�res�

���� SORTIE DU SYST�ME �

Dans un mot de passe on peut utiliser tous les caract�res sauf � et /� Dans les compa

raisons pour tester si un mot de passe est valable� les majuscules et les minuscules ne son

pas �quivalentes�

Pour des raisons de s�curit�� l�administrateur peut imposer la modi�cation du mot d

passe � intervalles r�guliers�

���� D�marrage d�une session

Apr�s que l�utilisateur ait entr� son nom et son mot de passe� certaines actions son

automatiquement e�ectu�es par Unix (

� le shell de d�marrage est lanc� �le plus souvent zsh pour les �tudiants de l�universit

de Nice��

� le r�pertoire HOME devient le r�pertoire courant�

� des �chiers d�initialisation sont automatiquement lanc�s� Ils initialisent l�environne

ment de l�utilisateur� Ils donnent en particulier des valeurs initiales aux variable

TERM �nom du type de terminal� le plus souvent �xterm� si on travaille sous X

Window� et PATH �voir ������� Ces �chiers sont �tudi�s plus en d�tails en ����

Remarque ��

Si on travaille sous X Window� une variable importante est DISPLAY qui indiqu

aux clients X �programmes qui utilisent le syst�me graphique X Window� avec qu

terminal clavier��cran�souris ils doivent travailler�

��� Sortie du syst�me

La commande exit permet de sortir d�un shell� S�il s�agit du shell de connexion� l

session de travail se termine�

��� Touches sp�ciales

Quelques touches#caract�res ont des signi�cations sp�ciales �Ctrl C s�obtient au clavie

en maintenant appuy�e la touche �Ctrl% du clavier tout en appuyant sur la touche C� (

Ctrl S interrompt la transmission des caract�res entre le terminal et le programme e

cours

Ctrl Q r�tablit la transmission en �lib�rant� tous les caract�res tap�s depuis un pr�c�

dent Ctrl S

Ctrl D est transmis comme une �n de �chier par le driver de terminal s�il est l�uniqu

caract�re d�une ligne �voir �����

Elle permet donc de terminer un shell � la place de la commande exit� sauf

l�utilisateur inhibe cette fonction pour �viter des sorties involontaires en pla'an

Page 15: Unix et programmation du shell Table des mati res

�� CHAPITRE �� PREMIERS PAS DANS LE SYST�ME

la commande interne �set �o ignoreeof� du shell dans un �chier d�initialisation

du shell �voir ����� Il est en e�et facile de taper par erreur �Ctrl% D au lieu� par

exemple� de �Shift% D�

La touche �Ctrl% D permet aussi d�e�acer le caract�re sur lequel se trouve le

curseur quand on modi�e une ligne de commande�

Ctrl C interrompt l�ex�cution d�une commande

Ctrl U e�ace la ligne de commande en cours d��criture

Les quatre 0�ches permettent de rappeler les commandes d�j� tap�es et de se d�placer

dans ces commandes pour les modi�er �tout caract�re tap� s�ins�re dans la commande��

��� Format des commandes Unix

Une grande partie des commandes Unix ont �t� �crites � l�origine par des utilisateurs

et ont �t� int�gr�es dans le lot des commandes standards� Dans un premier temps� aucune

syntaxe standard n�avait �t� clairement choisie pour le format des options des commandes�

Une cons�quence f&cheuse est que certaines options qui se correspondent dans des com�

mandes di��rentes� peuvent avoir des noms et des syntaxes di��rentes� Par exemple� pour

d�signer un s�parateur de champ� la commande �sort� utilise ��d� alors que la commande

�cut� utilise ��t��

La syntaxe g�n�rale des commandes Unix est (

commande options��� arguments���

Les arguments indiquent les objets sur lesquels la commande va agir et les options

indiquent des variantes dans l�ex�cution de la commande�

Les options sont le plus souvent pr�c�d�es d�un tiret ���� L�ordre des options est le plus

souvent indi��rent et plusieurs options peuvent �tre regroup�es derri�re un seul tiret�

Les arguments peuvent �tre absents et� dans ce cas� prennent des valeurs par d�faut�

Exemples �

�a� date

�b� ls �la

�c� ls �l �users�students

�d� ls �users�students

Dans les manuels de r�f�rence�

�� %� indique les options ou les arguments facultatifs�

�arg���� indique que l�argument arg peut �tre r�p�t��

Exemple ��

ls ��abcCdfFgilmnopqrRstux� �files����

���� CONSULTATION DU MANUEL EN LIGNE �MAN �

�� Consultation du manuel en ligne �man

La commande man permet de consulter le manuel de r�f�rence des commandes Unix

man �s �num�ro�section � commande

a�che les pages du manuel de r�f�rence sur la commande et dans la section indiqu�e� Su

certaines versions de man le num�ro de la section est donn� seul� sans �tre pr�c�d� d

l�option ��s�� ��� est le num�ro de section par d�faut�

Les di��rentes sections sont les suivantes �sur un Unix Solaris * on peut trouver de

variantes sur les di��rents Unix� (

�� commandes pour l�utilisateur �ls� sort� etc���

�� appels syst�me �pour les programmeurs en langage C��

�� fonctions diverses de di��rentes librairies �pour les programmeurs en langage C��

�� information sur les formats de �chiers �passwd� group� etc���

� informations diverses�

� jeux et d�monstrations�

Les informations pour l�administration du syst�me sont donn�es dans la section �M�

Chaque section a une entr�e particuli�re �intro� qui la d�crit et donne quelques info

mations g�n�rales�

Exemples ��

�a� man man

�b� man ls

�c� man �s � intro �ou man � intro suivant les Unix�

man �k mot�cl�

a�che une ligne sur chaque entr�e �en g�n�ral le nom d�une commande Unix� du manu

qui contient mot�cl� dans la section �NAME� �qui comporte une description succincte d

la commande� du manuel�

Remarque ��

Pour que cette option fonctionne� l�administrateur doit e�ectuer une indexation pr�a

lable des noms de commandes qui sont r�pertori�es dans le manuel�

Exemple ��

man �k directory

Page 16: Unix et programmation du shell Table des mati res

�� CHAPITRE �� PREMIERS PAS DANS LE SYST�ME

�� Nom d�un �chier� nom absolu� nom relatif

Le nom terminal est compos� d�au plus �� caract�res si l�on veut rester compatible

avec toutes les versions d�Unix syst�me V �jusqu�� � caract�res dans toutes les versions

r�centes d�Unix�� Tous les caract�res du code ASCII sont autoris�s sauf �#� et le caract�re

de code ��

Le nom ou chemin� absolu est compos� du nom terminal pr�c�d� du chemin d�acc�s

� ce �chier depuis la racine� Par exemple� �#users#students#jean#a�che� Le premier �#�

d�signe le r�pertoire racine� Les �#� suivants servent de s�parateurs entre les noms des

r�pertoires et le nom terminal�

Ce nom absolu est souvent lourd � manier car il peut �tre tr�s long� Un �chier peut �tre

d�sign� par son nom ou chemin� relatif qui correspond � la position du �chier relativement

au r�pertoire courant o- se trouve le processus qui d�signe le �chier �voir ����� Un nom est

relatif quand il ne commence pas par un �#��

Exemple ��

Si l�utilisateur �plus pr�cis�ment le processus qui ex�cute le shell courant de l�utilisa�

teur� se trouve dans le r�pertoire �#users#students#jean�� il pourra d�signer le �chier

de l�exemple ci�dessus par �a�che�� S�il se trouve dans le r�pertoire �#users#students��

il pourra d�signer ce �chier par �jean#a�che��

Noms relatifs particuliers (

� d�signe le r�pertoire courant �o- l�on se trouve�

�� d�signe le r�pertoire parent du r�pertoire courant

��� Commandes

���� Lancer une commande� supprimer un processus

Lorsqu�il a la main �le prompt est a�ch�� l�utilisateur peut lancer une commande en

tapant son nom suivi �ventuellement de ses options et de ses arguments�

La plupart des commandes peuvent s�interrompre en tapant sur la touche d�annulation�

Cette touche est le plus souvent �Ctrl% C ou la touche �DEL%�

Certaines commandes peuvent se prot�ger contre une interruption par la touche d�annu�

lation� Dans ce cas� on peut tout de m�me les interrompre par la commande kill �voir �����

Un processus lanc� en arri�re�plan est automatiquement prot�g� d�une interruption par

la touche d�annulation et la seule fa'on de l�interrompre est d�utiliser la commande kill�

���� Nom d�une commande� variable PATH

Pour faciliter le travail de l�utilisateur� les commandes qui sont situ�es dans la liste

des r�pertoires enregistr�e dans la variable PATH �attention� le nom est en majuscules�

���� COMMANDES �

peuvent �tre appel�es par leur nom terminal� Il n�est pas n�cessaire de taper leur nom

absolu ou relatif�

On peut par exemple taper �man� au lieu de ��bin�man� parce que le r�pertoire �bi

fait partie de la liste de r�pertoires de la variable PATH�

On peut a�cher la valeur de PATH avec la commande �en g�n�ral la liste est plu

longue que la r�ponse donn�e ici * ��� est le prompt� (

� echo �PATH

�bin��usr�bin��users�students�toto�bin��usr�ucb��

La valeur est une suite de noms de r�pertoires s�par�s par �(�� Le r�pertoire courant peu

�tre indiqu� par un ���� ou par �(� au d�but ou � la �n de la liste�

Pour des raisons de s�curit�� il n�est pas conseill� de mettre le r�pertoire courant a

d�but de la liste� En e�et� la liste est parcourue de gauche � droite pour rechercher un

commande et on n�est pas certain de ne pas avoir par exemple un �chier �ls� pi�g� dan

le r�pertoire courant� lorsque l�on se d�place dans l�arborescence et que l�on lance cett

commande�

Cette variable est initialis�e par l�administrateur du syst�me au moment de la cr�atio

de l�utilisateur� L�utilisateur peut ensuite modi�er sa valeur� Le plus souvent cette valeu

est donn�e dans le �chier �zshenv si on travaille avec zsh �voir �����

Remarque ��

La variable PATH n�est utilis�e pour rechercher une commande que si le nom de l

commande ne comporte aucun �#�� Si vous tapez �bin�cmd�� la commande ne ser

recherch�e que dans le r�pertoire bin situ� sous le r�pertoire courant et pas sou

tous les r�pertoires bin de tous les r�pertoires list�s dans la variable PATH� Tape

���cmd� est un bon moyen d�ex�cuter une commande de son r�pertoire courant� alor

que �cmd� risque d�ex�cuter un autre �cmd� situ� dans un des r�pertoires de la variab

PATH�

��� Nom complet et type d�une commande �whence� whereis�

Comme on vient de le voir� la facilit� o�erte par la variable PATH provoque parfois de

probl�mes� Sous ksh et zsh �mais pas sous sh�� la commande whence permet de savoir o

se situera la commande ex�cut�e (

whence ��vp� commande

indique comment serait interpr�t�e la commande si elle �tait tap�e ( fonction� command

interne du shell� alias ou chemin absolu pour un �chier situ� dans un des r�pertoires de l

variable PATH�

�v est l�option �verbeuse� un peu plus �bavarde�� Avec l�option �p� on demande de n

rechercher que les �chiers ex�cutables �et pas les fonctions� commandes internes ou alias

Certaines commandes peuvent se retrouver � plusieurs endroits de l�arborescence� C

sont souvent des versions di��rentes� On peut par exemple avoir les versions Unix BSD

et Unix OSF d�une commande� Pour retrouver toutes les versions qui se trouvent � de

emplacements standards de l�arborescence� on dispose de la commande whereis� Cett

Page 17: Unix et programmation du shell Table des mati res

�� CHAPITRE �� PREMIERS PAS DANS LE SYST�ME

commande donne aussi les emplacements de pages du manuel en ligne et des sources des

programmes�

���� Compl�tion des commandes par zsh

Avec zsh� l�utilisateur peut utiliser la touche �Tab% pour compl�ter les noms de com�

mandes ou les noms de �chiers�

S�il y a plusieurs possibilit�s� zsh compl�te avec le plus de caract�res qu�il peut et envoie

un �beep� sonore� L�utilisateur peut avoir les di��rentes possibilit�s en tapant Ctrl D�

S�il ne peut compl�ter� il envoie un �beep� sonore�

Pour entrer une tabulation dans une commande� l�utilisateur doit la faire pr�c�der de

Ctrl V�

Deuxi�me partie

Commandes

Page 18: Unix et programmation du shell Table des mati res

Chapitre �

Commandes li�es � larborescence des

chiers

��� Visualisation de l�arborescence �ls

ls �options���� �fichiers����

donne des informations pour chaque �chier sp�ci�� �pour le r�pertoire en cours si aucu

�chier n�est sp�ci���� Le type d�information donn� d�pend du type du �chier (

) si le �chier cit� est un r�pertoire� ls a�che des renseignements sur les �chiers �de tou

types� pas seulement les �chiers ordinaires� qui sont directement sous ce r�pertoir

Sans option� seuls les noms terminaux �pas les noms absolus ou relatifs� des �chier

sont donn�s�

) si un �chier cit� n�est pas un r�pertoire� ls a�che des renseignements sur ce �chie

Le nom du �chier est donn� �tel qu�il a �t� donn� dans la ligne de commande ( nom

relatif ou absolu�� Sans option� c�est surtout utile quand on emploie des caract�re

sp�ciaux � ou � par exemple� �tudi�s en ��� dans la ligne de commande�

Options

�l format d�taill� �voir ����

�a liste aussi les noms de �chiers qui commencent par un ��� �qui ne sont pas no

malement list�s�

�A comme l�option �a mais les r�pertoires ��� et ���� ne sont pas a�ch�s

�d si l�argument est un r�pertoire� liste seulement son nom �et pas les �chiers qu

sont sous ce r�pertoire�

�t trie par date de derni�re modi�cation �sinon la liste des �chiers est tri�e pa

d�faut par ordre alphab�tique�� les plus r�cemment modi��s en premier

�i a�che au d�but de la ligne le num�ro de i�node des �chiers

�R listage r�cursif des sous�r�pertoires

�g a�che le groupe du �chier quand elle est associ�e � l�option ��l� �utile seulemen

en Unix BSD * voir remarque �a� de ������

Page 19: Unix et programmation du shell Table des mati res

�� CHAPITRE � COMMANDES LI�ES � L�ARBORESCENCE DES FICHIERS

� ls �l �

total �����

lrwxrwxrwx � root system � Apr �� ���� bin �� usr�bin

drwxr�xr�x � root system ���� Jan �� ����� dev

drwxr�xr�x �� root system ���� Jan �� ����� etc

lrwxrwxrwx � root system � Apr �� ���� lib �� usr�lib

drwxr�xr�x � root system ��� Feb � ���� mnt

drwxr�xr�x � root system ��� Sep �� ����� net

drwxr�xr�x �� root system ���� Jun �� ���� sbin

drwxr�xr�x �� root system ��� Dec � ����� students

drwxrwxrwt � root system ���� Jan �� ����� tmp

drwxr�xr�x � root system ��� Jan �� ���� users

drwxr�xr�x �� root system ��� Dec �� ����� usr

drwxr�xr�x �� root system ��� Apr �� ���� var

�rwxr�xr�x � root bin ������� Jun �� ���� vmunix

��������

Fig� ��� ) Format de sortie de la commande �ls �lg�

�L si un �chier est un lien symbolique� cette option indique que l�on veut des ren�

seignements sur le �chier point� par le lien et pas sur le �chier lui�m�me �voir

commande ln en ���

Exemples �

�a� ls �l bin �usr�bin

�b� ls �ld a

a�che les informations sur les �chiers du r�pertoires courant �dont le nom commence

pas par un �a��� L�option ��d� est indispensable pour ne pas �entrer� dans les sous�

r�pertoires s�il y en a dont le nom commence par �a��

�c� ls �t f � head ��

a�che le nom du �chier le plus r�cemment modi�� parmi tous les �chiers du r�pertoire

courant� dont le nom commence par un �f��

��� Information d�taill�e sur les �chiers �ls �l

����� Format d�a�chage

Un exemple de format d�a�chage de la commande ls �l appliqu�e � un r�pertoire est

donn� � la �gure ���� Une premi�re ligne donne le nombre de blocs de ���� octets qu�oc�

cupent l�ensemble des �chiers list�s par la commande� Le format d�une ligne est d�taill�

dans la �gure ����

��� INFORMATION D�TAILL�E SUR LES FICHIERS �LS �L �

date de dernièrefichier

nom du

fichier

modification

drwxr-xr-x 15 root system 4608 Jan 19 07:02 etc

autorisations

nom du

propriétaire

taille du

fichier

de liens groupe

type du nombre nom du

Fig� ��� ) Format de sortie d�une ligne de la commande �ls �lg�

Remarques �

�a� Les versions Unix OSF et Syst�me V de ls a�chent le nom du groupe du �chie

avec l�option ��l�� En Unix BSD� le groupe s�a�che avec l�option ��g�� Si on veu

r�cup�rer une information dans une des colonnes il est donc pr�f�rable d�associe

toujours l�option ��g� � l�option ��l��

�b� Les dates sont a�ch�es avec l�ann�e� ou l�heure et la minute selon que la date es

plus ou moins r�cente �six mois avant la date actuelle��

����� Types de �chiers

Le type du �chier est a�ch� � l�aide du premier caract�re de la ligne de description d

�chier (

� �chier ordinaire

d r�pertoire �directory�

b �chier sp�cial de type bloc �essentiellement les disques�

c �chier sp�cial de type caract�re �disque� streamer� terminal� etc��

l lien symbolique

s socket

Pour les liens symboliques� le nom du �chier point� est donn� � la suite des autre

renseignements sur le �chier (

lrwxrwxrwx � root ���� Feb �� ����� fich �� fichierP

Pour les �chiers sp�ciaux� la taille n�a aucun sens * elle est remplac�e par le majeur e

le mineur ( le majeur d�signe le pilote �le programme de gestion du p�riph�rique * driver e

anglais� et le mineur d�signe le p�riph�rique particulier g�r� par ce pilote (

crw�rw�rw� � root ���� Feb �� ����� tty��

���� Mode d�accs au �chier

Les autorisations �on dit aussi le mode d�acc�s au �chier� du �chier sont indiqu�e

par les neuf caract�res qui suivent le type du �chier� Les trois premiers caract�res sont le

autorisations du propri�taire du �chier� les trois suivants sont les autorisations du groupe d

Page 20: Unix et programmation du shell Table des mati res

�� CHAPITRE � COMMANDES LI�ES � L�ARBORESCENCE DES FICHIERS

�chier et les trois derniers sont les autorisations des autres �qui ne sont pas le propri�taire

et qui n�appartiennent pas au groupe��

����� Nombre de liens

Pour les �chiers ordinaires il s�agit du nombre de �chiers ayant le m�me num�ro de

i�node�Pour les r�pertoires� il indique le nombre de sous�r�pertoires du r�pertoire �augment�

de �� car � et �� sont compt�s��

��� Se d�placer dans l�arborescence �cd

cd �r�pertoire�

d�place le processus dans r�pertoire �r�pertoire �HOME� par d�faut��

Exemple ��

cd �users�students�jean

Une facilit� o�erte par zsh est bien utile quand on a besoin de travailler entre deux

r�pertoires (

cd �

permet de se d�placer dans le r�pertoire o- l�on �tait avant le dernier d�placement�

��� A�cher le r�pertoire courant �pwd

pwdIl est souvent plus prudent de taper cette commande avant d�e�ectuer une commande

dangereuse �suppression de �chiers par exemple� pour savoir o- l�on est plac� dans l�arbo�

rescence�

�� Caract�res sp�ciaux pour le shell

����� G�n�ration des noms de �chiers ����� ��

Les caract�res � � � �� sont interpr�t�s par le shell quand ils �gurent dans une com�

mande� Cette interpr�tation s�appelle la g�n�ration des noms de �chiers� Le shell interpr�te

chaque mot qui les contient comme un mod�le de noms de �chiers ( il remplace le mot par

une liste alphab�tique des noms des �chiers qui correspondent � ce mod�le�

Si aucun �chier ne correspond au mod�le� le mod�le est laiss� tel quel par sh et ksh� Pour

zsh� c�est le cas si l�option NO�NOMATCH est positionn�e �voir �������� sinon� zsh interrompt

l�interpr�tation de la commande et ne lance pas son ex�cution�

� d�signe z�ro� un ou plusieurs caract�res�

��� CARACT�RES SP�CIAUX POUR LE SHELL �

� d�signe un caract�re quelconque�

�c��c�� ou �c�c�����

d�signe un caract�re sp�ci�� par l�int�rieur des crochets� Par exemple� �a�z

d�signe une lettre minuscule et �AEIOUY� d�signe une voyelle majuscule�

On peut aussi d�signer un caract�re quelconque qui n�est pas parmi les caract�re

sp�ci��s entre les crochet en faisant suivre le crochet ouvrant du caract�re ��

Par exemple� sous zsh� �������� d�signe un caract�re qui n�est pas un chi�r

Attention� sous sh et ksh� il faut �crire �������� ��

n supprime la signi�cation sp�ciale du caract�re suivant�

Exemple ��

Si l�utilisateur tape la commande

ls �l bin�A�����

la commande suivante sera lanc�e apr�s l�interpr�tation du shell (

ls �l bin�A�abc bin�A�xy

si les � �chiers A�abc et A�xy sont les deux seuls �chiers du r�pertoire bin qu

commencent par un A suivi d�un chi�re�

Remarque ��

Attention� ��� ne peut d�signer une cha ne de caract�res qui comprend un �#� o

une cha ne de caract�res qui commence par un ��� si ce ��� est plac� en t�te ou just

derri�re un �#�� Ces deux exceptions sont aussi valables pour les caract�res sp�ciau

��� et �� %��

Autrement dit� le caract�re ��� doit �tre explicitement d�sign� s�il est plac� au d�bu

d�un nom terminal de �chier� Par exemple� si on veut tous les �chiers du r�pertoir

courant qui se terminent par la lettre c �y compris ceux qui commencent par un ���

il faut taper

ls �d � c c

L�interpr�tation par le shell de ces caract�res sp�ciaux peut avoir des e�ets ind�sirable

car le shell l�e�ectue n�importe o- dans une commande� On peut utiliser � pour �vite

cette interpr�tation sur le caract�re suivant� On peut aussi utiliser � ou � pour emp�che

l�interpr�tation sur une portion de texte �voir ��� ��

����� Le caractre sp�cial �

Pour ksh et zsh �mais pas pour sh�� le caract�re �� �seul ou plac� en t�te de mot�

une signi�cation particuli�re (

� d�signe le r�pertoire HOME de l�utilisateur�

�utilisateurd�signe le r�pertoire HOME de l�utilisateur indiqu��

�� Il faut se souvenir �voir �������� que� sous zsh et sans indication particulire� un shellscript est excu

par sh et il faut donc utiliser cette syntaxe dans les shellscripts

Page 21: Unix et programmation du shell Table des mati res

�� CHAPITRE � COMMANDES LI�ES � L�ARBORESCENCE DES FICHIERS

Exemples ��

�a� cp �fich �bin

�b� ls �l toto�bin�fich

���� Le caractre sp�cial �

Dans les shellscripts� le shell consid�re que tout mot qui commence par un ��� est le

d�but d�un commentaire qui va jusqu�� la �n de la ligne� Si un mot commence par un ���

et n�introduit pas un commentaire� il faut donc le faire pr�c�der de �n�� Un ��� � l�int�rieur

d�un mot n�est pas consid�r� comme un caract�re sp�cial�

Remarques ��

�a� En mode interactif �c�est���dire lorsque la commande est tap�e directement au clavier

par l�utilisateur�� zsh �mais pas ksh� ne consid�re pas ��� comme un caract�re sp�cial�

�b� Voir le cas particulier d�un �chier ex�cutable dont la premi�re ligne commence par

� �� en ��������

����� Autres caractres sp�ciaux

Sous zsh� � et la tabulation sont des caract�res particuliers�

� est li� � l�historique des commandes� Si on veut l�utiliser dans un autre sens� il faut le

faire pr�c�der de �� Ce caract�re �tant li� � l�historique des commandes n�a d�utilit� qu�en

interactif� zsh ne le consid�re donc pas comme un caract�re sp�cial dans un shellscript�

La tabulation permet la compl�tion de commande� Si on veut ins�rer une tabulation

dans une commande� on la fait pr�c�der de �Ctrl V��

�� A�cher le type d�un �chier ��le

file fichiers���

tente de deviner le type de �chier �r�pertoire� ex�cutable binaire� shellscript� ASCII� lan�

gage� etc���

��� Rechercher des �chiers dans l�arborescence ��nd� lo�

cate

find r�pertoires��� �name mod�le�nom �print

a�che les noms des �chiers dont les noms correspondent � mod�le�nom et situ�s dans

l�arborescence des r�pertoires�

mod�le�nom peut comporter des caract�res sp�ciaux semblables aux caract�res sp�ciaux

utilis�s dans la g�n�ration des noms de �chiers par le shell �voir ���� Plus exactement� �nd

��� RECHERCHER DES FICHIERS DANS L�ARBORESCENCE �FIND� LOCATE �

reconnait les caract�res � �� �� �attention� la n�gation des caract�res entre crochets es

donn�e par un � et pas par un ��� Un ��� n�est reconnu en d�but de nom que s�il est donn

explicitement�

Exemple ��

find �usr �name �info � �print

recherche tous les �chiers situ�s sous #usr dont le nom commence par info� On do

entourer info� avec des guillemets pour �viter le remplacement �par le shell� de � pa

des noms de �chiers �voir ������

La commande �nd a de nombreuses autres options qui permettent de rechercher le

�chiers qui v�ri�ent certains crit�res� En voici quelques unes (

�size n taille en nombre de blocs de �� octets

�mtime n nombre de jours depuis la derni�re modi�cation

�atime n nombre de jours depuis le dernier acc�s

Dans les options ci�dessus� n peut �tre remplac� par 1n �nombre sup�rieur � n� ou pa

�n �nombre inf�rieur � n��

�user nom propri�taire

�type t type du �chier �un �f� pour un �chier ordinaire et les autres abr�viation

comme dans la commande ls �l * voir ����

�perm nb�octal

est vrai si le �chier a les autorisations nb�octal

�perm �nb�octal

est vrai si le �chier a au moins les autorisations nb�octal

Les deux options ��exec� et ��ok� permettent d�ex�cuter une commande sur les �chier

qui v�ri�ent les crit�res pr�c�dents� Le �chier examin� peut �tre d�sign� par �!"� �isol� de

autres caract�res� dans la commande� Ces deux options renvoient �vrai� si le code retour d

la commande est � �voir ������� L�option ��ok� demande une con�rmation de l�utilisateu

avant l�ex�cution de la commande� Il ne faut pas oublier le �*� �nal qui indique que l

commande est �nie� Il doit �tre pr�c�d� par ��� pour que le shell ne l�interpr�te pas�

�exec commande n�

�ok commande n�

Toutes ces options peuvent �tre reli�es par les op�rateurs logiques ��� �n�gation�� ��o

�ou logique� et regroup�es avec des parenth�ses� Le et logique est obtenu par la juxtapo

sition des options�

Les options sont examin�es �et ex�cut�es pour �print� �exec et �ok� tant que la cond

tion peut �tre satisfaite pour le �chier en cours d�examen� D�s que la condition ne peu

plus �tre satisfaite �nd passe au �chier suivant�

Exemples ��

�a� find �mtime ��� �print

a�che les noms des �chiers de l�arborescence du r�pertoire HOME de l�utilisateu

qui ont �t� modi��s dans les dix derniers jours�

Page 22: Unix et programmation du shell Table des mati res

�� CHAPITRE � COMMANDES LI�ES � L�ARBORESCENCE DES FICHIERS

�b� find �users �user toto �mtime ��� �exec ls �ld !" �#

a�che des renseignements d�taill�s sur les �chiers de l�arborescence de #users� qui

appartiennent � toto et qui ont �t� modi��s dans les �� derniers jours�

�c� find toto � �user toto �exec ls �ld !" �#

a�che des renseignements d�taill�s sur les �chiers qui n�appartiennent pas � toto

dans son r�pertoire HOME�

�d� find toto �perm ���� �exec ls �ld !" �#

a�che des renseignements d�taill�s sur les �chiers du r�pertoire HOME de toto� qui

ont �au moins� l�autorisation d��criture pour les autres�

�e� find �name core �ok rm !" �#

supprime �apr�s con�rmation par l�utilisateur� tous les �chiers �core� situ�s sous le

r�pertoire HOME�

Les �chiers �core� sont cr�es automatiquement quand certains programmes s�inter�

rompent par suite d�une erreur� Ils peuvent servir aux experts pour trouver la cause

de l�erreur�

�f� find � �� �name � �java� �o �name � �html� � �exec more !" �#

a�che page � page tous les �chiers 2��java2 et 2��html2 de l�arborescence du r�per�

toire courant�

locate mod�le�de�nom���

recherche les �chiers dont le nom correspond � mod�le�de�nom�

Si mod�le�de�nom contient des �jokers� ���� ou � %�� locate donne tous les �chiers dont

le nom contient mod�le�de�nom� Sinon elle donne les �chiers dont le nom correspond au

mod�le�

Cette commande GNU n�est pas toujours install�e sur les syst�mes Unix� Si l�admi�

nistrateur l�a install�e� elle permet de g�rer une base de donn�es des �chiers disponibles�

Dans ce cas� cette commande est �norm�ment plus rapide que la commande �nd et charge

beaucoup moins le syst�me�

Chapitre �

Protection des chiers

�� Changement des autorisations �chmod

chmod ��R� mode�acc�s fichiers���

donne des autorisations aux �chiers� Seuls le propri�taire du �chier et le super utilisateu

peuvent utiliser chmod�

mode�acc�s indique quelles sont les autorisations que l�on donne * on peut donner ce

autorisations sous forme absolue ou symbolique�

L�option �R �r�cursif� indique que� si un des �chiers est un r�pertoire� chmod do

changer les autorisations de toute l�arborescence du r�pertoire�

Mode d�acc�s absolu

Les autorisations sont donn�es par mode�acc�s sous forme d�un nombre octal compos

de � chi�res�

Le premier chi�re correspond aux autorisations que l�on donne au propri�taire de

�chiers� le deuxi�me correspond au groupe des �chiers et le troisi�me correspond � tous le

autres utilisateurs�

Pour calculer chacun des chi�res� on ajoute les valeurs des autorisations en comptan

� pour read� � pour write et � pour execute�

d�o-� par exemple�

chmod ��� fichier

donne toutes les autorisations au propri�taire et les autorisations de lecture et d�ex�cutio

aux autres�

Mode d�acc�s symbolique

Les autorisations sont donn�es par mode�acc�s sous la forme suivante (

�qui%��� op permissions��� �op permissions ���%

�qui� d�signe celui ou ceux qui recevront ces autorisations ( u �propri�taire�� g �groupe

o �les autres� ou a �tous les �� par d�faut�

�op� indique si l�on veut ajouter ou enlever des autorisations ( 1 �ajouter�� � �enlever

3 �donner les autorisations comme dans le mode absolu�

Page 23: Unix et programmation du shell Table des mati res

� CHAPITRE �� PROTECTION DES FICHIERS

Les permissions sont donn�es par r� w ou x�

Exemples �

�a� chmod ug$wx fichier

�b� chmod ug$w�x fich

�c� chmod o%w fich

�� Masque pour les autorisations �umask

umask �nnn�

donne la valeur octale nnn �cf� mode absolu de chmod en ��� au masque qui sera uti�

lis� pour limiter les autorisations que recevront les nouveaux �chiers au moment de leur

cr�ation�

Exemple ��

umask ���

les �chiers et r�pertoires qui seront cr��s dans la suite de la session n�auront ni

l�autorisation d��criture pour le groupe ��� ni les autorisations d��criture et de lecture

pour les autres ���

umask

�seul� a�che le masque en cours� Celui�ci est en g�n�ral ��� si l�utilisateur n�a pas lanc� de

commande umask� Les nouveaux �chiers sont alors cr��s avec les autorisations �rw�r��r���

�car ils ne sont pas suppos�s �tre ex�cutables� et les nouveaux r�pertoires avec les autori�

sations �rwxr�xr�x��

Chapitre �

Commandes dobservation du syst�me

�� Date et Heure �date

date

a�che la date et l�heure� Des formats d�a�chage sont disponibles en option�

�� Nom de l�ordinateur �hostname

hostname

a�che le nom de l�ordinateur sur lequel la commande s�ex�cute ��taloa�unice�fr�� par exemp

�� Nom du syst�me d�exploitation �uname

uname �a

a�che des informations sur le syst�me d�exploitation�

�� Information sur les utilisateurs �who� �nger

who

a�che le nom de login� le nom du terminal et l�heure du login pour chaque utilisateu

actuellement en ligne�

Si un utilisateur s�est connect� par l�interm�diaire du r�seau �et pas directement sur l

machine qui ex�cute la commande who�� le nom de la machine d�o- il vient est indiqu

entre parenth�ses � la �n de la ligne�

who am I

a�che les informations sur l�utilisateur qui s�est connect� pour d�marrer la session en cour

whoami

a�che le nom de login de l�utilisateur qui a lanc� la commande�

Page 24: Unix et programmation du shell Table des mati res

�� CHAPITRE �� COMMANDES D�OBSERVATION DU SYST�ME

finger ��machines����

a�che les informations de la commande who et des informations informelles sur les utili�

sateurs �leur nom et pr�noms� leur t�l�phone�� � � � actuellement connect�s sur les machines

�la machine locale par d�faut��

finger utilisateur��machine����

a�che les informations sur les utilisateurs sp�ci��s� m�me s�il ne sont pas connect�s� �nger

donne plus d�informations sur les utilisateurs que lorsque l�on n�indique pas d�utilisateurs

en particulier� De plus les contenus des �chiers �plan et �project des r�pertoires HOME

des utilisateurs sont a�ch�s� Pour �utilisateur� on peut donner le nom de login ou le nom

�r�el� a�ch� par la commande�

rusers

devrait donner une liste des utilisateurs connect�s sur le r�seau �mais 'a ne marche pas

toujours�����

� Derni�res connexions au syst�me �last

Il est prudent de v�ri�er r�guli�rement que personne n�est entr� sous son propre nom�

last ��n� �utilisateur� �terminal�

a�che des informations sur les derni�res connexions� On peut se limiter aux connexions

d�un utilisateur ou aux connexions �tablies � partir d�un certain terminal� On peut aussi

se limiter aux n derni�res connexions�

Exemple �

last �� toto

a�che les trois derni�res connexions �y compris l�actuelle� de toto�

Remarque �

last ne donne pas toujours les connexions � partir des terminaux X ou des stations

de travail� Cela d�pend du syst�me de gestion des connexions de X Window et des

�chiers de con�guration install�s par l�administrateur syst�me�

� Syst�me �Network Information Service� �NIS

Le syst�me NIS �anciennement appel� �Yellow Pages�� permet de concentrer sur une

seule machine la gestion de certains �chiers utilis�s pour l�administration du syst�me Unix�

Il permet en particulier de g�rer les �chiers qui contiennent les informations sur les

utilisateurs �noms� mot de passe� r�pertoire HOME� programme de d�marrage� et sur les

noms et num�ros IP des machines du r�seau local�

ypcat passwd

a�che l�ensemble du �chier des mots de passe �si l�administrateur syst�me l�a autoris���

ypcat hosts

a�che l�ensemble des noms et des num�ros IP des machines du r�seau local�

���� ESPACE DISQUE OCCUP� �

ypcat �k network

a�che l�ensemble des �netgroups� �voir cours sur les r�seaux�� L�option ��k� permet d�avo

les noms des groupes et pas seulement les noms des membres�

ypwhich �x

a�che les noms possibles pour les di��rents types de �chiers que le syst�me NIS peut g�re

�� Espace disque occup�

���� Place occup�e par la branche d�un r�pertoire �du�

du �options���� �fichiers����

a�che le nombre de blocs occup�s par les �chiers indiqu�s �r�pertoire en cours par d�faut

Si un des �chiers est un r�pertoire� c�est le nombre de blocs occup�s par toute l�arborescenc

plac�e sous le r�pertoire qui est a�ch�e�

Sous Unix Syst�me V ou OSF les blocs ont une taille de �� octets� sous Unix BSD i

ont une taille de � Ko� Consultez le manuel en ligne de du pour en savoir plus�

�s a�che seulement le nombre total de blocs

�a a�che la taille de tous les �chiers et r�pertoires

Exemple ��

du �s �HOME

���� Place libre d�un systme de �chiers �df�

df �syst�me�fichiers� �fichier�

a�che le nombre de blocs de �� octets disponibles pour le syst�me de �chiers sp�ci�

Le syst�me de �chiers peut �tre sp�ci�� par le nom du p�riph�rique �#dev#� � � � ou par u

�chier quelconque du syst�me mont��

�df� �sans argument� a�che les renseignements sur tous les syst�mes mont�s �voir ����

Exemples ��

�a� df �dev�rz�a

a�che les renseignements sur le syst�me de �chier du syst�me de �chier li� au nom

de �chier sp�cial �dev�rz�a �une partition d�un disque��

�b� df �

a�che les renseignements sur le syst�me de �chiers sur lequel se trouve le r�pertoir

courant�

�� Nom du terminal utilis� �tty

tty

a�che le nom du terminal associ� � l�entr�e standard du processus courant� Le code retou

Page 25: Unix et programmation du shell Table des mati res

�� CHAPITRE �� COMMANDES D�OBSERVATION DU SYST�ME

�voir ������ est � si l�entr�e standard est un terminal et � sinon�

Chapitre

Commandes pour la gestion des

processus

Pour la gestion des processus on se reportera aussi aux facilit�s o�ertes par les shel

ksh et zsh d�crites en ����� et � la section ��� sur les processus lanc�s en arri�re�plan�

��� Processus en cours d�ex�cution �ps

ps �options����

a�che des renseignements sur les processus en cours d�ex�cution et associ�s au termina

num�ro de processus� terminal qui a lanc� le processus� temps d�ex�cution du processu

nom de la commande qui a lanc� le processus�

Si aucune option n�est sp�ci��e� ps donne les informations sur les processus associ�s

l�utilisateur qui a lanc� la commande�

Cette commande o�re de nombreuses options qui varient suivant les syst�mes Unix�

existe au moins trois versions di��rentes ( BSD� OSF et Syst�me V �ou Solaris�� Voici le

principales options o�ertes par la version Unix BSD (

�a tous les processus lanc�s depuis un terminal par tous les utilisateurs�

�x tous les processus de l�utilisateur� m�me ceux qui n�ont pas �t� lanc�s depuis u

terminal

�l donne des renseignements suppl�mentaires� en particulier le pid du processus p�r

�PPID� de chacun des processus�

�e a�che les valeurs des variables d�environnement�

�w a�che en ��� colonnes ��� colonnes par d�faut��

�ww a�che autant de caract�res qu�il faut pour avoir tous les renseignements su

chaque processus �utile avec l�option �e��

Exemple �

Pour a�cher des informations d�taill�es sur tous les processus sans exception on do

lancer dans les di��rentes versions (

en BSD ( ps �axlww

Page 26: Unix et programmation du shell Table des mati res

�� CHAPITRE �� COMMANDES POUR LA GESTION DES PROCESSUS

en OSF ( ps �Al ww

en Syst�me V ( ps �Afl

��� Supprimer un processus en cours d�ex�cution �kill

On peut supprimer un processus lanc� en avant�plan en tapant la touche d�annulation

�le plus souvent Ctrl�C� dans la fen�tre dans laquelle ce processus a �t� lanc�� Pour les

processus lanc�s en arri�re�plan �voir ����� cette touche d�annulation n�a aucun e�et� Pour

les supprimer il faut utiliser la commande kill�

kill ��signal� pid

envoie le signal indiqu� au processus dont pid est le num�ro de processus� signal est un

num�ro de signal compris entre � et � �� par d�faut� ou le symbole d�un signal ( HUP

���� INT ���� QUIT ���� KILL � �� TERM ���� etc��� �taper �kill �l� pour avoir la liste

compl�te des noms des signaux��

Exemples ��

�a� kill ���

�b� kill �� ���

�c� kill &�

tue le processus lanc� en arri�re�plan qui a le num�ro � pour le shell dans lequel la

commande kill a �t� tap�e�

�d� kill �� ��

tue tous les processus lanc�s par l�utilisateur qui a tap� le kill� 4 ex�cuter en cas

d�anomalie et d�urgence� Par exemple quand des nouveaux processus sont engendr�s

� grande vitesse par une erreur de programmation�

Les super�utilisateurs peuvent tuer tous les processus� L�utilisateur normal ne peut tuer

que ses propres processus�

Remarque �

Le signal � �envoy� par d�faut� peut �tre intercept� par le processus � qui il est

destin�� Ce processus peut avoir l�amabilit� de laisser la place nette avant de mourir

�par exemple� il peut e�acer les �chiers temporaires qu�il a cr��s�� Il peut aussi refuser

de mourir et continuer de s�ex�cuter normalement�

Si on veut �tre certain de tuer un processus� il faut lui envoyer le signal qui ne peut

�tre intercept��

Pour laisser une chance au processus de mourir �proprement�� il est conseill� d�essayer

d�abord de tuer avec le signal � et de n�utiliser le signal que si le processus vis� ne

veut pas se laisser tuer�

���� LANCEMENT AUTOMATIQUE DE PROCESSUS �DES MOMENTS DONN�S �

��� Lancement automatique de processus � des moment

donn�s �at� crontab

Si l�administrateur du syst�me l�a autoris� �voir le manuel en ligne des commandes a

et crontab�� les utilisateurs peuvent programmer le lancement automatique de processu

m�me lorsqu�il ne sont pas connect�s�

at sert � lancer une commande � un moment donn�� crontab est plus sp�cialemen

utilis� pour lancer des commandes � intervalles r�guliers �chaque jour par exemple��

Sans entrer dans les d�tails� voici des exemples standards (

at �f �fichier ���� am January ��

lance les commandes contenues dans �fichier �indiquez toujours un nom absolu�

� heures du matin le �� janvier�

at �l

a�che les commandes programm�es�

crontab fichier�cron

programme ce qui est indiqu� dans le �chier fichier�cron� Voici un exemple de conten

d�un tel �chier �voir le manuel en ligne pour plus d�explications� (

Lance �dumptout �f� tous les jours �sauf le lundi ' �h du matin

�� minutes( tous les jours du mois( tous les mois(

le dimanche �� et du mardi au vendredi ����

� � �(��� �usr�adm�dumptout �f

crontab �l

a�che les commandes programm�es�

crontab �e

permet de modi�er les commandes programm�es�

��� Gestion du plan d�un processus par le shell

La plupart des shells �mais pas sh� permettent de g�rer le plan o- se d�roule les pro

cessus �en arri�re�plan ou non�� Cette gestion est �tudi�e en ������

Page 27: Unix et programmation du shell Table des mati res

��CHAPITRE �� AFFICHER� IMPRIMER� ENVOYER LE CONTENU D�UN FICHIER

Chapitre �

A�cher� imprimer� envoyer le contenu

dun chier

��� A�cher le contenu d�un �chier� concat�ner plusieurs

�chiers �cat � Notion de redirection

cat ��nsv� �fichiers����

a�che le contenu des �chiers�

Si aucun �chier n�est sp�ci��� l�entr�e standard est prise par d�faut�

Options

�n num�rote les lignes

�s r�unit plusieurs lignes vides en une seule ligne

�v a�che les caract�res non visibles

Exemples �

�a� cat �etc�passwd

�b� cata�che �plus exactement� envoie sur la sortie standard� les lignes qui sont tap�es au

clavier� On termine en tapant Ctrl D qui est transform� en annonce de ��n de �chier�

par le driver de terminal� C�est surtout utile avec une redirection �voir ci�dessous��

Le nom de la commande vient de concat�ner car

cat fich� fich� �fich�

concat�ne �ch� et �ch� dans �ch�� ��� est un symbole de redirection �la sortie standard

est redirig�e vers �ch� * par d�faut� la sortie standard est l��cran�� Cette notion sera d�taill�e

en �����

La commande cat permet de cr�er des petits �chiers sans passer par un �diteur de

textes ���� est le prompt dans l�exemple suivant� (

� cat �nouveaufichier

ligne�

���� AFFICHER LES OCTETS D�UN FICHIER �OD �

ligne�)�� on tape la touche �Ctrl� D

cr�e �nouveaufichier� avec deux lignes de texte�

��� A�cher les octets d�un �chier �od

Cette commande ne sera pas �tudi�e ici mais il faut conna tre son existence pour le

cas o- l�on doit examiner le contenu des �chiers qui ne contiennent pas du texte a�chabl

emacs poss�de aussi le mode de travail �Hexl� qui permet de voir� et m�me de modi�e

les octets d�un �chier� On tape �M�x hexl��nd��le� pour charger le �chier binaire� On peu

aussi simplement passer en mode Hexl une fois que l�on a charg� un �chier dans un bu�e

��M�x hexl�mode���

��� A�cher page � page �more � Notion de pipe

more �fichiers����

a�che le contenu des �chiers page par page� Le �chier par d�faut est l�entr�e standard�

En bas de chaque page on dispose de plusieurs commandes (

h a�che la liste des commandes disponibles

�Retour� a�che une ligne de plus

�espace� a�che l��cran suivant

i�espace� a�che i lignes de plus

Ctrl B revient � la page pr�c�dente �ne marche pas si le 0ot de donn�e ne vient pa

d�un �chier ordinaire�

q ou Q sort de more

a�che le num�ro de la ligne en cours

�texte recherche un texte ( a�che un nouvel �cran qui commence � lignes avant l

��re ligne qui contient texte

n refait la derni�re recherche

�n va au �chier suivant

�f a�che le nom du �chier et le num�ro de la ligne

Gr&ce � un pipe �notion �tudi�e en ����� la commande more peut recevoir sur so

entr�e standard ce qu�une autre commande a envoy� vers la sortie standard� On peu

ainsi e�ectuer un a�chage page � page de ce qu�aurait a�ch� cette autre commande� Pa

exemple (

ls �l �bin � more

��� Sorties sur les imprimantes

Lorsque l�utilisateur lance l�impression d�un �chier� le contenu de ce �chier est envoy

dans une �le d�attente� Il sera imprim� lorsque le programme gestionnaire du spoule �tra

Page 28: Unix et programmation du shell Table des mati res

�CHAPITRE �� AFFICHER� IMPRIMER� ENVOYER LE CONTENU D�UN FICHIER

duction du terme anglais spool qui est d�ailleurs le plus souvent utilis�� le s�lectionnera�

Ce syst�me de spool permet de redonner la main tout de suite � l�utilisateur sans attendre

la �n de l�impression du contenu du �chier�

Il existe deux syst�mes d�impression ( lp �Unix Syst�me V� et lpr �Unix BSD�� Le

syst�me d�crit ici est le syst�me lpr� Avec le syst�me lp� la commande lp remplace la

commande lpr et la commande lpstat donne des informations sur le syst�me d�impression�

en particulier sur les noms des imprimantes� Les syst�mes Unix actuels disposent des deux

syst�mes d�impression et des passerelles sont souvent install�es par l�administrateur pour

laisser le choix � l�utilisateur ( un seul des deux syst�mes fonctionne mais les commandes

de l�autre syst�me sont disponibles �elles font appel au seul syst�me install� sans que

l�utilisateur s�en aper'oive��

����� Informations sur le systme d�impression �lpstat� printcap�

En Unix BSD� le �chier �etc�printcap contient les noms et descriptifs des impri�

mantes du syst�me� Sous Unix Syst�me V et OSF� la commande lpstat permet d�avoir des

informations sur le syst�me d�impression�

lpstat �options �

Options

�d donne l�imprimante par d�faut

�p statut des imprimantes et de la gestion des �les d�attente associ�es

�r �tat du d�mon d�impression

�s un r�sum� des pr�cedentes options

�t tout ce que vous avez toujours voulu savoir sur le syst�me d�impression

�v noms des imprimantes et des noms de �chiers sp�ciaux ou de machines

distantes associ�es

Exemple ��

Certaines de ces options peuvent �tre suivies de listes d�imprimantes� d�utilisateurs

ou d�identi�cateurs de requ�tes d�impression�

lpstat �p lp��(lp��

����� Lancement d�une requ�te d�impression �lpr�

lpr �options� �fichiers����

place une liste de �chiers dans la �le d�attente d�une imprimante� Un saut de page est

envoy� apr�s chaque �chier�

Si la liste de �chiers est vide� c�est l�entr�e standard qui est plac�e en �le d�attente �ce

qui permet d�utiliser lpr � la �n d�un pipe��

Dans tout syst�me� l�administrateur donne une imprimante par d�faut vers laquelle les

requ�tes sont dirig�es �imprimante de nom �lp��� La variable PRINTER peut contenir le

nom d�une autre imprimante� On peut aussi utiliser l�option �P�

Les options sont nombreuses et peuvent varier suivant la version du syst�me�

��� SORTIES SUR LES IMPRIMANTES �

Options

�Pimprimante dirige l�impression vers l�imprimante sp�ci��e

�h supprime la banni�re d�impression �premi�re page o- sont imprim�s le nom

de l�utilisateur qui a lanc� l�impression et diverses autres informations�

Exemples ��

�a� lpr �h �Plp� fichier

�b� ls �l � lpr �h

���� Informations sur les requ�tes d�impression �lpq�

lpq ��Pimprimante� �utilisateur�

a�che des renseignements �utilisateur� position dans la �le d�attente� nom du �chier

imprimer� identi�cateur de la requ�te� taille de ce qui sera imprim�� sur les requ�tes d�im

pressions actuellement en attente d��tre imprim�es�

Options

�Pimprimantelimitent les informations aux requ�tes envoy�es sur l�imprimante

utilisateur limitent les informations aux requ�tes lanc�es par utilisateur�

Exemple ��

lpq �Plp� jean

donne les informations sur les requ�tes envoy�es par jean sur l�imprimante lp��

����� Suppressions de requ�tes d�impression �lprm� cancel�

lprm ��Pimprimante� ��� �identificateur�requ�te�

permet � un utilisateur de supprimer une requ�te d�impression qu�il avait pr�c�demmen

lanc�e �si l�impression est d�j� commenc�e� elle est interrompue�� On ne peut supprime

les requ�tes d�un autre utilisateur �sauf si l�on est le super�utilisateur�� Si aucune optio

n�est sp�ci��e� la requ�te en cours d�impression est supprim�e sur l�imprimante par d�fau

si elle appartient � l�utilisateur qui a lanc� la commande lprm�

Options

�Pimprimantesupprime toutes les requ�tes que l�utilisateur a lanc�es sur imprimante

� supprime toutes les requ�tes que l�utilisateur a lanc�es

identi�cateur�requ�te

supprime la requ�te d��nie par son identi�cateur �on peut faire a�che

l�identi�cateur par la commande lpq �tudi�e en �������

Exemples ��

�a� lprm �Plp� ��

�b� lprm �

Page 29: Unix et programmation du shell Table des mati res

��CHAPITRE �� AFFICHER� IMPRIMER� ENVOYER LE CONTENU D�UN FICHIER

Si la commande lprm semble ne pas fonctionner� on peut essayer la commande cancel�

Par exemple� pour supprimer les requ�tes que l�utilisateur toto a envoy�es sur l�imprimante

lp�� on tapera (

cancel �u toto lp�

�� Envoyer le contenu d�un �chier �mail

Le plus simple pour envoyer par courrier �lectronique un �chier est d�utiliser la com�

mande mail avec une redirection de l�entr�e standard �voir ������� (

mail adresse �fichier

envoie le contenu de �chier � l�utilisateur d�sign� par adresse�

Le �chier doit �tre un �chier texte� Si on veut envoyer un �chier binaire� il faut le traiter

auparavant par uuencode �voir cours sur les r�seaux��

Exemple ��

mail �s �Fichier fich� toto�machine�unice�fr ) rep�fich

L�option ��s� permet de donner un sujet au message * elle n�est pas disponible sur

toutes les versions de la commande�

Nous ne d�crirons pas davantage la commande mail puisque nous utiliserons d�autres

commandes �netscape� xmh ou emacs� pour envoyer et recevoir du courrier �lectronique�

�� Mise en page �pr

pr �options� �fichiers����

met en forme les �chiers �longueur de ligne� longueur de page� en�t�te� ���� et envoie le

r�sultat vers la sortie standard� pr prend l�entr�e standard par d�faut si aucun �chier n�est

indiqu��

pr poss�de de nombreuses options que nous ne d�crirons pas ici�

��� Passer en Postscript �a�ps

a�ps �options�globales� ��options�partic�� fichiers����

passe le contenu d�un ou plusieurs �chiers �entr�e standard par d�faut� en Postscript�

C�est une commande tr�s utile pour imprimer le contenu de �chiers sur des imprimantes

Postscript� En particulier� les programmes informatiques sont souvent trait�s d�une fa'on

particuli�re par a�ps qui imprimera par exemple tous les mots�cl�s du langage en caract�res

gras�Attention� le fonctionnement standard d�pend des versions intall�es� en particulier pour

l�endroit o- est envoy� le Postscript g�n�r��

���� PASSER EN POSTSCRIPT �A�PS �

De plus� les noms des options peuvent changer avec les versions de a�ps� Heureusemen

l�une des options que l�on retrouve dans toutes les versions est l�option ��h� qui donne un

liste des options disponibles�

Les options globales permettent d�indiquer si le Postscript g�n�r� est envoy� sur l

sortie standard ou sur une certaine imprimante� s�il faut imprimer les �chiers binaires�

les pages auront une en�t�te� etc�

Les options particuli�res � chaque �chier �ou groupe de noms de �chiers qui suivent le

options� permettent d�indiquer si on veut une ou deux pages par feuille physique de papie

si on veut le mode de positionnement �portrait� ou �paysage� �sur la largeur de la pag

landscape en anglais�� etc� Il existe de tr�s nombreuses options� souvent tr�s utiles que l�o

aura int�r�t � lire dans le manuel en ligne�

Exemple ��

Sur la version de a�ps install�e aujourd�hui sur les stations Sun de l�universit� d

Nice� la commande suivante imprime le �chier truc�java sur l�imprimante par d�fau

deux pages par feuille en mode paysage (

a�ps truc�java � lpr

Pour imprimer une page par feuille en mode �portrait� (

a�ps �P �� truc�java � lpr

Page 30: Unix et programmation du shell Table des mati res

� CHAPITRE �� GESTION DES FICHIERS

Chapitre �

Gestion des chiers

Ce chapitre traite des commandes qui travaillent sur des �chiers ordinaires en les consi�

d�rant comme un tout� sans faire d�op�rations sur le contenu des �chiers�

��� Copier des �chiers �cp

cp ��ip� fichier� fichier�

copie le �chier ordinaire �chier sur le �chier ordinaire �chier��

L�utilisateur doit avoir l�autorisation de lecture sur le �chier �chier�

Si �chier� existe� l�utilisateur doit avoir l�autorisation d��criture dans ce �chier� Dans

ce cas� le contenu de �chier� est �cras� par celui de �chier� �chier� garde son propri�taire�

son groupe et ses autorisations�

Si �chier� n�existe pas� l�utilisateur doit avoir l�autorisation d��criture sur le r�pertoire

de �chier�� Dans ce cas� �chier� est cr�� et son propri�taire et son groupe sont ceux de

l�utilisateur et les autorisations sont celles de �chier �mais tient compte de la valeur du

masque de umask * voir ����

Options

�i fait a�cher un message de demande de con�rmation si �chier� existe d�j�

�p conserve les dates de modi�cation et d�acc�s� le propri�taire et le groupe� le mode

d�acc�s de �chier pour �chier� �ne tient pas compte du masque pour le mode

d�acc�s * voir ���

cp ��ip� fichiers��� r�pertoire

copie les �chiers dans le r�pertoire�

Exemples �

�a� cp fich jean�courrier

�b� cp fichier� fichier� jean

Remarque �

Si un des �chiers est un r�pertoire� cp envoie un message d�erreur mais les autres

�chiers sont copi�s �voir ���� pour la copie de r�pertoires��

���� LIENS AVEC M�ME NUM�RO DE I�NODE �LN

��� Liens avec m�me num�ro de i�node �ln

Un r�pertoire contient des liens qui r�f�rencent les �chiers plac�s �sous� le r�pertoir

Un �chier peut avoir plusieurs liens qui le r�f�rence� On peut ajouter un lien vers un �chie

dans un autre r�pertoire que le r�pertoire de cr�ation du �chier en utilisant la command

ln�Un lien permet de donner plusieurs noms � un m�me �chier physique� La cr�atio

d�un lien permet� par exemple� de partager une commande entre plusieurs utilisateurs san

dupliquer son contenu�

ln ��f� fichier� �fichier��

cr�e un lien �chier� ( �chier� sera un �chier qui aura le m�me i�node que �chier�

�chier doit d�j� exister et ne pas �tre un r�pertoire� Les deux �chiers doivent apparten

� un m�me syst�me de �chiers�

L�utilisateur doit avoir l�autorisation d��criture sur le r�pertoire de �chier�� L�autorisa

tion d��criture sur le �chier �chier� n�est pas n�cessaire �comme pour rm * voir ����

�chier� est optionnel� S�il n�est pas indiqu�� le lien se fait sur le �chier situ� dans

r�pertoire courant de m�me nom terminal que �chier�

L�option ��f� permet d��craser �chier� s�il existe d�j��

ln ��f� fichiers��� r�pertoire

cr�e des liens entre les �chiers et les �chiers situ�s sous le r�pertoire et de m�me nom

terminal que les �chiers� Les �chiers doivent appartenir � un m�me syst�me de �chiers qu

le r�pertoire� Les �chiers ne peuvent �tre des r�pertoires�

Remarques ��

�a� Quand un lien a �t� cr�� entre deux �chiers� les deux �chiers jouent ensuite un r�

sym�trique et il n�y a pas lieu de distinguer un �chier originel parmi tous ces �chier

�b� Tous les �chiers li�s ont le m�me i�node� Ceci implique que lorsque l�on modi�e

contenu ou les autorisations d�un �chier� tous les �chiers qui lui sont li�s sont modi��

de m�me� Le propri�taire� le groupe et les dates de derni�re modi�cation et de cr�atio

sont les m�mes pour tous les �chiers li�s correspondant � un m�me �chier physique

�c� La commande �ls �l� renverra un nombre de liens sup�rieur � � pour les �chier

ainsi li�s�

�d� Si on supprime un des deux �chiers par la commande rm� l�autre continuera � existe

avec un nombre de lien a�ch� par �ls �l� diminu� de ��

Exemples ��

�a� ln rep��fichier rep�

�b� ln rep��fichier rep��fichier�

Page 31: Unix et programmation du shell Table des mati res

� CHAPITRE �� GESTION DES FICHIERS

��� Liens symboliques �ln �s

Les liens �tudi�s dans la section pr�c�dente ont quelques limitations� En particulier�

les deux �chiers li�s doivent �tre plac�s dans un m�me syst�me de �chiers et les �chiers

auxquels on ajoute un lien �ceux que l�on r�f�rence� ne peuvent �tre des r�pertoires� Les

liens symboliques o�rent plus de souplesse�

Un lien symbolique est un �chier de type sp�cial qui contient le nom d�un autre �chier

auquel il est li�� Toutes les commandes usuelles qui contiendront le nom du lien symbolique�

travailleront en fait avec le �chier dont le nom est contenu dans le lien symbolique�

ln �s fichier� �fichier��

cr�e un lien symbolique �chier� qui se r�f�rera � �chier� �chier et �chier� peuvent �tre

des r�pertoires et ils peuvent appartenir � deux syst�mes de �chiers di��rents� �chier

peut m�me �tre supprim� ensuite �et dans ce cas� toute r�f�rence � �chier� provoquera une

erreur� ,

�chier peut �tre un r�pertoire�

�chier� est optionnel� S�il n�est pas indiqu�� le lien se fait avec le �chier situ� dans le

r�pertoire courant de m�me nom terminal que �chier�

On peut aussi indiquer un r�pertoire comme but �comme pour les commandes cp ou

mv� (ln �s fichiers��� r�pertoire

Exemple ��

ln �s �usr�new�emacs�emacs bin

cr�e un lien symbolique bin#emacs qui �pointe� sur #usr#new#emacs#emacs�

Remarques ��

�a� �ls �l fichier� d�un �chier �ou r�pertoire� qui est un lien symbolique� a�che le

nom du �chier sur lequel le �chier est li�� Si on veut les renseignements sur le �chier

point� �ou les sous��chiers du r�pertoire point��� il faut utiliser l�option �L de ls� Par

exemple� �ls �lL fichier�

�b� les autorisations sur un lien symbolique n�ont aucune signi�cation ( les droits r�els

sont ceux du �chier point��

�c� on fera attention de donner un nom absolu pour �chier� ou un nom relatif par

rapport au r�pertoire de �chier� pour que le �chier point� soit retrouv� lorsque le

syst�me utilisera le lien symbolique�

��� Supprimer des �chiers �rm

rm �options���� fichiers���

enl�ve le �chier de son r�pertoire�

���� D�PLACER� RENOMMER DES FICHIERS �MV

Cette commande n�cessite l�autorisation d��criture sur le r�pertoire du �chier mais pa

la lecture ou l��criture sur le �chier lui�m�me �mais si l�utilisateur n�a pas l�autorisatio

d��criture sur le �chier� une con�rmation est demand�e��

Options

�f pas de demande de con�rmation quand on n�a pas l�autorisation d��criture sur

�chier� renvoie un code retour � �tout s�est bien pass�� m�me si un des �chier

n�existe pas

�r d�truit tout le contenu d�un r�pertoire et le r�pertoire lui�m�me

�i demande de con�rmation pour chaque �chier �ou r�pertoire avec l�option �r�

Exemple ��

rm �fr l

Attention � ne pas glisser par m�garde un espace entre le �l� et le ���� On se m��er

aussi des claviers dont la touche �l� ne fonctionne pas bien , Il est prudent de lire su

l��cran la commande tap�e avant de la lancer�

�� D�placer� renommer des �chiers �mv

mv fich� fich�

renomme �ch en �ch�� Le �chier peut changer de r�pertoire � cette occasion�

mv fichiers��� r�pertoire

les �chiers passent sous r�pertoire� Ils gardent le m�me nom terminal�

Exemples ��

�a� mv fichier� rep�fichier�

�b� mv jean�fich� jean�fich� pierre

�� Sauvegarder sur les lecteurs de disquettes des sta

tions Sun

Certaines stations Sun de l�universit� de Nice ont des lecteurs de disquettes compatible

avec les lecteurs install�s sur les ordinateurs compatibles PC� Les utilisateurs peuvent ain

recopier sur des disquettes des programmes r�cup�r�s sur le r�seau Internet ou leurs �chier

de travail pour les emmener sur leur PC personnel�

Les sauvegardes sont e�ectu�es r�guli�rement par l�administrateur du syst�me su

bandes ou autres supports� Pour les �chiers importants� deux pr�cautions valent mieu

qu�une et on peut faire ses propres sauvegardes si on a acc�s � des stations Sun�

Les commandes qui permettent de travailler avec les disquettes sont les commande

mcopy� mdir� etc� �chercher toutes les commandes dont le nom commence par �m� dans

r�pertoire contenant la commande mcopy�� De plus� la commande eject permet d��jecte

la disquette du lecteur� On pourra consulter le manuel en ligne pour plus de d�tails�

Page 32: Unix et programmation du shell Table des mati res

� CHAPITRE �� GESTION DES FICHIERS

��� Compression et d�compression �zip� gzip� compress

Ces trois commandes permettent de compresser les �chiers� On peut ainsi archiver des

�chiers non utiliser actuellement en sauvegardant de la place� La commande zip se trouve

sur PC MS�DOS et sur Unix�

Pour compresser des arborescences �tout le contenu d�un r�pertoire et de ses sous�

r�pertoires� on pourra utiliser la commande tar �voir �����

Consultez les manuels en ligne de ces commandes pour plus de pr�cisions�

Chapitre ��

Travail sur les r�pertoires

Les commandes principales de gestion des �chiers que l�on a vu au chapitre pr�c�den

permettent de travailler sur les r�pertoires� Ce chapitre indique seulement les options o

fonctionnalit�s li�es aux r�pertoires� La plupart des options d�j� vues �par exemple le

options �i de cp ou �f de rm� sont toujours valables pour les r�pertoires�

���� Cr�er un r�pertoire �mkdir

mkdir ��p� r�pertoires���

cr�e les r�pertoires indiqu�s�

On doit avoir l�autorisation d��criture dans le r�pertoire p�re�

En l�absence de masque donn� par la commande umask �voir ���� les autorisations su

le nouveau r�pertoire sont ����

L�option � 5�p� cr�e les r�pertoires interm�diaires si besoin est�

���� Supprimer un r�pertoire �rmdir� rm �r

rmdir r�pertoires���

supprime les r�pertoires indiqu�s� Les r�pertoires doivent �tre vides�

Un autre moyen de supprimer un r�pertoire (

rm �r r�pertoires���

supprime les r�pertoires et toute l�arborescence dont ils sont la �racine��

ATTENTION , rm �r � supprime tout le r�pertoire de travail�

���� Changer le nom d�un r�pertoire �mv

mv r�pertoire� r�pertoire�

Page 33: Unix et programmation du shell Table des mati res

CHAPITRE ��� TRAVAIL SUR LES R�PERTOIRES

Autoris� seulement si les � r�pertoires ont le m�me parent en Unix Syst�me V� Unix

BSD l�autorise si les deux r�pertoires sont dans le m�me syst�me de �chiers�

Exemple �

mv �users�students�jean �users�students�jp

���� Copier l�arborescence d�un r�pertoire �cp �r

cp �r r�pertoire� r�pertoire�

copie toute l�arborescence de r�pertoire sous r�pertoire��

L�endroit o- seront copi�s les �chiers d�pend de l�existence du r�pertoire r�pertoire��

Si celui�ci n�existe pas� il sera cr�� et il correspondra � r�pertoire� Sinon� les nouveaux

�chiers se retrouveront sous le r�pertoire situ� dans le r�pertoire r�pertoire� et de m�me

nom terminal que le nom terminal de r�pertoire�

Exemples ��

�a� cp �r toto�rep �

cr�e �s�il n�existe pas d�j�� un r�pertoire �rep� sous le r�pertoire courant et copie les

�chiers de l�utilisateur �toto� sous ce r�pertoire

�b� cp �r toto�rep�� �

copie les �chiers de �rep� directement sous le r�pertoire courant

Remarque �

La commande suivante copie les �chiers plac�s directement sous un r�pertoire rep�

dans un r�pertoire rep��

cp rep�� rep��� rep�

Les sous�r�pertoires ne seront pas copi�s et engendreront des messages d�erreurs�

��� Lien symbolique �ln �s

Un lien symbolique peut pointer un r�pertoire� Ceci permet d�obtenir une con�guration

attendue par un logiciel� Par exemple� beaucoup de logiciels du domaine public travaillent

par d�faut avec des sous�r�pertoire de �usr�local� Un lien sur ces r�pertoires peut �viter de

modi�er les �chiers de con�guration des logiciels lorsque c�est impossible ou trop complexe�

Exemple ��

Supposons que le syst�me de �chier qui contient le r�pertoire �usr�local n�a pas

assez de place pour accueillir dans �usr�local�rep� tous les �chiers n�cessaires au

fonctionnement d�un logiciel� Si le param�trage du logiciel pour lui indiquer de cher�

cher les �chiers � un autre endroit que �usr�local�rep� est impossible ou complexe�

on peut installer les �chiers dans le repertoire �usr�local��rep� et taper (

����� PLIAGE DE R�PERTOIRES EN UNE SEUL FICHIER �TAR� CPIO

ln �s �usr�local��rep� �usr�local�rep�

Si le r�pertoire �usr�local�rep� existe d�j�� on cr�era des liens symboliques sou

le r�pertoire �usr�local�rep� pour tous les �chiers de �usr�local��rep� qui son

concern�s * par exemple� pour fichier� (

ln �s �usr�local��rep��fichier� �usr�local�rep�

��� Pliage de r�pertoires en une seul �chier �tar� cpio

La commande tar peut �plier� un r�pertoire en un seul �chier� Tous les �chiers d

r�pertoire sont alors r�unis en ce �chier� Le transfert des �chiers sur le r�seau et leu

archivage en est facilit�� surtout si on compacte le �chier r�sultat�

Cette commande poss�de de nombreuses options� On ne donne ici que les options prin

cipales sur des exemples simples�

tar cvf fichier�tar rep

cr�e le �chier fichier�tar qui contiendra tous les �chiers des �chiers indiqu�s� Si u

�chier indiqu� est un r�pertoire �comme ici rep�� toute l�arborescence du r�pertoire es

pli�e dans le �chier dont le nom compl�te l�option �f� �l�option �v� est l�option �verbeuse�

Il est fortement conseill� d�utiliser un nom relatif pour les �chiers pli�s car on peut ain

r�cup�rer les �chiers �par �tar x�� � un autre endroit�

tar tvf fichier�tar

liste les noms des �chiers pli�s dans le �chier fichier�tar�

tar xvf fichier�tar

r�cup�re tous les �chiers pli�s dans fichier�tar�

tar xvf fichier�tar f� f�

r�cup�re tous les �chiers pli�s dans �chier�tar qui ont pour nom f� ou f��

La commande cpio permet aussi l�archivage de �chiers� Elle ne sera pas �tudi�e ici�

Page 34: Unix et programmation du shell Table des mati res

� CHAPITRE ��� EXPRESSIONS R�GULI�RES

Chapitre ��

Expressions r�guli�res

Ces expressions sont utilis�es par plusieurs commandes * en particulier par more� emacs�

grep� ed� sed� awk� perl �� Ce sont des cha nes de caract�res qui repr�sentent des mod�les

pour des cha nes de caract�res� Certains caract�res ont des signi�cations particuli�res�

Toutes les commandes qui utilisent les expressions r�guli�res ne reconnaissent pas toutes

les expressions� Les commandes grep� more et emacs travaillent avec le noyau minimum

d�expressions r�guli�res qui sont pr�sent�es dans ce chapitre� Il existe d�autres types d�ex�

pressions r�guli�res� Pour conna tre exactement les expressions reconnues par une com�

mande� il faut se r�f�rer au manuel de r�f�rence� ou faire des tests��� De plus� les di��rentes

versions d�une commande �par exemple la commande grep� ne reconnaissent pas le m�me

ensemble d�expressions r�guli�res�

Attention � ne pas confondre les expressions r�guli�res qui ne sont reconnues que par

certaines commandes avec les expressions qui contiennent des caract�res sp�ciaux interpr��

t�s par le shell �voir ��� et qui sont donc reconnues dans toutes les lignes de commandes�

���� Expressions r�guli�res repr�sentant un seul carac�

t�re

Un caract�re ordinaire se d�signe par lui�m�me� Les expressions r�guli�res peuvent

aussi contenir des caract�res sp�ciaux� Les expressions r�guli�res suivantes d�signent un

seul caract�re * elles sont reconnues par toutes les commandes (

n suivi d�un autre caract�re d�signe ce caract�re� Il permet d�enlever le sens sp�cial

des caract�res comme �� �� � et ��

! plac� en d�but d�expression� d�signe un d�but de ligne�

" plac� en �n d�expression� d�signe une �n de ligne�

� �le point� d�signe n�importe quel caract�re except� le passage � la ligne ��quiva�

lent de � du langage de commande��

�� cette commande n�est pas tudie dans ce cours

����� EXPRESSIONS R�GULI�RES REPR�SENTANT UN ENSEMBLE DE CARACT

�cha�ne�d�signe n�importe quel caract�re de la cha ne� On peut d�signer plusieurs ca

ract�res contigus � l�aide de ���� Si le premier caract�re de la cha ne est ��

l�expression d�signe n�importe quel caract�re qui n�est pas dans la cha ne�

Exemples

�a� �abd�signe la cha ne �ab� plac�e en d�but de ligne�

�b� �����

d�signe un chi�re quelconque�

�c� �adh�lA�Z�

d�signe a ou d ou une lettre minuscule comprise entre h et l� ou une lettre majuscule

�d� ������

d�signe n�importe quel caract�re qui n�est pas un chi�re�

�e� ���d�signe une ligne qui commence par un point�

�f� ��d�

d�signe un ��� ou un �d��

���� Expressions r�guli�res repr�sentant un ensemble d

caract�res d�un seul type

4 partir des expressions r�guli�res correspondant � un seul caract�re �et seulement

partir de ces expressions�� on peut construire les expressions r�guli�res suivantes (

une expression ci�dessus suivie du caract�re ��� d�signe � ou plus occurrences de

caract�res d�sign�s par l�expression� S�il y a plusieurs possibilit�s� l�expressio

d�signe la plus longue cha ne � partir de la gauche qui permette de trouver un

cha ne correspondant � l�expression r�guli�re� La signi�cation de � di��re don

de la signi�cation habituelle lors de l�interpr�tation des commandes par le shel

$ et � certaines commandes� �mais pas toutes les versions de grep� donnent un sen

particulier aux caract�res �1� et ��� (

� d�signe � ou � occurrence des caract�res d�sign�s par l�expression qui pr�c�de

$ d�signe � ou plusieurs occurrences des caract�res d�sign�s par l�expression qu

pr�c�de�

Pour les commandes qui ne reconnaissent pas le �1�� on peut le simuler * pa

exemple� �xx � peut remplacer �x$��

Page 35: Unix et programmation du shell Table des mati res

� CHAPITRE ��� EXPRESSIONS R�GULI�RES

n# et n$ certaines commandes �mais pas toutes les versions de grep� permettent de don�

ner encore plus de pr�cision sur le nombre d�occurrences ( on peut faire suivre une

expression r�guli�re par �m et n sont des entiers compris entre � et �� (

n#mn$ pour indiquer exactement m occurrences

n#m�n$ pour indiquer au moins m occurences

n#m�nn$ pour indiquer entre m et n occurrences �bornes comprises�

Exemples �

�a� ��a�zA�Z�

d�signe la plus longue cha ne de lettres � partir du d�but de la ligne * si la ligne

contient �Bonjour Monsieur�� c�est �Bonjour� qui est d�sign��

�b� ������!��"

d�signe un nombre de � chi�res�

���� Autres expressions r�guli�res

On peut construire des expressions r�guli�res � partir d�autres expressions r�guli�res (

concat�nation

la concat�nation d�expressions r�guli�res d�signe la concat�nation des cha nes

d�sign�es par chacune des expressions r�guli�res�

Exemple �

������!��"A� T�

d�signe une cha ne qui commence par � chi�res suivis de la lettre A et qui se termine

par la lettre T � la �n de la ligne�

n����n� et nnLes commandes grep �cela d�pend des versions� et awk permettent de d�signer

des sous�cha nes de caract�res � l�aide des deux types d�expressions suivants (

n�expressionn� d�signe la m�me chose que l�expression elle�m�me �voir utilit�

ci�apr�s�

nn o- n est un entier d�signe la cha ne de caract�res qui correspond � la ni�eme

expression entour�e pr�c�demment par �� et ��

Exemples �

�a� ���� ����

d�signe une ligne form�e d�une cha ne r�p�t�e � fois�

�b� who � grep*�����a�z����*� ��*�

a�che des informations sur les utilisateurs connect�s � la machine locale et dont le

nom de login commence et se termine par la m�me lettre minuscule ��*� d�signe un

espace��

����� AUTRES EXPRESSIONS R�GULI�RES

Des possibilit�s suppl�mentaires sont utilis�es par certaines commandes et en particulie

par la commande awk �mais g�n�ralement pas par ed ou grep� (

expression�jexpression�

d�signe une cha ne correspondant � la ��ere ou � la ��eme expression�

����� les parenth�ses permettent de modi�er l�ordre de priorit� des op�rateurs� L�ordr

de priorit� est � et �� puis � $ et �� puis la concat�nation et en�n ��

Page 36: Unix et programmation du shell Table des mati res

� CHAPITRE ��� �DITEUR DE TEXTE �EMACS� XEMACS

Chapitre ��

�diteur de texte �emacs� xemacs�

Pour �crire des textes �programmes ou donn�es� sous Unix� il faut disposer d�un pro�

gramme qui permette d�entrer du texte et de le modi�er sans �tre oblig� de tout retaper�

Les programmes qui font ce genre de travail s�appellent des �diteurs de textes� Ils poss�dent

de nombreuses commandes qui facilitent la t&che de l�utilisateur ( recherche de cha nes de

caract�res dans un texte� remplacement automatique de cha nes par une autre� copie� sup�

pression de partie de texte� etc�

L��diteur emacs est un �diteur pleine page tr�s puissant� L��diteur pleine page le plus

commun sous Unix est vi mais il est moins agr�able � utiliser que emacs� moins puissant

et moins souple�

Une caract�ristique essentielle de emacs est qu�il est possible �et pas trop complexe� de

personnaliser son fonctionnement en a�ectant des valeurs � des variables d�environnement

ou m�me en programmant des nouvelles fonctionnalit�s�

Nous ne donnerons ici que les commandes essentielles de emacs� su�santes pour com�

mencer � �crire des programmes et des textes simples sous Unix� La version d�crite est la

version � avec quelques ajouts pour la version ��� Cette derni�re version o�re de nom�

breuses facilit�s pour travailler avec des langues non europ�ennes et pour con�gurer plus

simplement emacs�

xemacs est une version d�emacs plus graphique mais moins standard� Il poss�de beau�

coup de points en commun avec emacs mais certains points sont incompatibles� Nous ne

l��tudierons pas dans ce cours mais xemacs est disponible sur la plupart des machines de

l�universit� de Nice�

���� Entr�e et sortie

������ Lancer emacs

emacs ��q� �fichier� +

lance la version X Window de emacs� Comme tous les clients X� il faut lancer emacs en

arri�re�plan pour garder la possibilit� de travailler dans la fen�tre X d�origine� Dans un

����� CONCEPTS DE BASE

environnement X Window� emacs est lanc� dans sa propre fen�tre X�

Le noyau d�emacs charge en m�moire de nombreux modules �crits en elisp pour �tendr

ses fonctionnalit�s� Il faut indiquer � l��diteur o- aller chercher ces modules� Si on ut

lise un seul �diteur de la famille emacs� on peut utiliser la variable d�environnemen

EMACSLOADPATH� Pour cela� on ajoutera� par exemple� les lignes suivantes dans le �chie

�zshrc �voir ������ (

export EMACSDIR%�usr�local�emacs������

export EMACSLOADPATH%�HOME�emacs��EMACSDIR�site�lisp��EMACSDIR�lisp

Attention� emacs et xemacs utilisent des variantes di��rentes de certains modules� O

�vitera d�utiliser la variable EMACSLOADPATH si on utilise les deux �diteurs� Dans ce cas�

langage elisp permet de donner des valeurs di��rentes selon le type� et m�me la versio

de l��diteur qui lit le �chier �emacs� L��criture d�un �chier �emacs ne fait pas partie d

ce cours * r�cup�rez des exemples d�j� �crits de �chiers �emacs et#ou lisez le manuel d

langage si vous �tes int�ress�s�

Le �chier �emacs du r�pertoire HOME de l�utilisateur est ex�cut� automatiquement a

d�marrage d�emacs� Si on ne veut pas qu�il s�ex�cute �par exemple si ce �chier contient de

erreurs�� on lance emacs avec l�option �q�

������ Sortir de emacs

Sous X Window� le menu �File� permet de sortir de emacs�

C�x C�c permet de sauvegarder �apr�s demande de con�rmation� les bu�ers avant d

sortir�

���� Concepts de base

������ Description d�une fen�tre emacs

Une fen�tre a�ch�e par emacs est compos�e de (

) une barre de menus �seulement pour les versions sous graphiques en haut de la fen�tr

) la fen�tre de travail proprement dite o- s�a�che le bu�er courant� sous la barre d

menus�

) la ligne d�information� situ�e sous la fen�tre de travail�

) le �mini�bu�er� se trouve en bas de la fen�tre * il contient en g�n�ral une seule lign

Dans la version X Window� un ascenseur borde la droite de la fen�tre de travail�

Page 37: Unix et programmation du shell Table des mati res

� CHAPITRE ��� �DITEUR DE TEXTE �EMACS� XEMACS

Menus de la version graphique �X Window�

Si on travaille dans l�environnement graphique �X Window� Windows ou autre�� le

haut de l��cran est occup� par une ligne de noms de menus (

Bu�ers permet de choisir son bu�er de travail

File permet de charger� sauvegarder un �chier� ouvrir une nouvelle fen�tre� imprimer

ou supprimer un bu�er� sortir de emacs

Edit permet de copier� couper� coller� d�faire l�e�et d�une commande� remplir avec le

plus de mots possible les lignes d�une r�gion ��Fill��

Help permet d�obtenir de l�aide sur emacs ou une commande Unix

De nombreux modes de travail �voir ������ modi�ent ces menus ou ajoutent de nou�

velles entr�es�

Ligne d�information sur le mode de travail

La derni�re ligne en bas de l��cran contient quelques indications utiles � l�utilisateur (

�� �Emacs � nom�buffer �mode majeur mineur��L�����position��������

Les ���� indiquent que le bu�er a �t� modi�� �on peut aussi avoir ++ qui indique que

le bu�er est �readonly���

mode majeur et mode mineur sont les modes de travail �voir �������

�L���� d�signe le num�ro de la ligne courante�

�position� peut �tre All� Bot� Top ou nn+ suivant que tout le texte est a�ch� ou

seulement la �n ou le d�but� ou si nn+ du texte est au dessus de la premi�re ligne a�ch�e�

Mini�bu%er

Les commandes tap�es par l�utilisateur et les messages envoy�s par emacs sont a�ch�s

sous la ligne d�information dans une zone appel�e minibu�er�

On peut annuler une commande en cours et a�ch�e dans ce minibu�er en tapant C�g�

������ Commandes et associations de cl�s

Touches sp�ciales

emacs fait un grand usage de deux touches sp�ciales not�es �C�� et �M�� dans le manuel

d�utilisation�

�C�� d�signe la touche �Ctrl%� Taper �C�x� revient � appuyer sur la touche �Ctrl%� et

� appuyer sur la touche �x� tout en gardant la touche �Ctrl% enfonc�e� Le maintien sur la

touche �Ctrl% est indiqu� par le ��� qui suit le �C�� �M�� d�signe la touche �Meta� On l�utilise

de la m�me mani�re que la touche �Ctrl%�

Pour les claviers qui n�ont pas de touche �Meta%� la touche �Alt% �ou la touche marqu�e

d�un ��� sur les claviers des machines Sun� joue souvent le m�me r�le� Sinon� on peut

simuler M�x en tapant sur la touche �Esc% avant de taper sur la touche x� Les commandes

����� CONCEPTS DE BASE

indiqu�es par C�M� dans le manuel s�obtiennent alors en tapant d�abord �Esc% puis �Ctr

et le caract�re suivant �et non pas l�inverse��

Commandes emacs

Toutes les actions sous emacs sont ex�cut�es par des commandes dont le nom rappel

le type de l�action ex�cut�e (

next�line

load�file

kill�word

goto�line

save�buffers�kill�emacs

L�utilisateur peut lancer ces commandes par leur nom en les pr��xant avec M�x� Pa

exemple�

M�x kill�word

Associations de cl�s

Les actions les plus couramment employ�es sont associ�es � des cl�s �combinaisons d

touches du clavier�� Il su�t de taper la cl� pour lancer la commande associ�e� Voici deu

exemples (

Commande Cl�

next�line C�n

save�buffers�kill�emacs C�x C�c

Les autres commandes comme �goto�line� doivent �tre lanc�es avec M�x�

Les associations ��bindings�� peuvent �tre modi��es �voir ����� et peuvent d�pendre d

mode de travail �voir �������

Compl�ter automatiquement des noms de commandes

Certaines commandes ont des noms assez longs �par exemple �goto�line��� Il exist

des facilit�s pour ne pas �tre oblig� de taper les noms en entier ( on tape �Tab% �touch

de tabulation� d�s que le nom de la commande peut se distinguer des autres noms d

commandes * si on tape �ESP% �barre d�espace�� emacs compl�te un mot d�s que ce mot s

distingue des autres mots cl�s� Pour l�exemple de �goto�line�� il su�t de taper �g� suivi d

�ESP% pour avoir goto� et �l� suivi de �TAB%� Pour entrer une tabulation ou un espace�

su�t de les faire pr�c�der de C�q�

Si emacs ne peut compl�ter parce qu�il y a plusieurs possibilit�s de compl�tions� il a�ch

une fen�tre d�aide o- sont a�ch�es toutes les suites possibles� On peut alors parcourir cett

fen�tre par C�M�v� On peut choisir une des commandes en cliquant sur son nom avec

Page 38: Unix et programmation du shell Table des mati res

CHAPITRE ��� �DITEUR DE TEXTE �EMACS� XEMACS

bouton du milieu de la souris� Cette fen�tre se referme automatiquement quand on lance

la commande compl�te�

De m�me� les noms de �chiers tap�s dans le mini�bu�er �par exemple pour donner

le nom d�un �chier � charger dans un bu�er� peuvent �tre compl�t�s par emacs quand

l�utilisateur tape la touche �Tab% ou la barre d�espace�

����� Bu�ers et fen�tres

Tampon �ou bu%er�

Chaque texte �dit� est conserv� en m�moire centrale dans un bu�er� Plus g�n�rale�

ment� toute activit� de emacs �aide en ligne� courrier �lectronique� etc�� est e�ectu�e dans

un bu�er�

On peut travailler avec plusieurs bu�ers en m�me temps� Chaque bu�er a un nom� Le

nom d�un bu�er associ� � un �chier est le nom terminal du �chier� Si on travaille avec

plusieurs �chiers qui ont le m�me nom terminal� un num�ro est accol� � la �n du nom du

bu�er�Sous X Window� le menu �Bu�ers� permet de choisir un bu�er�

Fen&tre emacs

emacs ouvre une premi�re fen�tre au d�marrage�

Par la suite l�utilisateur peut diviser cette fen�tre en plusieurs sous�fen�tres� Une fen�tre

emacs visualise une portion de bu�er et permet de travailler avec les donn�es a�ch�es�

Deux fen�tres peuvent visualiser des portions di��rentes d�un m�me bu�er ou visualiser

des bu�ers di��rents�

Le menu �File� permet de g�rer les fen�tres ( �Split Window � pour d�couper la fen�tre

en cours en deux� ou �One Window � pour fermer toutes les fen�tres sauf une �pour cela�

on peut aussi� dans les versions graphiques cliquer avec le bouton du milieu de la souris

sur la ligne d�information de la fen�tre choisie��

On peut acc�der � une fen�tre en cliquant avec le bouton gauche dans la fen�tre�

Fen&tre X �'frame( dans le manuel en anglais�

Sous X Window� l�utilisateur peut ouvrir une nouvelle fen�tre X pour y a�cher le bu�er

courant� Il peut ensuite y charger un autre bu�er ou y visualiser une autre partie du bu�er

courant comme il le ferait pour une fen�tre emacs�

Chaque fen�tre X poss�de son propre menu�

Pour ouvrir une nouvelle fen�tre X� le plus simple est d�utiliser le menu �File�� choix

�Make New Frame�� La fen�tre peut �tre ferm�e par le m�me menu� choix �Delete Frame��

����� CONCEPTS DE BASE

������ Point d�insertion� marque� r�gions

Point d�insertion

Le point d�insertion indique l�endroit o- les modi�cations apport�es au texte par l�ut

lisateur seront e�ectu�es �insertion de nouveaux caract�res� suppression������ Le point es

situ� entre deux caract�res� Il est indiqu� sur l��cran par un curseur a�ch� sur la positio

qui suit le point�

Chaque tampon a un point d�insertion�

R�gionLa r�gion est la zone de texte comprise entre le point d�insertion et la marque�

La marque peut �tre positionn�e dans le texte en tapant C�6barre d�espace7ou impl

citement par des manipulations de la souris�

C�x h met tout le texte du document comme r�gion

M�h met tout le paragraphe comme r�gion

Utilisation de la r�gion et de l�anneau de suppression

Plusieurs commandes permettent de manipuler une r�gion �une zone de texte� et d

l�enregistrer dans un �anneau de suppression��

emacs conserve dans un �anneau de suppression� �commun � toutes les fen�tres� le

textes supprim�s par les commandes qui suppriment plus d�un seul caract�re �C�k� C�

mais pas C�d� �DEL% ou �Backspace%�� La commande M�w permet aussi d�ajouter des texte

� cet anneau sans les supprimer (

C�w supprime la r�gion �attention au w trompeur ,� et la place dans l�anneau de sup

pression

M�w enregistre la r�gion dans l�anneau de suppression

L�utilisateur peut ensuite r�utiliser les textes ainsi conserv�s (

C�y colle le dernier texte plac� dans l�anneau de suppression � l�endroit du poin

d�insertion

M�y remplace le texte pr�c�demment coll� par le texte plac� juste avant dans l�annea

de suppression� On peut ainsi passer en revue tous les textes conserv�s jusqu�

trouver le texte que l�on veut�

Dans un environnement X Window� on peut utiliser le menu �Edit� pour supprime

copier ou coller une r�gion� On peut aussi utiliser la souris (

Double�clic sur le bouton gauche

enregistre le mot point� par la souris dans l�anneau de suppression

Triple�clic sur le bouton gauche

enregistre la ligne point�e dans l�anneau de suppression

Bouton du milieu

colle � l�endroit du clic un texte pr�c�demment copi� ou coup� �idem C�y�

Page 39: Unix et programmation du shell Table des mati res

� CHAPITRE ��� �DITEUR DE TEXTE �EMACS� XEMACS

Bouton droit

copie le texte plac� entre le point et l�endroit du clic pour �tre coll� ensuite �idem M�w��

Si on clique � fois� le texte est coup� au lieu d��tre copi� �idem C�w��

�Glisser� �drag en anglais�

�c�est���dire� cliquer et se d�placer en maintenant un bouton de la souris enfonc�� avec le

bouton gauche� du d�but � la �n d�un texte� permet de d��nir une r�gion et de l�enregistrer

dans l�anneau de suppression�

������ Mode de travail

Emacs permet de travailler en plusieurs modes de travail adapt�s au type de texte que

l�on tape et au type de travail auquel ce bu�er est associ�� Il existe par exemple un mode

de travail pour �crire un programme en langage C et des modes pour envoyer et recevoir

du courrier �lectronique depuis emacs�

Chaque fen�tre emacs a un mode de travail majeur en cours�

On peut aussi lancer des modes �mineurs� qui modi�ent l�g�rement le fonctionnement

des modes majeurs�

Nous n��tudierons pas ces modes dans ce cours� Voici seulement une description rapide

du mode �dired� qui peut �tre tr�s utile�

On entre dans ce mode �directory edition� soit en �ouvrant� un �chier r�pertoire au

lieu d�un �chier ordinaire� soit en appelant explicitement le mode par la commande �M�x

dired�mode��

Ce mode est tr�s pratique pour se d�placer dans l�arborescence ( on clique avec le bouton

du milieu sur le nom du r�pertoire o- l�on veut aller ou sur le �chier que l�on veut charger

dans un bu�er� Dans ce cas� l�a�chage se fait dans une deuxi�me fen�tre� Si on tape �f�

sur la ligne qui contient le curseur� l�a�chage se fait dans la m�me fen�tre�

On peut aussi copier et supprimer des �chiers� On se reportera � l�aide en ligne d�emacs

et aux menus o�erts par ce mode pour en savoir plus�

���� Commandes

��� �� Commandes de base

Insertion

Par d�faut emacs est en mode insertion ( tout caract�re non sp�cial �a�chable� tap� est

ins�r� � l�endroit du point�

C�q permet d�ins�rer un caract�re non a�chable tap� � la suite

Suppression

Backspace supprime le caract�re avant le point

C�d supprime le caract�re situ� apr�s le point �donc plac� sous le curseur�

����� COMMANDES

C�k e�ace la �n de la ligne �situ�e apr�s le point� et la place dans l�anneau de sup

pression

D�placer le point d�insertion

Les terminaux sont souvent con�gur�s pour que l�utilisateur puisse utiliser les 0�che

pour se d�placer d�un caract�re ou d�une ligne et les touches �Next% et �Prev% pour s

d�placer d�un �cran�

On peut aussi utiliser les commandes ci�dessous (

C�a va au d�but de la ligne

C�e va � la �n de la ligne

M�� va au d�but du �chier

M�� va � la �n du �chier

Dans un environnement X Window�

Bouton gauche

d�place le point � l�endroit du clic

On peut aussi utiliser la barre de d��lement pour se d�placer�

Barre de d��lement ou 'ascenseur( �Scroll Bar�

Toutes les fen�tres X Window associ�es � emacs poss�dent une barre de d��lemen

verticale � droite de la fen�tre� Cette barre repr�sente tout le texte� Un rectangle intern

plus ou moins long� repr�sente la portion du texte actuellement a�ch�e�

On utilise la souris pour se d�placer dans le texte � l�aide de cette barre� Les utilisateur

de Windows sur PC ou du Macintosh remarqueront que la manipulation de la barre d

d��lement est di��rente sous emacs� Cette manipulation est identique � la manipulatio

des ascenseurs sous le client X Window xterm �voir cours sur X Window��

Bouton gauche

d�place en haut de la fen�tre la ligne en face de laquelle on a cliqu�� Le texte est don

d�plac� vers la �n du �chier d�au plus un �cran� Plus on clique bas� plus on avance dans

texte�Bouton du milieu

d�place � l�endroit du clic le rectangle interne � la barre de d��lement� Le texte a�ch� es

le texte correspondant � la position nouvelle du rectangle interne� Si on veut se d�place

vers la �n du �chier� on clique donc sous le rectangle interne�

On peut aussi cliquer sur le rectangle interne de l�ascenseur avec ce bouton et glisser pou

se d�placer contin.ment dans le texte�

Bouton droit

d�place � l�endroit du clic la ligne plac�e en haut de la fen�tre� Le texte est donc d�plac

vers le d�but du �chier d�au plus un �cran� Plus on clique bas� plus on remonte dans

texte�

Page 40: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� �DITEUR DE TEXTE �EMACS� XEMACS

Sauvegarder un �chier

Les �chiers charg�s dans un bu�er ne sont modi��s que lorsque l�utilisateur indique

explicitement qu�il veut sauvegarder les modi�cations qu�il a e�ectu�es sur le bu�er�

C�x C�s sauvegarde le bu�er courant

Sous X Window le menu �File� permet aussi de sauvegarder les �chiers sous son nom

actuel �Save Bu�er� ou sous un autre nom �Save Bu�er As��

Remarque �

L�ancienne version du �chier �s�il ne s�agit pas d�un nouveau texte� est conserv�e sous

l�ancien nom suivi du caract�re ���

emacs e�ectue des sauvegardes automatiques � intervalles r�guliers� Ces sauvegardes

sont e�ectu�es dans des �chiers dont le nom est le nom du �chier modi�� entour� du

caract�re � �� Ces sauvegardes sont supprim�es en cas de �n d��dition normale� S�il y a eu

une sortie anormale d�emacs et si vous n�avez pu sauvegarder vos �chiers� ces sauvegardes

automatiques vous permettent de r�cup�rer les bonnes versions de vos �chiers� De plus�

si vous voulez charger un des �chiers qui n�a pu �tre sauvegard� normalement et si emacs

s�aper'oit qu�il y a un �chier � � plus r�cent que le �chier que vous voulez charger� emacs

vous envoie le message �Auto save �le is newer* consider M�x recover��le�� Vous pouvez

alors taper �M�x recover��le� et r�cup�rer automatiquement la version enregistr�e dans la

sauvegarde automatique�

AideSous X Window� le menu �Help� permet d�acc�der ais�ment � toutes les aides n�ces�

saires�

D�faire �'undo(�

Si l�utilisateur s�est tromp� il peut annuler la plupart des commandes qu�il a tap��

Sous X Window� il peut utiliser pour cela le choix �Undo� du menu �Edit��

Il utile de noter que

C�g sort du minibu�er d�entr�e des commandes en annulant la commande que l�utili�

sateur est en train de taper�

On peut ainsi se sortir d�un mauvais pas lorsqu�emacs vous a�che continuellement

le m�me message dans le mini�bu�er parce que vous avez lanc� une commande par une

mauvaise man8uvre� Il est alors souvent n�cessaire de taper C�g� si n�cessaire plusieurs

fois� et en se pla'ant avec la souris dans le minibu�er si emacs s�ent�te�

���� PERSONNALISATION DE EMACS �

��� �� Autres commandes

Rechercher du texte

C�s e�ectue une recherche incr�mentale �les caract�res sont recherch�s au fur et

mesure qu�ils sont tap�s� du texte tap� vers la �n du bu�er� Pour passer � l�occu

rence suivante� on retape C�s� Pour arr�ter la recherche� on tape la touche Retur

ou une commande de d�placement� On peut ensuite relancer la m�me recherch

en tapant C�s C�s�

C�r e�ectue une recherche incr�mentale vers le d�but du �chier� Pour passer � l�oc

curence suivante� on retape C�r�

C�M�s e�ectue la recherche d�une expression r�guli�re �voir chapitre ����

Remplacer une cha)ne de caract�res par une autre

M�+ La question �Query replace� s�a�che� On doit alors entrer la cha ne de caract�re

� remplacer suivie de �Return%� Il s�a�che alors �with� et l�on entre la cha ne d

remplacement suivie de �Return%�

A chaque fois que la cha ne � remplacer est rencontr�e� l�utilisateur peut ta

per (

y ou n pour remplacer ou non�

q pour arr�ter de remplacer�

, pour tout remplacer jusqu�� la �n�

C�h pour avoir de l�aide sur la r�ponse

���� Personnalisation de emacs

Le �chier ���emacs� est ex�cut� au d�marrage de emacs� Il doit contenir du code Lisp

Les amateurs �clair�s pourront consulter le manuel de programmation de emacs pour plu

de pr�cisions �environ ��� pages�� On dispose aussi d�une description des variables et de

fonctions Lisp disponibles gr&ce au menu �Help�� �Describe Function� et �Describe Variable

Certaines personnalisations ne sont pas di�ciles � e�ectuer� m�me si l�on ne conna

pas le langage Lisp� Par exemple� les a�ectations de valeurs � des variables �on peut s�aide

du menu �Help� �Describe Variable�� ou les associations de touches sont tr�s simples (

�setq inhibit�startup�message t

a�ecte la valeur �t� �true� � la variable �inhibit�startup�message� pour �viter d�avoir

message initial de emacs

�global�set�key �find� �isearch�forward

associe la commande de emacs �isearch�forward� � la touche du clavier �Find� qui pourr

ainsi �tre utilis�e pour lancer une recherche� Les noms des touches reconnus par emacs son

a�ch�s par la commande �C�h k� ou par le menu �Help� �Describe Key��

�� Plus exactement� elisp� une variante du langage Lisp

Page 41: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� �DITEUR DE TEXTE �EMACS� XEMACS

Si une erreur survient lors de l�ex�cution du �chier ��emacs� ou des di��rents modules

appel�s� on peut visualiser les messages d�erreurs en allant dans le bu�er ��Messages��� On

peut aussi �valuer du code �elisp� d�un bu�er en mode �Emacs�Lisp� en tapant �C�x C�e�

avec le curseur plac� juste derri�re la parenth�se fermante du code �elisp��

Un grand nombre de packages �crits en elisp par la communaut� internationale des

utilisateurs d�emacs permettent d�ajouter de nombreuses fonctionnalit�s aux possibilit�s

de base o�erte par la distribution o�cielle d�emacs� On peut trouver la plupart sur le site ftp

archive�cis�ohio�state�edu dans le r�pertoire �pub�gnu�emacs�elisp�archive�packages�

Si on travaille sous X Window� on peut aussi personnaliser quelques caract�ristiques

de son environnement �couleurs� pr�sence d�un ascenceur sur les fen�tres X� etc�� avec les

�chiers d�initialisation des ressources� Tapez �man emacs� pour plus de pr�cisions ��

Depuis la version �� un environnement minimum peut �tre install� pour tous les uti�

lisateurs d�emacs� Cet environnement est d��ni dans les �chiers site�load�el et site�start�el

�cherchez�les dans l�arborescence o- est install�e la version �� * les commandes locate ou

�nd sont faites pour cela�� Cet environnement� s�il vous convient vous permet de r�duire

de fa'on signi�cative la taille de votre �chier �emacs� Si des options ne vous conviennent

pas� allez consulter ces �chiers pour voir comment changer les choix qui y ont �t� faits�

��� Compl�ments pour les versions graphiques

Copier ou coller entre fen&tres X Window

Quand un texte est copi� ou coup� �dans l�anneau de suppression� il peut �tre coll�

dans une autre fen�tre X Window� m�me s�il ne s�agit pas d�une fen�tre associ�e � emacs�

Inversement� on peut coller dans emacs un texte pr�c�demment copi� ou coup� dans une

autre fen�tre X Window�

Choix de la police de caract�res sous X Window

S�BD �Shift 1 bouton droit de la souris� a�che un menu qui permet de choisir la police

utilis�e� On choisira plut�t une police � espacement �xe du type �Courier ��� ou ��x����

�� La plupart des versions d�emacs ne sont pas crites au�dessus de la bo te � outils Xt et tous les �chiers

de ressources ne sont pas utiliss

Chapitre ��

Manipulation des donn�es des chiers

���� Tri �sort

sort �options� �fichiers����

trie les lignes des �chiers �regroup�es ensemble�� La sortie se fait sur la sortie standard

Par d�faut� les lignes viennent de l�entr�e standard�

Les lignes sont tri�es selon la valeur d�une cl� de tri form�e d�une ou plusieurs zone

extraites de chaque ligne� Par d�faut le tri se fait sur les lignes enti�res selon l�ordre lex

cographique �et selon le code ASCII� et selon l�ordre croissant par d�faut�

Options pour indiquer la cl� de tri (

*pos� �pos� permet d�indiquer le d�but et la �n d�une zone de la cl� de tri� Le coup

�1pos� )pos�� indique que la zone de tri commence au champ num�ro pos

1 � et se termine au champ num�ro pos� 1 � �attention� non compris ,

S�il n�y a pas de )pos�� la zone de tri va jusqu�� la �n de la ligne� La notio

de champ est d��nie ci�dessous dans la d��nition de l�option �t�

�ts�parateur indique le caract�re qui s�pare les di��rents champs�

Si un s�parateur n�est pas d��ni� les champs sont s�par�s par toute suit

d�espaces ou de tabulations contigus� Le premier caract�re �blanc� est cons

d�r� comme un s�parateur * les espaces et tabulations suivants font part

du champ suivant �voir option �b��

Il peut y avoir plusieurs cl�s de tri �voir exemple �b� ci�dessous��

�b ignore les espaces de t�te dans chaque champ ��b est plac� avant tous le

1pos� ou b est accol� derri�re les 1pos� des champs pour lesquels cett

option est valable��

�n e�ectue un tri num�rique �et non lexicographique� sur les cl�s� On peu

aussi accoler la lettre n derri�re 1pos� si on ne veut trier num�riquemen

que certains champs�

�f ignore la di��rence entre majuscules et minuscules

Autres options (

�c a�che un message si les lignes ne sont pas dans le bon ordre �et dans ce ca

Page 42: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

renvoie un code retour �gal � � au lieu de ��

�o�chier sort le r�sultat du tri dans �chier� Attention � l�erreur suivante (

sort �chier � �chier

qui d�truit �chier avant de le trier �voir redirections en ������ La bonne

commande est

sort �o�chier �chier

�r inverse l�ordre de tri� On peut aussi accoler la lettre r derri�re 1pos� si on

ne veut trier par ordre d�croissant que certains champs�

�u si plusieurs lignes ont la m�me valeur pour la cl� de tri� une seule de ces

lignes est envoy�e sur la sortie standard�

Exemples �

�a� Tri de �etc�passwd sur le num�ro de l�utilisateur (

sort �t� $�n �� �etc�passwd

Le tri ne se fait pas correctement si on oublie le n � la suite de 1��

�b� Tri les �chiers du r�pertoire courant par taille et par nom pour les �chiers qui ont la

m�me taille (

ls �lgA � sort $�n �� $�

���� Recherche d�une cha�ne de caract�res �grep

grep �options� expr�reg �fichiers����

a�che sur l��cran les lignes des �chiers� qui contiennent une cha ne de caract�res corres�

pondant � l�expression r�guli�re expr�reg �voir chapitre ��� L�entr�e standard est prise par

d�faut si des �chiers ne sont pas sp�ci��s� Le code retour renvoy� est � si l�expression

r�guli�re a �t� trouv�e ou � sinon�

Si expr�reg comporte des caract�res sp�ciaux pour le shell �� ou � par exemple�� il ne

faut pas oublier de les prot�ger en les entourant d�apostrophes ou de guillemets �voir ������

Options

�c a�che seulement le nombre de lignes contenant la cha ne

�i ignore la di��rence entre minuscules et majuscules

�n a�che les num�ros des lignes

�v a�che les lignes qui ne contiennent pas la cha ne

Exemple ��

grep �c ��bin� fichier

a�che le nombre de lignes de �chier qui commencent par �bin��

���� Compter les caract�res� les mots� les lignes �wc

wc �options���� �fichiers����

���� CONVERSION� SUPPRESSION DE CARACT�RES �TR �

a�che le nombre de lignes� de mots� de caract�res et le nom de chaque �chier� Si des �chier

ne sont pas sp�ci��s� l�entr�e standard est prise par d�faut�

Options

�l nombre de lignes seulement

�w nombre de mots seulement

�c nombre de caract�res seulement

Exemples ��

�a� Nombre de �chiers de #bin (

ls �A �bin � wc �l

�b� Compter les lignes� mots et caract�res de tous les �chiers du r�pertoire courant don

le nom commence par b (

wc b

���� Conversion� suppression de caract�res �tr

La commande �tr� permet de convertir ou de supprimer des caract�res provenant d

l�entr�e standard�

Conversion de caract�res

tr ��cs� cha�ne� cha�ne�

transforme les caract�res provenant de l�entr�e standard ainsi ( les caract�res contenus dan

cha�ne sont transform�s en les caract�res correspondants de cha�ne� et les autres caract�re

sont conserv�s tels quels� Le tout est envoy� vers la sortie standard�

Si cha�ne� contient moins de caract�res que cha�ne� le dernier caract�re de cha�ne

remplace les caract�res manquants�

On peut d�signer un caract�re par son code ASCII en octal pr�c�d� par n� On peu

d�signer un intervalle de caract�res ( e�l d�signe les lettres minuscules comprises entre

et l �bornes comprises�� En Unix syst�me V� la syntaxe est plut�t �e�l��

Exemples ��

�� 7� est le prompt dans les exemples suivants�

� tr aeiou AEIOU

bonjour

�Ctrl% D

bOnjOUr

�a��b� � tr �a�z� �A�Z�

abcd

�Ctrl% D

ABCD

Page 43: Unix et programmation du shell Table des mati res

� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

�c� cat toto � tr ae AE � totobis

outr ae AE � totobis ) toto

Options

�c prend pour cha�ne le compl�ment de la cha�ne indiqu�e dans la commande� Le

compl�ment est pris par rapport � l�ensemble des caract�res de code � � ��

�s �squeeze� ne garde en sortie qu�un seul exemplaire d�une suite d�un m�me carac�

t�re de cha�ne��

Exemple ��

tr �cs a�zA�Z ������

a�che l�entr�e au clavier� un �mot� �cha ne compos�e uniquement de lettres� par ligne

����� est le caract�re �passage � la ligne� de code �� en d�cimal� ��� en octal��

Suppression de caract�res

tr �d cha�ne

envoie vers la sortie standard les caract�res re'us dans l�entr�e standard s�ils ne sont pas

inclus dans cha ne� tr supprime au passage tous les caract�res inclus dans cha ne�

Exemple ��

� tr �d ac

abcad

�Ctrl� D

bd�

��� Fractionnement vertical �cut

cut �cliste �fichiers����

d�coupe un ou plusieurs �chiers �entr�e standard par d�faut� verticalement en s�lection�

nant des intervalles de caract�res �comme l�indique l�option ��c�� � conserver dans chaque

ligne� Le r�sultat est envoy� sur la sortie standard�

liste est une liste de nombres entiers s�par�s par des virgules avec �ventuellement des

tirets pour indiquer un intervalle� Le d�coupage se fait sur les num�ros de caract�res �le

premier caract�re a le num�ro ��� Cette liste indique quels seront les caract�res qui seront

conserv�s sur chaque ligne�

Exemples ��

�a� �(�(�

d�signe les caract�res situ�s en position �� � et �

�b� ���(��

d�signe les caract�res situ�s en position � � et ��

����� FRACTIONNEMENT VERTICAL �CUT �

�c� ��(�

d�signe les caract�res situ�s en position � � et �

�d� ��d�signe les caract�res situ�s en position � � la �n de la ligne

�e� �����(����

d�signe les caract�res situ�s en position � � ��

Les caract�res seront toujours a�ch�s dans l�ordre qu�ils ont sur la ligne du �chier� qu

que soit l�ordre donn� dans la liste �voir exemple b ci�dessous��

Exemples ��

�a� cut �c��(����� fichier� fichier�

extrait les premiers caract�res et les caract�res �� � � de chaque ligne de fichier

et de fichier� et les a�che sur l��cran

�b� cut �c�����(���� fichier

extrait les caract�res � � �� de chaque ligne� On remarquera que les caract�res �� e

�� ne sont a�ch�s qu�une seule fois�

cut �fliste ��dd�limiteur� ��s� �fichiers����

dans ce cas le d�coupage se fait sur des champs �comme l�indique l�option ��f�� d�limit�e

par d�limiteur �option ��d� * tabulation par d�faut��

Attention� si plusieurs d�limiteurs sont accol�s� ils d��nissent plusieurs champs� C�es

une source fr�quente d�erreurs quand le d�limiteur est la tabulation ou l�espace� Quand o

veut extraire des champs s�par�s par un ou plusieurs espaces il est pr�f�rable d�utiliser l

commande awk �voir �������

Les lignes sans d�limiteur sont conserv�es en entier� L�option �s indique qu�il ne fau

pas conserver les lignes sans d�limiteur�

liste est une liste de nombres entiers s�par�s par des virgules avec �ventuellement de

tirets pour indiquer un intervalle� Le d�coupage se fait sur les num�ros de champs �

premier champ a le num�ro ��� Cette liste indique quels seront les champs qui seron

conserv�s sur chaque ligne�

Les caract�res seront toujours a�ch�s dans l�ordre qu�ils ont sur la ligne du �chier� qu

que soit l�ordre donn� dans la liste�

Exemples ��

�a� cut �f�(� �d� �etc�passwd

a�che les utilisateurs et le commentaire associ� du �chier #etc#passwd

�b� Compter combien il y a de clients distincts dans un �chier de factures dont chaqu

ligne correspond � un client plac� en t�te de ligne �tabulation entre chaque zone d�un

ligne� (

cut �f� factures � sort �u � wc �l

Page 44: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

��� Comparaison du contenu de � �chiers

� ��� Di��rences entre deux �chiers texte �di��

diff ��e� fichier� fichier�

indique quelles lignes doivent �tre chang�es dans �chier pour qu�il soit identique � �chier��

Les deux �chiers doivent �tre de type texte� structur�s en lignes �voir ������

On peut ainsi comparer deux versions d�un m�me �chier�

Le r�sultat n�est pas toujours facile � comprendre� La lettre �a� indique que des lignes ont

�t� ajout�es � �chier� par rapport � �chier� �d� indique que des lignes ont �t� supprim�es�

�c� que des lignes ont �t� chang�es� Les nombres avant la lettre sont des num�ros de lignes

de �chier et les num�ros qui suivent la lettre sont des num�ros de lignes de �chier�� Les

lignes de �chier sont pr�c�d�es de �)�� celles de �chier� sont pr�c�d�es de ����

Exemple ��

� cat f�

abc

efg

h� cat f�

abe

fu

� diff f� f�

�d�) c

�(�c�(�

) fg

) h���

� f� u

� ��� �galit� du contenu de � �chiers �cmp�

cmp ��s� fichier� fichier�

a�che le premier octet di��rent dans les � �chiers�

Option

�s cmp n�a�che rien mais retourne seulement un code de retour �voir ������ ( � si

les � �chiers sont identiques� � s�ils sont di��rents et � s�il y a eu une erreur�

����� TRAITER LES LIGNES CONS�CUTIVES IDENTIQUES �UNIQ �

Exemple �

� cmp fich� fich�

fich� fich� differ � char ���( line �

���� Traiter les lignes cons�cutives identiques d�un �

chier �uniq

uniq ��cdu� �fichier�

n�a�che qu�un seul exemplaire des lignes de ��chier% �entr�e standard par d�faut�� Si plu

sieurs lignes cons�cutives sont identiques� une seule est envoy�e vers la sortie standard

Cette commande ne consid�re pas deux lignes identiques si elles ne sont pas cons�cutive

�il faut faire un tri pr�alable si on veut les prendre en compte��

Option

�c a�che chaque ligne en un seul exemplaire� en la faisant pr�c�der du nombre d

lignes voisines identiques

�d n�a�che que les lignes identiques �en un seul exemplaire�

�u n�a�che que les lignes en un seul exemplaire

���� Extraire le d�but ou la �n d�un �chier

� ���� D�but d�un �chier �head�

head ��n� �fichiers����

sort sur la sortie standard les n premi�res lignes de chacun des �chiers �de l�entr�e standar

par d�faut�� Par d�faut� n est �gal � ���

Exemple ��

head �� fich

� ���� Fin d�un �chier �tail�

tail �d�but� �fichier�

copie la �n du �chier sur la sortie standard�

La premi�re ligne a�ch�e est indiqu�e par d�but qui peut �tre 1n �n�eme ligne du �chier

ou )n �n�eme ligne � partir de la �n du �chier��

n peut aussi �tre suivi des lettres b ou c qui indiquent que l�on compte en blocs ou e

caract�res et non pas en lignes�

Si le �chier n�est pas indiqu�� tail prend l�entr�e standard par d�faut�

Exemples ��

�a� tail $��� fich

�b� tail ��b fich

Page 45: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

���� Un �diteur non interactif �sed

� ���� Description g�n�rale de l��diteur

sed est un �diteur non interactif de �chier ( il lit les donn�es provenant d�un �chier �ou

de l�entr�e standard par d�faut�� les traite suivant un programme et sort le r�sultat du

traitement sur la sortie standard�

sed est souvent utilis� comme �ltre dans un pipe�

Comme pour la commande awk vue � la section suivante� nous ne verrons qu�une petite

partie des possibilit�s o�ertes par cette commande�

sed ��n� �e commande �fichiers����

copie les �chiers �l�entr�e standard par d�faut� sur la sortie standard apr�s avoir e�ectu� le

traitement indiqu� dans commande� commande doit �tre un mot pour le shell �donc entour�

de guillemets ou d�apostrophes s�il contient des espaces�� Il peut y avoir plusieurs options

��e�� S�il n�y en a qu�une� ��e� est optionnel�

sed ��n� �f fichier�pgm �fichiers����

indique que le programme est enregistr� dans un �chier�

L�option �n indique que les lignes lues ne doivent pas �tre automatiquement renvoy�es

sur la sortie standard apr�s leur traitement� Seules les lignes explicitement envoy�es par la

commande p ou une commande similaire le seront �il faut par exemple ajouter l�option �p�

de la commande �s���

Une grande partie des traitements e�ectu�s par sed peut �tre ex�cut�e par awk� awk est

plus puissant mais sed est plus simple d�emploi pour remplacer une cha ne de caract�res

par une autre �commande �s���

� ���� Structure d�une ligne de programme

lignes commande arguments

�lignes� indique les lignes sur lesquelles la commande sed sera appliqu�e� L�argument permet

de pr�ciser le traitement � e�ectuer sur les lignes�

� ��� Format pour indiquer les lignes � traiter

Les lignes sont num�rot�es de � au nombre de lignes re'ues�

L�adresse d�une ligne peut �tre d�sign�e par un num�ro de ligne� par $ �derni�re ligne�

ou par une expression r�guli�re entour�e de #�

Les lignes trait�es peuvent �tre d�sign�es par (

adresse�� adresse�

qui d�signe un ou plusieurs blocs de lignes comprises entre les lignes d�sign�es par les deux

adresses

adresse

qui d�signe toutes les lignes correspondant � l�adresse

������ UN LANGAGE D��DITION DE FICHIERS �AWK �

aucune adresse

qui d�signe toutes les lignes�

� ���� Ex�cution du programme

sed applique chaque commande du programme � la premi�re ligne du �chier trait��

passe ensuite � la ligne suivante et ainsi de suite�

Chaque commande s�applique � la version de la ligne courante d�j� modi��e par le

commandes d�j� ex�cut�es sur cette ligne�

� ���� Commandes

Les commandes les plus utilis�es sont

s pour substituer une cha ne de caract�res � une autre�

d pour supprimer des lignes�

p pour envoyer des lignes vers la sortie standard�

On peut regrouper plusieurs commandes avec ! et "�

Exemple ��

for dir in ,echo �PATH � sed �e �s��� �g�,

do ���������

Une grande partie des traitements e�ectu�s par sed peut �tre ex�cut� par awk� awk es

plus puissant mais sed est plus simple d�emploi pour certaines t&ches� en particulier pou

remplacer une cha ne de caract�res par une autre �commande �s���

On remarquera que le �chier trait� n�est pas modi�� par sed� Si on veut modi�er u

�chier de fa'on non interactive� le plus simple est d�utiliser l��diteur ed avec un �chie

inclus �voir ����� * la commande �s� y est d�taill�e��

����� Un langage d��dition de �chiers �awk

� �� �� Description g�n�rale de la commande

awk � lit un texte contenu dans un ou plusieurs �chiers� le modi�e et envoie le r�sulta

vers la sortie standard�

awk est une commande tr�s puissante pour travailler sur le contenu d�un �chier� Elle po

s�de un langage de programmation comportant des structures conditionnelles� des boucle

et des fonctions pr�d��nies * ce langage peut travailler avec des variables et des tableaux

Nous n��tudierons ici que les fonctionnalit�s les plus simples o�ertes par awk�

�� du nom de ses dveloppeurs Aho� Weinberger et Kernighan

Page 46: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

Il est fortement conseill� d��tudier plus en d�tail cette commande si l�on veut e�ectuer

des traitements complexes sur le contenu des �chiers� Un langage encore plus puissant est

fourni par le langage Perl qui ne sera pas �tudi� ici�

Le traitement � e�ectuer est �crit dans un programme tap� directement dans la ligne

de commande �forme � de la syntaxe� ou enregistr� dans un �chier �forme � de la syntaxe��

awk ��Fc� programme �fichiers����

ouawk ��Fc� �f fichier�programme �fichiers����

L�option �F permet d�indiquer le s�parateur de champ �voir���������

Pour la premi�re forme de la syntaxe� le programme doit �tre consid�r� comme un seul

�mot� par le shell * en g�n�ral� il est donc n�cessaire de l�entourer par des apostrophes ou

des guillemets�

Ex�cution de la commande (

awk travaille sur des enregistrements constitu�s de champs� Le s�parateur d�enregistre�

ment �tant par d�faut le s�parateur de ligne de Unix� awk travaille ordinairement sur des

lignes�awk lit enregistrement par enregistrement les donn�es des �chiers �l�entr�e standard

par d�faut�� Chaque enregistrement est trait� � son tour selon les indications donn�es par

toutes les instructions du programme� avant la lecture de l�enregistrement suivant�

� �� �� Champs

Quand awk lit un enregistrement d�un �chier� il l��clate en champs s�par�s par des

espaces ou des tabulations �par d�faut� ou par le caract�re suivant l�option �F�

Le programme peut faire r�f�rence � un ou plusieurs champs de la ligne lue (

��( ��(���

repr�sentent les �er� ��eme���� champs

��repr�sente la ligne enti�re�

Exemples ��

�a� A�cher le nom� les autorisations et le propri�taire des sous�r�pertoires du r�pertoire

courant (

ls �lg � awk ���d� ! print ��( ��( �� "�

�b� A�cher les noms des utilisateurs (

awk �F� �!print ��"� �etc�passwd

� �� � Structure d�un programme

Un programme peut �tre complexe et comporter de nombreuses lignes incluant toutes

les structures de programmation que l�on trouve habituellement dans les langages de pro�

grammation comme le langage Pascal ou le langage C�

������ UN LANGAGE D��DITION DE FICHIERS �AWK �

Une ligne d�un programme a la structure suivante (

s�lecteur ! action "

s�lecteur indique si action doit �tre ex�cut�e sur l�enregistrement en cours de traitement

Dans ce cours nous ne verrons que les programmes comportant une seule ligne qu

a�che �par la commande print� des portions de lignes du �chier trait��

Les constantes de type cha ne de caract�res sont entour�es par des guillemets�

On peut inclure des commentaires dans une ligne du programme en les faisant pr�c�de

du caract�re ����

� �� �� Cas particuliers pour une ligne de programme

) S�il n�y a pas de s�lecteur� action est toujours ex�cut�e �pour tous les enregistrements

Exemple ��

ls �lg � awk � ! print ��( �� "�

a�che le nom et la taille �les neuvi�me et cinqui�me champs de la ligne� de

�chiers du r�pertoire courant�

) S�il n�y a pas d�action� l�enregistrement trait� est recopi� vers la sortie s�il a �t

s�lectionn� par s�lecteur�

Exemple ��

L�exemple de ����� pourrait donc s��crire plus simplement�

ls �l � awk ���d��

� �� �� S�lecteurs

Ils peuvent �tre du type (

) #expression r�guli�re#

Dans ce cas� action sera ex�cut�e sur un enregistrement s�il contient une cha ne d

caract�res qui correspond � expression�r�guli�re �voir ����

Exemple ��

ls �l � awk ���d� ! print "�

a�che toutes les lignes de �ls �l� concernant les sous�r�pertoires du r�pertoir

courant�

) expression de comparaison �semblables � celles du Langage C� (

33� ,3� �� �� �3� �3

De plus� �tilde� permet de comparer une cha ne de caract�res � une expressio

r�guli�re �plac�e entre deux �#��� Par exemple�

�� ��������

Page 47: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

) expression compos�e des deux types pr�c�dents reli�s par des op�rateurs logiques

�� �ou�� ++ �et�� � �n�gation de l�op�rateur qui suit�

) mots cl� BEGIN ou END� Si le s�lecteur de la premi�re �resp� derni�re� ligne du

programme est BEGIN �resp� END�� l�action de cette ligne sera ex�cut�e une fois

avant �resp� apr�s� de traiter le premier �resp� dernier� enregistrement des �chiers�

Des exemples d�utilisation de ces mots cl�s sont donn�s en ������

Exemples ��

�a� �� %% ��

�b� �� %% ��� �� �� %%���

�c� �� � ��ab� deuxieme champ ne commence pas par ab

�d� �� � �

�e� ���� ligne vide

Le format g�n�ral d�un programme est donc (

BEGIN ! instruction de d-but "

s-lecteur ! action "

����

����

s-lecteur ! action "

END ! instruction de fin "

� �� � Actions

Une action est une suite d�instructions� Comme en Langage C plusieurs actions peuvent

�tre regroup�es entre accolades� Une instruction se termine par un �*�� un passage � la ligne

ou par une accolade fermante�

Une instruction peut �tre une instruction de contr�le� une a�ectation� print ou printf�

Les instructions de contr�le disponibles sont (

if� while� for� break� continue� next� exit�

L�instruction next fait passer directement au traitement de la ligne suivante�

Pour les autres instructions� la syntaxe est semblable � celle du langage C� Les instruc�

tions compos�es de plusieurs instructions sont entour�es d�accolades (

! if �n � ���� !

i$$somme $% ��

""

������ UN LANGAGE D��DITION DE FICHIERS �AWK �

Pour une description plus d�taill�e� on se reportera au manuel de r�f�rence ou� encor

mieux� � un guide d�utilisation de awk�

Des exemples d�utilisation des instructions de contr�le sont donn�s dans la sectio

suivante�

Voyons un peu plus en d�tails print et printf (

print �expressions���� ��fichier�

ouprint �expressions���� ���fichier�

a�che les expressions sur la sortie standard ou vers le �chier �ventuellement sp�ci�� e

redirection� print e�ectue ensuite un passage � la ligne�

Si les expressions qui suivent �print� sont s�par�es par un ou plusieurs espaces� elle

sont sorties accol�es les unes derri�re les autres� Si elles sont s�par�es par une virgule� elle

sont sorties s�par�es par un espace�

On peut ajouter un pipe en sortie de print� La commande Unix qui re'oit ce qui es

envoy� par print doit �tre entour�e de guillemets�

�print� �seul� a�che l�enregistrement complet�

Variables utilisateur

Des variables peuvent �tre utilis�es dans les programmes� La syntaxe de leur utilisatio

est semblable au Langage C� Les variables sont initialis�es � la cha ne vide� Les variable

qui sont utilis�es dans des calculs sont automatiquement initialis�es � ��

Exemple ���

A�cher la taille totale des �chiers a�ch�s par la commande ls (

ls �lg �

awk � ! print ��( ��

somme % somme $ �� "

END ! print �Total des tailles des fichiers ��( somme "�

Remarque �

Les constantes cha nes de caract�res doivent �tre entour�es par des guillemets sino

elles sont consid�r�es comme des noms de variables par awk� C�est une source d�erreu

fr�quente lorsque l�on commence � programmer avec awk�

Variables syst�me

Voici quelques variables syst�me utilis�es par awk (

NF nombre de champs de la ligne

NR nombre de lignes qui ont �t� lues

FS s�parateur de champs en entr�e �par d�faut l�espace ou la tabulation�

OFS s�parateur de champs en sortie �par d�faut l�espace�

Page 48: Unix et programmation du shell Table des mati res

� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

RS s�parateur d�enregistrements �line feed de code �� par d�faut��

�RS%��� indique que le s�parateur d�enregistrement est la ligne vide� C�est

utile pour travailler avec des enregistrements multi�lignes�

FILENAME nom du �chier en cours de traitement

FS� OFS et RS sont modi�ables par le programme�

� �� �� Fonctions� op�rateurs

On peut utiliser des fonctions �de syntaxes semblables aux fonctions du Langage C�

dans les s�lecteurs et les actions�

Pour faire des calculs (

int� sqrt� log� exp� int����

Pour travailler avec des cha nes de caract�res (

substr� length� index����

La fonction getline permet de lire une ligne ou la valeur d�une variable (

�getline� lit une ligne du �chier en cours�

�getline variable� lit une ligne du �chier en cours et met la valeur dans variable�

On peut sp�ci�er en entr�e un autre �chier pour �getline� par une redirection de l�entr�e (

�getline �variable% � �chier �

La valeur lue par getline peut aussi provenir d�une commande Unix (

�commande j getline �variable%

Pour lancer une commande Unix� on dispose de la fonction �system�� Par exemple�

system��rm fichier�

On peut utiliser aussi des calculs avec les op�rateurs du langage C (

1� �� �� #� +� 11� )� 13� �3� #3 et +3

Exemple ��

length��� � �� ! print �Ligne�( NR( �longue��( substr���( �( ��"

Les versions nawk et gawk ont les fonctions gsub et sub qui permettent de remplacer

une cha ne de caract�res par une autre dans les lignes du �chier�

����� Exemples de programmes

) A�cher le nombre de lignes du �chier (

awk �END ! print NR "� fichier

) A�cher le premier et le dernier champ de chaque ligne (

awk �! print ��( �NF "� fichier

) A�cher le nom et la taille des �chiers du r�pertoire courant (

ls �alg � awk �! print ��( �� "�

������ EXEMPLES DE PROGRAMMES �

) A�cher le nom et la taille des �chiers du r�pertoire courant avec un format de sort

plus agr�able �le nom cadr� � gauche dans un champ de �� caract�res et la tail

cadr�e � droite dans un champ de caract�res� (

ls �alg � awk �! printf �&���s &�d�n�( ��( �� "�

) A�cher les lignes qui contiennent ab ou cde (

awk ��ab� �� �cde��

) A�cher tous les intervalles de lignes qui sont incluses entre deux lignes �gales

�debut� et � ��n� (

awk ���debut��(��fin���

) A�cher les lignes dont le premier champ est di��rent de celui de la ligne pr�c�dente

awk ��� �% prev ! print # prev % �� "�

) Voici un �chier programme �adjacents� que l�on peut appeler par

awk �f adjacents fichier

pour rep�rer les mots adjacents identiques dans un �chier (

NF�� !

if ��� %% derniermot

print �double &s( ligne &s�n�( ��( NR

for �i%� # i)%NF # i$$

if ��i %% ��i��

printf �double &s( ligne &s�n�( �i( NR

if �NF��

derniermot % �NF

") A�cher les groupes auxquels l�utilisateur appartient (

awk �F� ���(�,logname,����(�! printf �&s�n�( �� "� �etc�group

Remarquez l�expression ����(� qui indique que le nom d�utilisateur est suivi pa

une virgule ou par la �n de la ligne�

) �Plier� les lignes qui ont plus de � caract�res dans un �chier �on ajoute un � � droit

des lignes pli�es (

length��� � �� !

print substr���(�(�� ����

ligne % substr���(��

while �length�ligne � �� !

print substr�ligne(�(�� ����

Page 49: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� MANIPULATION DES DONN�ES DES FICHIERS

ligne % substr�ligne(��

"print ligne

"length��� ) ��

����� Tableaux

awk peut manier des tableaux dont les indices ne sont pas n�cessairement des entiers�

Voici un exemple de programme utilisant un tableau pour additionner toutes les valeurs

correspondant � des noms d�un �chier de la forme (

toto ���

bibi ���

toto ��

jean ���

toto ���

bibi ��

Le programme a�chera (

toto �

bibi ��

jean ���

Voici le programme (

! somme���� $% �� "

END ! for �nom in somme print nom( somme�nom� "

Remarquez le �for �nom in somme� qui parcourt le tableau�

On peut utiliser l��l�ment d�un tableau comme condition d�un if� Dans ce cas� la condi�

tion est vraie si l�indice correspond � un �l�ment qui a re'u une valeur dans le programme (

! if �valeur���� print ��( �a deja une valeur� "

La fonction split permet de d�couper une cha ne de caract�res en a�ectant chaque

champ de la cha ne aux �l�ments d�un tableau�

����� D�autres commandes de manipulation de �chiers

split Fractionnement horizontal d�un �chier en �chiers de tailles �x�es �on peut

recoller les morceaux par cat�

csplit Fractionnement horizontal d�un �chier selon le contenu des lignes du �chier

�on peut recoller les morceaux par cat�

fold d�coupe les lignes trop longues en plusieurs lignes

paste Recollement vertical �en colonnes� de plusieurs �chiers �le contraire de cut�

comm S�lection#rejet de lignes communes � � �chiers

join Jointure sur une zone commune �au sens des bases de donn�es relationnelles�

de � �chiers tri�s suivant cette zone

Troisi�me partie

M�canismes dinterpr�tation du shell

Page 50: Unix et programmation du shell Table des mati res

Chapitre ��

Interpr�tation du shell� M�canismes de

base

���� G�n�ralit�s sur le shell

������ D��nition

Quand l�utilisateur tape son nom et son mot de passe� le programme de d�marrag

associ� � l�utilisateur �voir ������ est automatiquement lanc�� Ce programme est le plu

souvent un shell et toute la session de l�utilisateur se d�roule en fait dans ce shell�

Quand une commande est tap�e au clavier� le programme �shell� la lit� l�interpr�te e

lance son ex�cution� La ligne tap�e au clavier peut ne comporter qu�un nom de command

mais elle peut aussi �tre beaucoup plus complexe car le shell comprend un v�ritable langag

de programmation qui apporte beaucoup de souplesse et de puissance � l�utilisateur�

L�utilisateur peut d�ailleurs �crire des programmes dans le langage du shell et les enre

gistrer dans des �chiers appel�s shellscripts �voir �������

������ Compatibilit� des di��rents shells

Nous travaillerons avec le shell zsh� Sous ce shell les shellscripts sont ex�cut�s par le she

sh sauf mention contraire explicite du programmeur� Le shell standard est actuellemen

ksh�Nous �tudierons donc essentiellement les commandes communes � sh� � ksh et � zsh� e

indiquant les cas o- les shells ne fonctionnent pas exactement de la m�me fa'on�

Autant que possible on essaiera de n�utiliser que les commandes et possibilit�s o�erte

par tous les shells quand on �crira un shellscript� pour favoriser sa portabilit�� En interacti

le probl�me ne se pose pas et on pourra utiliser toutes les facilit�s du shell avec lequel o

travaille�

Les shells peuvent �tre con�gur�s de di��rentes fa'ons selon les valeurs d�options qu

l�on peut donner� soit � l�appel du shell� soit par la commande set �le plus souvent lanc�

dans un �chier d�initialisation du shell * voir ����� Par exemple�

Page 51: Unix et programmation du shell Table des mati res

� CHAPITRE �� INTERPR�TATION DU SHELL� M�CANISMES DE BASE

zsh �o NOCLOBBER

ouset �o NOCLOBBER

positionne l�option NOCLOBBER �voir ������� au d�marrage ou durant une session de zsh�

Pour avoir une bonne compatibilit� de zsh avec ksh et sh� il faut positionner l�option

NO9NOMATCH �voir ��� et ne pas positionner les options GLOBDOTS et NOCLOB�

BER� Dans ce cas� l�incompatibilit� principale de zsh avec les autres shells provient de la

fa'on d�indiquer la �n�gation� de caract�res pour la g�n�ration des noms de �chiers ( �� �

pour sh et ksh et �� � pour zsh�

����� Commandes et processus� commandes internes au shell

Suivant les cas� une ligne tap�e au clavier peut lancer aucun� un ou plusieurs nouveaux

processus �voir ���� (

) La plupart des lignes de commandes tap�es par l�utilisateur entrainent l�ex�cution

d�un �chier binaire enregistr� dans l�arborescence des �chiers� Le shell lance l�ex��

cution de ce �chier apr�s avoir interpr�t� la ligne de commande� Cette ex�cution

engendre un nouveau processus�

) Certaines lignes de commandes peuvent engendrer plusieurs processus �par exemple

les lignes de commandes comportant un pipe��

) D�autres commandes sont internes au shell * le shell sait les ex�cuter sans faire appel

� un �chier externe et aucun nouveau processus n�est engendr�� Ces commandes sont

peu nombreuses ( essentiellement cd et pwd dans les commandes les plus courantes�

������ Prompts

Le shell indique qu�il est pr�t � prendre une nouvelle commande en a�chant le prompt

�par d�faut le prompt est �$ ���

Une commande se termine par un passage � la ligne� Dans certains cas le passage � la

ligne n�est pas consid�r� comme un terminateur de commande par le shell * dans ces cas� il

s�a�che un deuxi�me prompt ��� � par d�faut� pour indiquer que le shell attend la suite

de la commande (

� echo �LIGNE �

� LIGNE ��

LIGNE �

LIGNE �

������ Environnement d�une commande ou d�un shellscript

Toutes les commandes lanc�es dans Unix s�ex�cutent dans un environnement de travail

d��ni par un ensemble de variables �voir chapitre ���

���� REDIRECTIONS

Cet environnement peut guider les commandes pendant leur ex�cution� Par exemple� l

commande lpr envoie les requ�tes d�impression vers l�imprimante dont le nom est conten

dans le variable PRINTER si cette variable fait partie de l�environnement�

����� Code retour d�une commande

Toute commande Unix renvoie un code retour�

En g�n�ral� le code retour est �gal � � si tout s�est bien pass� et � un entier strictemen

positif sinon� Il permet d�automatiser des t&ches � l�aide de shellscripts en tenant compt

des r�sultats des commandes comme nous le verrons dans le chapitre ���

Remarque �

Ce code retour ne s�a�che pas � * il est enregistr� dans la variable ��� du she

�voir ������ Il peut �tre a�ch� par la commande �echo ����

La touche d�annulation �souvent �Ctrl% C * voir ���� permet d�interrompre l�ex�cutio

d�une commande si elle n�a pas �t� lanc�e en arri�re�plan� Le code retour est alors en g�n�ra

di��rent de � �cela d�pend de la mani�re dont a �t� �crite la commande * voir command

interne trap en �����

���� Redirections

Avant de lancer un processus� le shell � lui associe � �chiers (

Entr�e standard �par d�faut le clavier� * le descripteur de �chier est ��

Sortie standard �par d�faut l��cran� * le descripteur de �chier est ��

Erreur standard �par d�faut l��cran� * le descripteur de �chier est ��

Ces � descripteurs peuvent �tre li�s � d�autres �chiers que ceux indiqu�s ci�dessus gr&c

aux commandes de redirection� Le shell va associer d�autres �chiers que le clavier ou l��cra

� ces � descripteurs et il lancera ensuite la commande�

������ Redirections de la sortie standard

Redirection avec �crasement du �chier de redirection ���

On redirige la sortie standard d�une commande dans un autre �chier que le �chie

sp�cial associ� � l��cran� par la redirection

��chier

�� Sous zsh� l�option �print�exit�value� fait a�cher le code retour s�il est di�rent de �

�� C�est une convention adopte par tous les shells et par l�immense majorit des programmes cri

pour Unix

Page 52: Unix et programmation du shell Table des mati res

� CHAPITRE �� INTERPR�TATION DU SHELL� M�CANISMES DE BASE

Cette redirection associe le �chier �chier au descripteur �� Tout ce qui est envoy� vers

la sortie standard �connue par la commande comme le �chier de descripteur �� est donc

envoy� � �chier� La redirection doit �tre �crite � la suite de la commande sur laquelle elle

agit�Si �chier existait d�j�� son contenu est �cras� * s�il n�existait pas� il est cr���

Remarque ��

Avec zsh �et ksh�� le comportement en cas d�existence de �chier d�pend de la valeur

de l�option NOCLOBBER �voir �������� Si cette option est mise� le �chier ne sera

pas �cras� et zsh a�chera un message d�erreur� Dans ce cas� pour indiquer que l�on

souhaite �craser un �chier s�il existe d�j�� il faut utiliser le signe de redirection ����

Exemples �

�a� ls � l � fich

�b� cat fich� fich� � fich�

Redirection avec ajout la �n du �chier de redirection ����

Il faut utiliser ���� au lieu de ����

Exemple ��

ls �l �� fich

������ Redirection du �chier d�erreur ����

Le �chier d�erreur peut �tre redirig� en ajoutant ����chier� ������chier�� si on ne veut

pas �craser �chier� � la suite d�une commande �attention� pas d�espace entre le � et �����

Exemple ��

find �students �name core �print ��erreurs

����� Envoi d�un message d�erreur ��!��

Les message d�erreur doivent �tre envoy�s vers la voie num�ro �� Voici un exemple

�voir ������ (

echo �ERREUR� �+�

������ Redirection de l�entr�e standard ���

L�entr�e standard peut �tre redirig�e par ���chier��

Exemple ��

mail toto�unice�fr ) fichier

���� PIPE �j

������ Pseudo��chier "dev"null

Le �chier sp�cial de type �caract�res� �voir ����� �dev�null est un pseudo��chier �qu

valent � un puits sans fond�

Il est souvent utilis� avec les redirections� en particulier pour ignorer les message

d�erreur (

find �students �name core �print ���dev�null

���� Pipe �j

Les donn�es de sortie d�une commande peuvent �tre directement utilis�es comme don

n�es d�entr�e d�une autre commande gr&ce au symbole ���� En e�et� la sortie standard d

la commande de la commande plac�e avant le ��� est redirig�e vers l�entr�e standard de l

commande plac�e apr�s le ����

Les commandes du pipe sont ex�cut�es en parall�le par des processus distincts �� Il fau

se le rappeler quand une des commandes du pipe contient un exit ( la commande exit n

fait sortir que du sous�shell qui ex�cute la commande du pipe et pas du shell dans lequ

s�ex�cute le pipe �voir ��������

Le code retour du pipe est le code retour de la derni�re commande ex�cut�e dans

pipe�

Exemples ��

�a� ls �l �bin � grep ��d�

�b� On peut composer plusieurs pipes (

ls �l �bin � grep ��d� � lpr

���� Regroupement des commandes

Le regroupement de commandes est souvent utilis� pour appliquer une redirection o

un pipe � plusieurs commandes�

������ Regroupement entre parenthses

Les commandes regroup�es entre des parenth�ses sont ex�cut�es dans un sous�shell ave

un environnement di��rent de celui pr�c�dant et suivant les parenth�ses�

Exemple ��

� pwd

�users�students�toto

�� Dans les dernires versions de zsh� la dernire commande s�excute dans le shell dans lequel le pipe

t lanc

Page 53: Unix et programmation du shell Table des mati res

CHAPITRE �� INTERPR�TATION DU SHELL� M�CANISMES DE BASE

� �cd �bin # pwd

�bin

� pwd

�users�students�toto

������ Regroupement entre accolades

Les commandes regroup�es entre des accolades ne sont pas ex�cut�es dans un sous�shell

comme avec les parenth�ses�

Les accolades doivent �tre s�par�es des commandes par au moins un espace�

Attention� �:� et �;� ne sont reconnus qu�en d�but de commande� Ils doivent donc �tre

pr�c�d�s par un �*� �s�parateur de commandes� si on veut les placer sur la m�me ligne que

ce qui pr�c�de� L�oubli du �*� est fr�quent et il est di�cile � rep�rer car le shell n�indique

pas clairement le probl�me dans ses messages d�erreur�

Exemple ��

! echo �Fichiers fich� et fich� �� # pr fich� fich� # " � lpr �h

��� Processus en arri�re�plan ��

Lorsqu�on lance une commande� le shell attend la �n de l�ex�cution de la commande

avant d�ex�cuter une autre commande�

Si on ajoute le signe �+� derri�re le nom de la commande �pr�c�d� ou non d�un espace��

le shell n�attend plus la �n de son ex�cution� On dit qu�il lance la commande en arri�re�plan�

Exemple ��

ls �l � grep ��d� � fich +

Quand on lance une commande en arri�re�plan dans un shell interactif �pas dans un

shellscript�� le shell renvoie � l��cran le num�ro de �job� entre crochets �le premier processus

lanc� en arri�re�plan par le shell en cours a le num�ro ��� et le pid de processus �voir ����

attribu� � cette commande�

On ne peut interrompre une commande lanc�e en arri�re�plan qu�avec la commande kill

��tudi�e en �����

Remarque ��

Lorsque l�utilisateur sort du syst�me �en fait� du shell lanc� au d�marrage�� tous les

processus lanc�s en arri�re�plan sont tu�s�

Pour �tre pr�cis� il existe une commande nohup �pas �tudi�e ici� qui permet de

lancer des commandes en arri�re�plan� qui continueront leur ex�cution apr�s la sortie

de l�utilisateur�

Les commandes at et batch permettent de lancer en arri�re�plan des commandes � des

moments choisis ou lorsque le syst�me n�est pas trop charg�� m�me si l�utilisateur n�est pas

connect��

���� ALIAS

������ Gestion des �jobs� par ksh ou zsh

En ksh ou zsh �mais pas sous sh� l�utilisateur dispose de plusieurs commandes pou

choisir le �plan� o- les processus lanc�s s�ex�cutent (

) l�utilisateur peut faire a�cher la liste de ses processus avec leur �num�ro de job� pou

le shell en cours et leur pid �voir ����� en tapant

jobs ��l�

�l�option �l a�che l�identi�cateur de processus�

) l�utilisateur peut suspendre le processus en cours en tapant

�Ctrl% Z

) il peut ensuite relancer l�ex�cution de ce processus en arri�re�plan en tapant

bg �&n�

n est le num�ro de �job� pour le shell �voir ���� * par d�faut c�est le processus qu

vient d��tre suspendu qui est pass� en arri�re�plan�

) les processus en arri�re�plan ou suspendus peuvent �tre pass�s en avant�plan en tapan

fg �&n�

�si aucun num�ro de �job� n n�est donn�� la commande lance en avant�plan le dernie

processus lanc� en arri�re�plan��

Ceci permet de suspendre momentan�ment un processus pour e�ectuer un travail e

de revenir ensuite � ce processus exactement � l�endroit o- on l�avait laiss�� On peut pa

exemple �crire un programme sous emacs� enregistrer ce programme� suspendre emacs pa

�Ctrl% Z� compiler et ex�cuter le programme et revenir sous emacs par fg� Cette possibilit

perd de son utilit� si l�on travaille en environnement X Window car on peut alors facilemen

passer d�une application � l�autre sans devoir en suspendre une�

��� Alias

Un alias est un synonyme pour une cha ne de caract�res dans une commande� Les alia

sont particuliers � ksh et � zsh * il n�y a pas d�alias dans le shell sh�

Par exemple� �alias x%�chmod u$x�� d��nit l�alias �x� ( si le premier mot d�une com

mande est �x�� le shell remplacera ce mot par �chmod u1x��

On peut d�faire un alias par la commande unalias� par exemple� �unalias x��

La liste des alias peut s�a�cher en tapant �alias� sans argument� �alias x� a�che l

valeur de l�alias x�

Un alias peut �tre utilis� comme raccourci d�une commande avec ses options comm

pour l�alias �x� ci�dessus� On peut aussi l�utiliser pour d�signer une commande qui n�es

pas plac�e dans un des r�pertoires de la variable PATH� Par exemple �sous Unix OSF��

�alias quota%�usr�sbin�quota�

Page 54: Unix et programmation du shell Table des mati res

� CHAPITRE �� INTERPR�TATION DU SHELL� M�CANISMES DE BASE

���� Substitution de commande

Le shell interpr�te ,commande, en le rempla'ant par tout ce que la commande envoie

sur la sortie standard�

Exemples ��

�a� date%,date,

�b� nom�maj%,echo �nom � tr �a�z� �A�Z�,

�c� echo je suis sous ,pwd,

Remarques ��

�a� le code retour d�une a�ectation �a%,commande,� est le code retour renvoy� par

�commande� On peut ainsi �crire

if ligne%,grep mot fichier, # then

cas ou grep a trouve une ligne

else cas ou grep n�a pas trouve une ligne

fi

�b� la commande est ex�cut�e dans un sous�shell�

�c� Attention� si la commande renvoie plusieurs lignes vers la sortie standard� le compor�

tement est di��rent selon que l�on travaille sous sh et ksh ou zsh� Par exemple�

a%,ls �l,

rangera dans a une seule longue ligne sous sh et ksh� ce qui peut �tre g�nant� mais

donnera bien plusieurs lignes sous zsh�

�d� l�interpr�tation � l�int�rieur des , est complexe et peut donner des r�sultats surpre�

nants (

echo ���HOME

a�che ��users�profs�toto� et pourtant

echo ,echo ���HOME,

a�che �HOME

A cause de ce type d�exemple� ksh et zsh ont ajout� le nouveau type de substitution

de commande "�commande� qui n�a pas de telles anomalies (

echo ��echo ���HOME

a�che ��users�profs�toto

���� M�CANISMES D�INTERPR�TATION

���� M�canismes d�interpr�tation

Cette section d�crit comment les lignes de commandes sont interpr�t�es par le she

avant que la commande ne soit lanc�e�

Voici les t&ches e�ectu�es par le shell dans l�ordre de leur ex�cution (

�� interpr�tation des espaces �pour distinguer les di��rents mots��

�� substitution de tilde �� �seulement pour ksh ou zsh��

�� substitution des alias �seulement pour ksh ou zsh��

�� interpr�tation des redirections� des pipes � et des regroupements de commandes�

� interpr�tation des a�ectations ��

� substitution des param�tres de position et de variables ����

�� substitution des commandes�

�� g�n�ration des noms de �chiers �caract�res � � � * voir ������

���� Inhiber l�interpr�tation du shell

On peut inhiber l�interpr�tation du shell �on dit aussi d�personnaliser� avec les carac

t�res suivants (

n inhibe l�interpr�tation sp�ciale du caract�re suivant�

� toute interpr�tation est inhib�e pour les portions de lignes entour�es de �

� dans les portions de lignes entour�es de � �guillemets�� l�interpr�tation des e

paces� la g�n�ration des noms� la substitution des alias et de sont inhib�e

mais pas la substitution des param�tres �$�� Une apostrophe n�est pas interpr�t�

entre deux guillemets �ce qui permet d�introduire le caract�re � dans une cha n

de caract�res�

Exemple ��

Essayez cette suite de commandes (

a%bonjour

echo �a bc

echo ��a bc

echo ���a bc �

echo ��a �

�� il n�y a pas de gnration des noms de �chiers dans l�interprtation des parties correspondant au

�chiers dans les redirections

�� comme pour les redirections� les tapes suivantes sont aussi traites � part pour les a�ectations � pa

exemple� aucune gnration des noms n�est e�ectue dans �a���

Page 55: Unix et programmation du shell Table des mati res

��� CHAPITRE �� INTERPR�TATION DU SHELL� M�CANISMES DE BASE

����� Recherche d�une commande par le shell

Lorsque l�utilisateur tape une commande au clavier� voici les di��rentes �tapes qui

conduisent � l�ex�cution de la commande (

�� Interpr�tation de la ligne de commande par le shell�

�� Recherche de la commande�

�� Ex�cution de la commande avec redirection pr�alable des entr�es�sorties par le shell

si n�cessaire�

Voici comment s�e�ectue la recherche de la commande (

) Si la commande correspond � une commande interne du shell� cette commande est

ex�cut�e � l�int�rieur du shell�

) sinon� si la commande correspond � une fonction �voir ����� cette fonction est ex��

cut�e � l�int�rieur du shell�

) sinon il ne peut s�agir que d�une commande correspondant � un �chier de l�arbores�

cence� Si le nom de la commande ne comporte pas de �#�� la variable PATH est

examin�e pour rechercher le r�pertoire o- se trouve la commande�

) Si le �chier est un shellscript un nouveau shell est cr�� * il lit les lignes du

shellscript et les ex�cute�

) si le �chier contient du code binaire ex�cutable� un nouveau processus est cr���

qui ex�cute ce code�

����� Lancement de l�ex�cution d�un shellscript

Un shellscript est un �chier qui contient des noms de commandes et des instructions

internes au shell� On peut utiliser un shellscript comme toutes les autres commandes� En

particulier un autre shellscript peut l�utiliser� On peut ainsi se construire facilement de

nouvelles commandes adapt�es � sa propre fa'on de travailler�

Les instructions internes du shell forment un langage de haut niveau poss�dant des

instructions de tests et de boucles� des variables et des fonctions�

On peut lancer l�ex�cution d�un shellscript de trois mani�res di��rentes�

������� Lancement par le nom du shellscript

Si on a l�autorisation de lecture et d�ex�cution sur le shellscript� on peut le lancer en

tapant simplement son nom�

����� LANCEMENT DE L�EX�CUTION D�UN SHELLSCRIPT ��

Le syst�me s�aper'oit que le �chier qui contient le shellscript n�est pas �crit dans d

code directement ex�cutable par le processeur de la machine et il lance donc un interpr�teu

pour lire et ex�cuter les lignes contenues dans le �chier�

Toutes les commandes du shellscript sont ex�cut�es comme si elles �taient tap�es a

clavier� Une di��rence importante est que les commandes sont ex�cut�es dans un processu

�ls �dont la zone de code contient le code de l�interpr�teur� qui lit les lignes du shellscript e

lance leur ex�cution� Si le shellscript modi�e l�environnement de d�part� celui�ci est r�tab

lorsque l�ex�cution du shellscript est termin�e �voir ���� ��

Il est important de noter que� sauf cas particulier �tudi� ci�dessous � ���

) si on travaille sous sh ou ksh� l�interpr�teur lanc� implicitement pour lire et ex�cute

le shellscript est le shell courant �sh ou ksh selon le cas��

) si on travaille sous zsh� l�interpr�teur lanc� implicitement est sh et pas zsh , Si

�chier contient des instructions comprises par zsh et pas par sh� il y aura une erreu

� l�ex�cution�

Pour que le shellscript soit interpr�t� par zsh� il doit commencer par la ligne (

� �usr�local�bin�zsh �f

Ex�cution d�un �chier dont la premi�re ligne commence par '+,(

Si le �chier comporte une premi�re ligne qui commence par � ��� Unix lance comm

interpr�teur non pas le shell habituel� mais le programme dont le nom absolu suit � �

�avec �ventuellement un argument comme ��f� dans l�exemple ci�dessus�� auquel il ap

plique comme arguments la ligne de commande tap�e par l�utilisateur� Voici des exemple

concrets (

Si l�utilisateur tape la commande �c� f� f���

) si c� commence par � � �bin�sh��

la commande ex�cut�e sera ��bin�sh c� f� f���

Le shellscript �c�� est lu par le shell sh et ex�cut� avec les arguments �f� f���

) si c� commence par � � �usr�local�bin�zsh �f��

la commande ex�cut�e sera ��usr�local�bin�zsh �f c� f� f���

Le shellscript �c�� est lu par le shell zsh et ex�cut� avec les arguments �f� f��� L�optio

��f� indique que le �chier d�initialisation ��zshenv� ne doit pas �tre lu * voir �������

) si c� commence par � � �bin�awk �f��

la commande ex�cut�e sera ��bin�awk �f c� f� f���

Le programme �c�� �n�cessairement �crit avec du code �awk�� est interpr�t� par aw

sur les �chiers �f�� et � f�� �voir �������

Remarque ��

Ce m�canisme ne peut fonctionner qu�avec les interpr�teurs �tels les shells ou awk

pour lesquels � � introduit des commentaires�

Page 56: Unix et programmation du shell Table des mati res

��� CHAPITRE �� INTERPR�TATION DU SHELL� M�CANISMES DE BASE

������� Lancement par l�appel de la commande interne ���

Il reste une autre possibilit� pour faire ex�cuter un shellscript� Le nom du shellscript

est pr�c�d� d�un point �laisser un espace entre le point et le nom du shellscript� (

� fichier

Dans ce cas� le shellscript �chier est ex�cut� comme si ses commandes �taient tap�es

directement au clavier� Un nouveau processus n�est pas cr��� Les modi�cations de l�envi�

ronnement seront donc conserv�es�

En fait� ��� est une commande interne du shell qui lit toutes les commandes contenues

dans le �chier et les ex�cute comme si elles avaient �t� tap�es au clavier�

Remarque ��

Quel que soit le shell� le shellscript est toujours lu et ex�cut� par le shell en cours� �

la di��rence de l�appel par le nom du shellscript o- il y a une di��rence entre zsh et

les autres shells �voir remarques de ���������

Exemple �

Soit le shellscript cdbin contenant la seule commande

cd bin

Si on tape

cdbin

�le nom du shellscript�� le r�pertoire sera le m�me apr�s l�ex�cution qu�avant� En

e�et� le shellscript s�ex�cute dans son propre environnement et il n�a pas d�action sur

l�environnement du shell de d�part�

Si on tape

� cdbin

le r�pertoire courant sera bin apr�s l�ex�cution car cd est une commande interne du

shell et non pas une commande externe correspondant � un �chier Unix� Elle est

donc ex�cut�e directement par le shell sans faire appel � un autre shell qui aurait son

propre environnement� Puisque l�on a ex�cut� cdbin avec un ��� initial� les commandes

de cdbin sont donc ex�cut�es par le shell initial dont le r�pertoire courant devient

donc le r�pertoire bin�

������ Lancement par l�appel explicite d�un shell

Si on a l�autorisation de lecture sur le shellscript� on peut lancer son ex�cution par (

zsh ��f� fichier

�si on travaille avec zsh� dans ce cas� un nouveau shell est lanc� explicitement� Celui�ci lit

les commandes du shellscript �chier et les fait ex�cuter comme si les commandes avait �t�

tap�es au clavier�

Le �chier �zshenv est ex�cut� sauf si le shell est lanc� avec l�option ��f�� Le �chier

�etc�zshenv est toujours ex�cut��

����� LANCEMENT EXPLICITE D�UN SHELL ��

Il faut noter que c�est le mode de lancement de zsh lorsqu�on lance une command

�rsh machine commande� sur une machine distante et un compte utilisateur qui a zs

comme shell de d�marrage �voir cours sur les r�seaux��

����� Lancement explicite d�un shell

zsh ��f�

Les �chiers �zshenv� �zshrc et �etc�zshrc sont ex�cut�s sauf si le shell est lanc� ave

l�option ��f�� Le �chier �etc�zshenv est toujours ex�cut��

Il faut noter que c�est le mode de lancement de zsh lorsque l�on ouvre une fen�tre ave

xterm�

Page 57: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� VARIABLES� ENVIRONNEMENT

Chapitre ��

Variables� environnement

��� Param�tres� variables de position

������ Paramtres des shellscripts

Lorsqu�on lance une commande� on peut la faire suivre par des arguments ou para�

m�tres�4 l�int�rieur d�un shellscript� ces param�tres sont d�sign�s par les variables de position

$�� $������ $ �$� d�signe le nom de la commande��

Exemples �

�a� Si le shellscript lt contient

ls �lt �� � more

on peut lancer

lt �users�students�jean

�b� Si le shellscript �cherche� contient

find �� �name ���� �print

on peut taper

cherche �usr �compt �

qui cherchera sous l�arborescence du r�pertoire #usr les �chiers dont le nom commence

par compt�

������ Donner des valeurs aux paramtres de position �set�

La commande set permet d�a�ecter des valeurs aux param�tres de position � l�int�rieur

d�un shellscript� La commande suivante donne les valeurs val�� val�� ��� aux param�tres $��

$�� ��� (set val� val� ���

����� VARIABLES ��

Cette possibilit� est souvent utilis�e dans les shellscripts pour r�cup�rer un ou plusieur

mots d�une ligne� Par exemple� les deux commandes suivantes a�chent le mois et l�ann�

de la date syst�me (

set ,date,

echo �� ��

Remarque �

set �x abc

ne convient pas pour donner � $� la valeur ��x� et � $� la valeur �abc�� En e�et� set v

penser que ��x� est l�option du shell �tudi�e en ������ L�option ���� indique que le

param�tres suivants ne sont pas des options du shell mais les valeurs des param�tre

de position� Il faut donc �crire (

set �� �x abc

��� Variables

������ Identi�cateur

Durant une session de travail d�un shell �d�limit�e par le d�marrage et l�arr�t du shell

on peut utiliser des variables d�sign�es par un identi�cateur� Cet identi�cateur peut com

porter des lettres� des chi�res ou le caract�re soulign� * il doit commencer par une lettre o

le caract�re soulign��

������ A�ectation

On peut a�ecter une cha ne de caract�res aux variables (

variable%valeur

�pas d�espaces de part et d�autre du signe 3 ,��

�variable3� a�ecte la cha ne vide � variable�

Remarque ��

Le code retour d�une a�ectation du type

a%,commande,

est le code retour renvoy�e par la commande�

On peut par exemple �crire

if lignes%,grep mot fichier, # then ���

et ce qui suit le �then� ne sera ex�cut� que si le �chier contient le mot�

����� D�signation de la valeur de la variable �#�

On peut r�utiliser la valeur a�ect�e � une variable dans toute commande�

Page 58: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� VARIABLES� ENVIRONNEMENT

�variable

d�signe la valeur de variable� C�est le shell qui fera le remplacement�

Remarque ��

Le shell ne fera pas le remplacement dans les portions de commande plac�es entre

apostrophes ou si le �$� est pr�c�d� d�un ���� Au contraire de la g�n�ration de noms

de �chiers� le remplacement est e�ectu� dans les portions de commande plac�es entre

guillemets �voir ������

Exemple ��

r�%�us��acct�jean�dvp

r�%�us��bin

cd �r�

cp fich �r�

Si la valeur de la variable doit �tre suivie d�un caract�re autoris� dans un nom de

variable� on entoure d�accolades le nom de la variable (

Exemple ��

serie%math

cp classe��!serie"� rep

������ D�composition en mots des valeurs des variables de zsh

Attention , zsh ne d�coupe pas la valeur d�une variable en mots� Le programme suivant

va copier les deux �chiers �f�� et �f�� sous le r�pertoire �rep� s�il est ex�cut� sous sh ou

ksh� mais il ne fonctionnera pas sous zsh car cp essaiera de copier le �chier de nom �f� f��

�un seul nom avec un espace au milieu� (

fichiers%�f� f��

cp �fichiers repertoire

Il faut �crire ��!%fichiers"� si on veut que la valeur de la variable ��chier� soit d��

coup�e en mots� Sous zsh la commande de l�exemple pr�c�dent doit donc s��crire (

cp �!%fichiers" repertoire

������ Supprimer une variable �unset�

unset variable

Remarque ��

La commande unset n�existe pas dans le shell sh�

����� Variables sp�ciales du shell

Voici les principales variables utilis�es par le shell�

HOME r�pertoire de login

����� VARIABLES ��

PATH r�pertoire de recherche des commandes

Exemple ( PATH3#bin(#usr#bin(#users#students#util(�

Le r�pertoire courant peut �tre indiqu� par �(� au d�but ou � la �n de la va

leur de PATH� Il est recommand� de ne pas mettre trop de r�pertoires dan

cette variable pour ne pas surcharger le syst�me en cas de recherche d�un

commande qui n�existe pas �et qui sera recherch�e dans tous ces r�pertoires

CDPATH est une variable quelquefois utile si on travaille souvent dans des r�pertoire

dont le chemin est long � taper� Si l�utilisateur tape un nom qui ne commenc

pas par un �#� en argument de cd� cd recherchera ce nom dans les r�pertoire

indiqu�s dans CDPATH� Le format de CDPATH est le m�me que celui d

PATH�

Attention� sous sh et ksh� si la variable CDPATH a une valeur� cette va

riable est utilis�e exclusivement pour rechercher les r�pertoires dont le nom

ne commence par �#� dans une commande �cd � �comme pour la variab

PATH et la recherche de commandes�� Si on est par exemple plac� dans so

r�pertoire HOME et que celui�ci contient un r�pertoire bin� la command

�cd bin� d�placera dans le premier r�pertoire bin plac� sous un des r�

pertoires de la variable CDPATH� et renverra une erreur s�il n�y en a pa

Veillez donc � toujours avoir le r�pertoire courant au d�but de la valeur d

CDPATH si vous ne voulez pas avoir ce comportement� Sous zsh� le r�pe

toire courant est toujours cherch� en premier m�me s�il n�est pas dans l

variable CDPATH�

PS� premier prompt Unix� zsh o�re de nombreuses possibilit�s particuli�res pou

personnaliser le prompt �voir �����

PS� deuxi�me prompt Unix �� par d�faut�

TERM nom du type de terminal utilis�

IFS s�parateur�s� de mots dans les commandes �espace� tabulation ou passag

� la ligne par d�faut�� IFS est utilis�e lors d�une substitution de command

�,���, ou ���� de param�tre ou de variable ���� ou lors de la lecture d�un

ligne par la commande interne read� pour d�couper une ligne en mots� O

remarquera que IFS n�est pas utilis�e entre guillemets car les guillemet

inhibent la s�paration en mots� Essayez la suite de commandes suivante (

� IFS%�

� read x y

v��v�

� echo �x

� var%a�b�c

� echo �var �%var avec zsh

� echo ��var� different si entre guillemets

� cat �etc�passwd

�IFS%� remet la valeur par d�faut�

Page 59: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� VARIABLES� ENVIRONNEMENT

Les variables suivantes ont leur valeur donn�e automatiquement par le shell * on ne peut

modi�er leur valeur�

+ nombre de param�tres de position

� valeur retourn�e par la derni�re commande ex�cut�e

, num�ro de processus de la derni�re commande lanc�e en arri�re plan

" num�ro de processus du processus en cours

� $� est �quivalent � $� $� ���

- $/ est �quivalent � $� $� ��� comme $� * mais il existe une di��rence subtile

entre les � variables � et /( �� � �entour� de guillements� repr�sente un

seul mot compos� des arguments $� $� ��� s�par�s par un espace alors que

���� repr�sente di��rents mots �gaux aux contenus de $�� $�� ���� avec un

espace s�parateur qui sera interpr�t� par le shell comme un s�parateur de

mots � voir exemple de l�instruction �for� en ��������

������ A�cher la valeur d�une variable �echo�

echo ��n� �variable

Plus g�n�ralement� echo envoie sur la sortie standard les valeurs de tous ses param�tres�

s�par�s par un espace� Dans la commande ci�dessus� c�est le shell qui va remplacer $variable

par la valeur de la variable et echo a�chera cette valeur�

En Unix BSD� l�option �n permet d��viter le passage � la ligne apr�s l�a�chage� En

Unix Syst�me V� on peut passer en param�tres de echo des caract�res sp�ciaux et c�est le

caract�re ��c� qui indique que l�on ne doit pas passer � la ligne �ne pas oublier de prot�ger

��� de l�interpr�tation du shell�� Par exemple (

echo �Donnez le nom du fichier �c� �

Exemples ��

�a� echo valeur de HOME � �HOME

�b� echo �Voici � espaces entre parentheses � � �

Question ( que se passe�t�il si on enl�ve les guillemets�

La commande interne print de ksh et de zsh� permet des formats d�a�chage plus so�

phistiqu�s� mais cette commande n�existe pas dans le shell sh�

������ Entr�e de la valeur d�une variable au clavier �read�

read variable���

Une ligne est lue sur l�entr�e standard� Le premier mot est a�ect� � la premi�re variable�

le deuxi�me mot est a�ect� � la deuxi�me variable���� La derni�re variable re'oit le restant

de la ligne�

S�il y a moins de mots que de variables� les derni�res variables sont initialis�es � la

cha ne vide�

����� VARIABLES ��

Le code retour est � sauf si on a atteint une �n de �chier�

Exemples ��

�a� echo Nom du repertoire a lister �

read rep

ls �ld �rep � more

pour lire au clavier le nom d�un r�pertoire � lister�

�b� read v� v� v� )fichier

lit dans la premi�re ligne du �chier les valeurs des variables v�� v� et v�� On verra

la page ��� comment lire toutes les lignes d�un �chier�

������ Port�e d�une variable �export�� environnement de travail

L�environnement de travail d�un shell est constitu� des variables auxquelles le shell

donn� une valeur et des variables que le shell a h�rit�es du processus qui l�a lanc��

Une variable n�est ordinairement utilis�e que dans le shell o- elle re'oit son a�ectation

Si on veut la r�utiliser dans les programmes appel�s ult�rieurement par le shell� on do

exporter la valeur par export�

Remarque ��

On dira que les programmes appel�s ult�rieurement par un shellscript sont des de

cendants du shellscript qui les a appel�s� ou que le shellscript est un anc�tre de ce

programmes�

export variables���

recopie la valeur des variables dans l�environnement qui sera pass� aux programmes appel�

ult�rieurement�

Remarques ��

�a� Puisque c�est une recopie� les �ventuelles modi�cations des variables export�es n

modi�eront pas l�environnement du shellscript appelant�

�b� ksh et zsh permettent d�a�ecter des valeurs � des variables tout en exportant le

variables (

export a%� fichier%fich��

On obtiendra une erreur si le shellscript est ex�cut� par sh et il faut donc l��viter�

�c� export qui ne se comporte pas de la m�me fa'on dans les tous les shells (

) avec sh� si un programme modi�e une variable qui a �t� export�e par un pro

gramme anc�tre et s�il n�exporte pas cette variable �avant ou apr�s sa modi�

cation�� les programmes descendants qu�il appellera� recevront la valeur initia

pour cette variable �et non la valeur modi��e��

Si un programme modi�e la valeur d�une variable et veut transmettre la nouvel

valeur aux programmes qu�il appelle� il doit donc exporter cette variable�

Page 60: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� VARIABLES� ENVIRONNEMENT

) avec ksh et zsh� si une variable a �t� export�e par un programme� elle le sera

automatiquement par tous les programmes appel�s par le programme�

������ Visualisation des variables disponibles �set� printenv�

printenv

a�che les valeurs des variables de l�environnement du processus en cours �celles qu�il a

recues et celles qu�il a export�es� * �export� �sans nom de variable� donne un r�sultat

semblable sous zsh et ksh� mais sous sh� �export� donne uniquement le nom des variables

export�es par le shell en cours�

set

a�che les valeurs des variables disponibles �m�me celles qui ne sont pas export�es et qui

n�appartiennent pas � l�environnement qui sera transmis��

��� Personnalisation de l�environnement

��� �� Options des shells �set� setopt�

De nombreuses options permettent de con�gurer le fonctionnement des shells �voir en

particulier �������� Ces options peuvent �tre entr�es en param�tres lors du lancement du

shell ou positionn�es gr&ce � la commande set� On se reportera au manuel de r�f�rence du

shell pour la syntaxe utilis�e pour positionner les options�

On a vu aussi en ��� l�option ��o ignoreeof� et on verra l�utilit� des options ��v� et

��x� pour la mise au point des shellscripts en ������

La fonction interne setopt de zsh permet aussi de positionner les options du shell� On

peut avoir une liste de toutes les options positonn�e en tapant �setopt� seul�

Dans les sections suivantes nous allons �tudier les di��rents �chiers de con�guration

de l�environnement que le shell zsh ex�cutent automatiquement au d�marrage

��� �� Fichiers de personnalisation

4 chaque fois qu�un shell zsh est lanc�� des �chiers de con�guration sont lus et ex�cut�s

automatiquement par le shell�

Certains �chiers sont communs � tous les utilisateurs et permettent � l�administra�

teur du syst�me de leur donner un environnement minimum commun� Ce sont les �chiers

zshenv� zshrc� zprofile et zlogin du r�pertoire �etc�

Les autres �chiers sont situ�s dans le r�pertoire HOME de chaque utilisateur� Celui�

ci peut les cr�er ou les modi�er � sa convenance� Ce sont les �chiers �zshenv� �zshrc�

�zprofile et �zlogin

Ces �chiers ne sont pas toujours tous ex�cut�s� Voyons les di��rents cas�

�� �etc�zshenv

����� PERSONNALISATION DE L�ENVIRONNEMENT ��

est le seul �chier qui est toujours ex�cut�� Si n�cessaire� il donne un environnemen

minimum pour travailler�

Si zsh a �t� lanc� avec l�option ��f�� c�est le seul �chier de con�guration a �tr

ex�cut�

�� �zshenv

est toujours ex�cut� si zsh n�a �t� pas lanc� avec l�option ��f�� Il initialise les va

riables d�environnement indispensables au bon fonctionnement du shell dans tous le

cas �PATH par exemple��

�� �etc�zprofile et �zprofile

�ex�cut�s par les shells de login seulement� initialisent les variables d�environnemen

indispensables au bon fonctionnement du shell juste apr�s un login� Ce �chier n�es

en g�n�ral pas utilis� car un shell de login est le plus souvent un shell interactif et o

utilise alors plut�t le �chier ��zlogin� �voir ci�dessous��

�� �etc�zshrc et �zshrc

�ex�cut� par les shells interactifs seulement� contiennent les d��nitions d�alias� d

prompts et des variables li�es � l�utilisation interactive d�un shell�

Remarque ��

Quand on ouvre une nouvelle fen�tre X Window� ces �chiers sont ex�cut�s �apr�

les �chiers �etc�zshenv et �zshenv� par le nouveau shell qui s�ex�cute dans l

fen�tre�

Exemple ��

umask ���

definition des alias

alias ll%�ls �l�

alias x%�chmod u$x�

definition prompt � ordinateur et repertoire courant

PS�%&m��& �

definition de variables

export PRINTER%��

export MAIL%�usr�spool�mail��USER

export MANPATH%�usr�man��usr�local�man��usr�local�X��R�

export SAVEHIST%��� HISTFILE%�HOME��sh�history HISTSIZE%���

Pour compatibilite avec ksh �

setopt NO�NOMATCH

export NULLCMD%�

� �etc�zlogin et �zlogin

Page 61: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� VARIABLES� ENVIRONNEMENT

�ex�cut�s par les shells de login interactifs seulement� contiennent les initialisations

qui doivent �tre faites au d�but d�une session de travail interactive� en particulier

l�a�ectation des variables TERM et DISPLAY�

Exemple ��

if tty �s # then

stty dec crt

fiif � �z ��DISPLAY� � # then cas ou DISPLAY est vide

echo �������������������������������������������������

echo � �� vt���

�� X Window�

echo �n �Type de votre terminal �� par defaut� �

read terminal

case �terminal��� in

� TERM%vt���##

� TERM%xterm

echo �Nom du DISPLAY � �

read DISPLAY##

esac

fi

Remarque ��

Les �chiers utilis�s lors de l��criture de �chiers de con�guration �au moins ceux qui

ne sont pas li�s � un shell de login� doivent �tre d�sign�s par leur nom absolu car les

shells peuvent �tre lanc�s d�un autre r�pertoire que le r�pertoire de login�

��� Strat�gie pour la personnalisation de l�environne�

ment

On travaille le plus souvent dans plusieurs domaines bien distincts� par exemple� un

environnement pour le d�veloppement en langage Java� un environnement pour le travail

avec une base de donn�es et un autre pour la recherche d�information sur le Web�

Dans ce cas� il est pr�f�rable d�avoir des environnements de travail di��rents plut�t

que d�avoir un seul environnement alourdi par un grand nombre de variables et avec une

variable PATH contenant de nombreux r�pertoires�

Pour cela le plus simple est d�all�ger les �chiers d�initialisation vus ci�dessus en ne gar�

dant que les �l�ments qui seront utiles � tous les environnements� et de cr�er un shellscript

d�initialisation pour chacun des environnements� Chacun de ces shellscripts initialisera les

variables �en particulier la variable PATH�� placera l�utilisateur dans le bon r�pertoire de

travail et lancera les programmes n�cessaires �par exemple� il ouvrira une nouvelle fen�tre

X Window dans laquelle il lancera un programme pour travailler avec une base de donn�es��

��

Chapitre ��

Compl�ments sur le shell

Ce chapitre donne quelques compl�ments sur des notions d�j� �tudi�es dans les deu

chapitre pr�c�dents� Il pr�sente aussi quelques nouveaux aspects moins essentiels du langag

du shell�

��� Listes de commandes

Un pipe est une suite de commandes s�par�es par j� Le code retour d�un pipe est

code retour de la derni�re commande ex�cut�e�

Une liste de commandes est une suite de pipes ou de simples commandes * dans l

suite� par commodit�� �pipe� pourra d�signer une simple commande� s�par�es par un de

signes suivant (

� correspond � une ex�cution s�quentielle des pipes

. correspond � une ex�cution s�quentielle des pipes sans attente de la �n de l�ex�

cution du pipe pr�c�dent

.. le pipe suivant n�est ex�cut� que si le pipe pr�c�dent renvoie la valeur � �d�rou

lement �normal� du pipe pr�c�dent�

jj le pipe suivant n�est ex�cut� que si le pipe pr�c�dent ne renvoie pas la valeur

�d�roulement �anormal� du pipe pr�c�dent�

Exemples �

�a� rm fich �� echo Suppression impossible ��

�b� cat �� � ! write �� �� mail �� #"

shellscript qui envoie un message sur l��cran ou dans la bo te aux lettres d�un util

sateur connect� � la machine locale�

Quelques subtilit�s �false est une commande qui ne fait que renvoyer un code retou

non nul * true est une commande qui ne fait que renvoyer un code retour nul� (

false ++ echo � ++ echo �

n�a�che rien

Page 62: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� COMPL�MENTS SUR LE SHELL

true ++ echo � ++ echo �

a�che � et �

false �� echo � ++ echo �

a�che � et �

true �� echo � ++ echo �

a�che �

��� Ordre de priorit�

L�ordre de priorit� des di��rents signes qui ont une signi�cation particuli�re pour le

shell est �par ordre d�croissant� (

�� les redirections

�� j�� "" et jj

�� " et *

��� Fonctions

Les shellsripts peuvent contenir des d��nitions de fonctions qui pourront ensuite �tre

utilis�es dans le shell dans lequel elles ont �t� d��nies�

Les fonctions sont plus rapidement ex�cut�es que les shellscripts puisque le shell n�a pas

� aller chercher de �chier pour l�ex�cuter� De plus une fonction peut modi�er les variables

du shell appelant puisqu�elle s�ex�cute dans le m�me environnement que ce shell�

D��nition d�une fonction

nom�fonction �

!���

���"

L�accolade de �n de fonction doit �tre en d�but de ligne �ou pr�c�d�e de *��

Appel de la fonction

nom�fonction param� param� ���

���� COMPL�MENTS SUR LES REDIRECTIONS ��

Ex�cution de la fonction

Les commandes de la fonction s�ex�cutent dans le shell dans lequel la fonction a �t

appel�e� Les $�� $����� sont remplac�s par les param�tres d�appel de la fonction �param

param�������

Exemple ��

Si la fonction lt est d��nie par (

lt � ! ls �lt �� � more "

on pourra lancer la fonction par (

lt �bin

Plac�e � l�int�rieur d�une fonction la commande

return n

joue le r�le de la commande exit pour un shellscript ( elle arr�te l�ex�cution de la fonctio

en renvoyant le code retour n�

��� Compl�ments sur les redirections

����� Redirection de l�entr�e standard sur �chier inclus ����

�))� permet d�indiquer dans un programme des lignes qui seront lues sur l�entr�e stan

dard pendant l�ex�cution du programme� Le d�limiteur de ces lignes est indiqu� juste apr�

le signe �))�� Le d�limiteur de �n doit absolument �tre le premier caract�re dans sa lign

�avec �ventuellement des tabulations si on fait suivre �))� de ��� * voir ci�dessous� sino

on obtient des messages du type ��n de �chier inattendue� car le d�limiteur n�a pas �t

reconnu�

L�ensemble des lignes ainsi d�limit�es est appel� un �chier inclus� En e�et� tout se pass

comme si elles appartenaient � un �chier vers lequel on redirigeait l�entr�e standard�

Si le premier caract�re du d�limiteur est pr�c�d� de ���� cela signi�e que le shell ne do

pas interpr�ter les caract�res sp�ciaux � � �� ,� ���� situ�s entre les deux d�limiteurs� Tou

se passe comme si le texte entre les deux d�limiteurs �tait entour� du caract�re ��

Si ��� est ajout� � la suite de �))�� toutes les tabulations de d�but de ligne sont enlev�e

du �chier inclus� Ceci permet d�indenter ces lignes si elles appartiennent� par exemple�

une boucle �for� ou � une structure �if��

Utilis� avec l��diteur de texte ed � la notion de �chier inclus permet de modi�er un �chie

avec des commandes construites dans un shellscript� Nous n��tudierons pas ici l��diteur d

texte ed� Les commandes de ed utilis�es dans l�exemple ci�dessous sont (

s substitue une cha ne de caract�res � une autre� Dans chaque ligne� seule la premi�r

occurrence de la cha ne cherch�e sera remplac�e sauf si on ajoute l�option �g� � la �

de la commande �voir exemple ci�dessous�� Comme la commande suivante� �s� peu

Page 63: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� COMPL�MENTS SUR LE SHELL

�tre pr�c�d� d�un intervalle de lignes qui indique les lignes sur lesquelles portera la

commande ��$� d�signe la derni�re ligne��

En fait� les cha nes de caract�res peuvent �tre des expressions r�guli�res et on peut

se r�f�rer dans la deuxi�me cha ne � une sous�cha ne de la premi�re� Par exemple�

s�������� �(��� ����� est le prenom de ���

transformera �Dupond�Pierre� en �Pierre est le prenom de Dupond��

Consultez le manuel en ligne de ed pour plus de pr�cisions�

g ex�cute une commande sur toutes les lignes qui contiennent une expression r�guli�re

�par exemple� ��(�g��toto�d� supprime les lignes qui commencent par �toto� dans

les premi�res lignes�

w sauvegarde le �chier en cours d��dition�

q quitte ed�

La syntaxe d�appel de ed est (

ed ��s� fichier

o- l�option ��s� indique que l�on ne veut pas que ed a�che certaines informations comme�

par exemple� le nombre d�octet enregistr�s lors de la commande �w��

Exemple ��

ed �s �� ))FIN

�(��s�������g

wq

FINLe shellscript �remplace� ci�dessus remplace une cha ne par une autre dans un �chier

�par exemple ( �remplace ch� ch� fichier��

����� Redirection pour tout un shell �exec�

La commande interne exec� outre le lancement d�une comande en remplacement du

shell� permet des redirections qui seront valables jusqu�� la sortie du shell� La commande

suivante� plac�e dans un shellscript� enregistrera tous les messages d�erreurs du shellscript

dans le �chier �suivi�err�� jusqu�� la �n du shellscript (

exec ��suivi�err

���� Descripteurs de �chier sup�rieurs � �

On sait que les trois �chiers standards sont ouverts avec les descripteurs �� � et �� Un

shellscript peut ouvrir d�autres �chiers en utilisant les descripteurs sup�rieurs � ��

���� COMPL�MENTS SUR LES REDIRECTIONS ��

Si le signe de redirection ��� ou ��� est pr�c�d� d�un nombre entier� cela signi�e qu

la redirection concerne le �chier dont le descripteur est le nombre entier donn�� et no

l�entr�e� la sortie ou l�erreur standard� Il ne doit pas y avoir d�espace entre le num�ro et

signe qui le suit�

Exemples ��

�a� �) fichier et �� fichier

ces deux commandes ouvrent �chier avec le descripteur � �et non pas le descripteu

� ou � s�il n�y avait pas eu le ��� La di��rence est que la deuxi�me redirection �cras

fichier�

�b� Pour fermer le �chier ouvert avec le descripteur �� on utilise les commandes )+� e

�+� �pas d�espace apr�s le signe de redirection� qui ferment les �chiers d�entr�e et d

sortie standard * la commande suivante ferme le �chier de descripteur � (

�)+�

����� Redirection vers un �chier d�sign� par son descripteur

�+n �resp� �+n

signi�e que la sortie �resp� entr�e� standard est redirig�e vers le �chier ouvert avec

descripteur n et que les deux �chiers partagent le m�me pointeur de �chier �voir fonctio

dup�� en langage C�� Il ne faut pas d�espace entre � et "�

�� fichier� �crase fichier et positonne le pointeur de poistions courante du �chie

au d�but du �chier alors que ��+n� �ou �)+n�� d�signe un �chier sans modi�er la valeur d

position courante�

Exemples ��

�a� Pour a�cher un message d�erreur (

echo ���� Erreur ����� �+�

�b� Si on veut faire imprimer les erreurs de syntaxe d�un programme en langage C (

cc pgm�c ��+� � lpr

car les erreurs sont redirig�es vers la sortie standard qui est envoy�e par le pipe � l

commande lpr�

����� Ordre d��valuation des redirections

Les redirections sont �valu�es de gauche � droite� Par exemple� les deux redirection

suivantes

��fich� ��+�

vont rediriger la sortie standard et le �chier standard des erreurs vers �ch�� Dans l�ordr

inverse� seule la sortie standard aurait �t� redirig�e vers �ch��

Page 64: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� COMPL�MENTS SUR LE SHELL

���� Redirection sans commande avec zsh

Avec les shells sh ou ksh� une redirection sans commande ne va rien faire ��) fichier��

ou va cr�er un �chier vide ��� fichier��� Avec zsh� une commande par d�faut est ajout�e

avant la redirection� Le nom de cette commande est contenue dans la variable NULLCMD *

c�est la commande cat par d�faut� Si on veut que zsh se comporte comme sh et ksh� on

ajoute les lignes suivantes dans le �chier �zshrc (

NULLCMD%�

export NULLCMD

�� Compl�ments sur les variables

����� Valeurs par d�faut pour les variables

Il est possible de substituer des valeurs aux valeurs des variables ou des param�tres de

position comme suit �les valeurs r�elles des variables ou param�tres ne sont pas modi��es

par ces substitutions sauf pour �3���

On dit qu�une variable est activ�e si elle a re'u une valeur� Un param�tre de position

est activ� si la commande a �t� lanc�e avec au moins autant d�arguments que le num�ro

du param�tre�

$;variable�mot:

si la variable n�est pas activ�e� elle est remplac�e par la valeur mot�

$;variable�mot:

si la variable n�est pas activ�e� mot est a�ch� et l�ex�cution est arr�t�e� Si mot est omis�

un message standard est a�ch��

$;variable1mot:

si la variable est activ�e� elle est remplac�e par mot� sinon la cha ne vide est substitu�e�

$;variable3mot:

si la variable n�est pas activ�e� sa valeur devient mot� Ne marche pas pour les param�tres

de position�

Remarque �

�mot� est interpr�t� par le shell� sauf quand il suit un ���� Il peut ainsi �tre une

substitution de commande ou d�signer la valeur d�une variable�

Exemples ��

�a� cd �!rep%�HOME"

�b� var%�!��il manque des parametres"

�c� cd �!DIR��HOME"

Si les signes ���� 1� 3 sont pr�c�d�s du signe ���� le comportement pour une variable

�gale � la cha ne vide est le m�me que pour une variable non activ�e� Par exemple�

����� COMPL�MENTS SUR LES VARIABLES ��

�!var�%val"

donnera la valeur �val� � la variable var si celle�ci est �gale � la cha ne vide�

����� Modi�er l�environnement d�une commande

On peut modi�er l�environnement d�une commande en la pr��xant d�une ou de plusieur

a�ectations de variables �s�par�es par des espaces��

Exemple ��

rep3#usr#bin commande arguments���

Attention� la port�e de cette a�ectation se limite � la commande pr��x�e * l�a�ectatio

ne modi�era pas l�environnement du shell dans lequel la commande aura �t� tap�e�

Exemple ��

a%�a%� echo �a

a�chera et pas car la commande echo est une commande interne au shell�

Erreur � ne pas faire ( si l�on veut concat�ner deux valeurs dans une variable �pa

exemple �abc� et �def��� en les s�parant par un espace� ne pas �crire

a%abc def

qui serait interpr�t� comme le lancement de la commande �def� en lui exportant la valeu

�abc� de la variable �a�� Ecrire plut�t (

a%�abc def�

���� Facilit�s de ksh et zsh pour le traitement des valeurs d

variables

ksh et zsh o�rent un plus par rapport � sh �� ne pas utiliser si on veut �crire u

shellscript portable sur sh * utiliser plut�t la commande expr� (

�! variable"

donne la taille du contenu de la variable�

�!variable mod�le"

�o- mod�le est une cha ne de caract�res pouvant contenir les caract�res sp�ciaux utilis�

par la g�n�ration des noms de �chiers par le shell� si mod�le correspond au d�but de l

valeur de variable� la valeur renvoy�e est la valeur de variable sans la plus petite portio

de texte du d�but qui correspond � mod�le� Sinon� la valeur renvoy�e est celle de variabl

�!variable mod�le"

la m�me chose que ci�dessus mais on supprime la plus grande portion de texte du d�bu

qui correspond � mod�le�

�!variable&mod�le"

ou

Page 65: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� COMPL�MENTS SUR LE SHELL

�!variable&&mod�le"

la m�me chose que et mais on supprime la portion de texte de la �n de la valeur de

variable qui correspond au mod�le�

Exemples ��

�a� Si var contient la valeur �usr�local�bin�

�!var �"

est �gal � bin et

�!var �"

est �gal � usr�local�bin �sans le # du d�but�

�b� Si on travaille avec ksh� on peut placer

PS�%��!PWD �HOME�"� �

dans le �chier �profile pour avoir un prompt qui indique le r�pertoire courant sans

�tre trop long pour les noms de r�pertoire qui sont sous le r�pertoire courant�

����� Modi�cation interactive de la valeur d�une variable sous

zsh �vared�

zsh o�re une facilit� pour modi�er en interactif la valeur d�une variable avec la com�

mande vared ��variable editor ��� Par exemple�

vared PATH

permet de modi�er la valeur de la variable PATH � la mani�re de emacs�

����� Tableaux sous ksh et zsh

Les shells ksh et zsh permettent d�utiliser des tableaux�

La syntaxe n�est pas la m�me pour ces deux shells� Nous ne donnerons que des exemples

avec la syntaxe de zsh (

samoa� tableau%�abc def

samoa� echo �tableau

abc def

samoa� echo �tableau���

abcsamoa� echo �tableau���

def

��

Quatri�me partie

Programmation

Page 66: Unix et programmation du shell Table des mati res

��

Chapitre �

Programmation des shellscripts

Ce chapitre �tudie les commandes les plus souvent utilis�es dans l��criture des shell

cripts� Toutes ces commandes sont internes au shell� sauf la commandes expr�

���� Tests divers �test� � ��� �� �� ��� ��

Cette commande permet de tester une condition� Elle est souvent utilis�e par les struc

tures de contr�le du shell� Cette commande est interne ou externe selon les shells et le

versions d�Unix et les options peuvent varier suivant les versions �consultez le manuel e

ligne��

test condition

ou� condition �

renvoie � si condition est vraie et une valeur di��rente de � si condition est fausse�

Dans la deuxi�me forme� ��� est le nom d�une commande synonyme de la command

�test�� Le ��� est l� pour �faire joli�� Il ne faut pas oublier les espaces de part et d�autre d

condition�

Quelques conditions �attention � bien s�parer les di��rents �mots� par des espaces� (

�d �chier vrai si �chier est un r�pertoire

�f �chier vrai si �chier est un �chier ordinaire

�r �chier vrai si on a l�autorisation de lire �chier

�w �chier vrai si on a l�autorisation d��crire dans �chier

�x �chier vrai si on a l�autorisation d�ex�cution dans �chier

�s �chier vrai si �chier n�est pas vide

cha�ne

�n cha�ne vrai si la cha ne n�est pas vide

�z cha�ne vrai si la cha ne est vide

n� �eq n� vrai si les � nombres entiers n� et n� sont �gaux� A la place de eq on peu

avoir ne� gt� ge� lt� le �pour ��� �� �� �� ���

Page 67: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

cha�ne� cha�ne�

vrai si les � cha nes sont �gales

cha�ne� , cha�ne�

vrai si les � cha nes ne sont pas �gales

�t �num�ro�vrai si le num�ro est le num�ro d�une voie ouverte sur un terminal �par

d�faut� num�ro est �gal � �� c�est���dire correspond � la sortie standard�

�L �chier vrai si �chier est un lien symbolique� Cette option existe pour la commande

interne de ksh et de zsh mais pas pour toutes les commandes externes� Elle

peut aussi s�appeler ��h� pour certaines commandes externes�

Remarque �

Si un lien symbolique pointe sur un r�pertoire� l�option ��d� est vraie sur ce lien� Il faut

donc commencer par tester si c�est un lien symbolique si on veut faire la di��rence�

On peut combiner ces conditions avec les op�rateurs logiques

�a et logique

�o ou logique

, n�gation logique

On peut regrouper avec des parenth�ses �entour�es d�un espace de part et d�autre et

pr�c�d�es par n pour qu�elles ne soient pas interpr�t�es par le shell��

Exemples �

�a� test �d �� ++ echo OUI �� echo NON

�b� test �� �d fich �o �f fich� � �a �var % oui

De plus ksh et zsh o�rent un m�canisme interne pour tester les expressions condition�

nelles (

�� expression conditionnelle ��

�des espaces sont n�cessaires entre �expression conditionnelle� et les doubles crochets��

Les expressions sont les m�mes que pour test mais le et logique se traduit par �++� et le

ou logique par �����

On dispose aussi de quelques ajouts� Par exemple� �)� et ��� permettent de comparer

deux cha nes de caract�res dans l�ordre lexicographique �ordre du dictionnaire�� �cha�ne %

mod�le� est vrai si cha�ne correspond � mod�le qui peut contenir les caract�res sp�ciaux

utilis�s dans la g�n�ration des noms de �chiers �voir ����

Aucune g�n�ration des noms de �chiers n�est e�ectu�e par le shell dans �expression

conditionnelle��

Exemple ��

�� �fichier % �c ��

����� D�CALER LES PARAM�TRES DE POSITION �SHIFT ��

���� D�caler les param�tres de position �shift

shift �n�

d�cale les param�tres de position de n positions� Par d�faut n est �gal � � ( $� devient $

$� devient $�� etc�

shift est souvent utilis� par les structures de contr�le de r�p�tition pour utiliser � tou

de r�le les di��rents param�tres de position �voir exemples en ��������

Exemple ��

Si le shellscript �decale� contient

shift

echo ��

l�ex�cution de �decale � �� a�chera ��

���� Sortie d�un shellscript �exit

exit �n�

fait sortir du shell �donc en g�n�ral du shellscript qui est ex�cut� par le shell * voir �����

en renvoyant le code n �voir �������

Exemple ��

exit �

Si le shellscript ne se termine pas par un exit ou si exit n�est pas suivi d�un nombre n

il renvoie le code de la derni�re commande qu�il a ex�cut�e�

Remarque ��

Il faut se m��er des constructions des shells qui cr�ent implicitement un sous�she

�voir ���� ou �������� Si une commande exit s�ex�cute dans un de ces sous�shells� el

ne fera sortir que du sous�shell et pas du shellscript�

���� Les structures de contr�le

������ if �� then �� else �� �

Les commandes Unix renvoient toute un code retour qui est un nombre entier �voir ����

En g�n�ral� si la commande s�est bien d�roul�e� elle renvoie � * s�il y a eu une erreu

ou un d�roulement anormal de la commande� le code renvoy� est n�gatif ou strictemen

positif�La commande if prend en compte ce code renvoy� par les commandes�

Page 68: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

if liste�commandes # then

liste�commandes

elseliste�commandes

fiteste la valeur renvoy�e par la liste de commande qui suit le if �code de la derni�re com�

mande de la liste ex�cut�e�� Si la valeur est nulle� la liste de commandes qui suit le then

est ex�cut�e� sinon c�est la liste qui suit le else qui est ex�cut�e�

Remarque ��

Les mots cl�s if� then� else� � doivent appara tre en d�but de ligne �pr�c�d�s seulement

d�espaces ou de tabulations� pour �tre reconnus par le shell� Si on veut les mettre

� la suite d�autres instructions sur la m�me ligne il faut les faire pr�c�der d�un �#��

La pr�sentation choisie dans ce cours suit le format couramment utilis� en langage

C �else align� avec le if �� Le then est plac� sur la m�me ligne que le if et il est donc

pr�c�d� d�un �#��

Exemples ��

�a� if cp rep�� rep� # then

�else

echo �Impossible de copier les fichiers� �+�

fi

�b� !crivons un shellscript �oui� qui pourra �tre utilis� par d�autres shellscripts� Il ren�

verra � si l�utilisateur r�pond oui et il renverra � sinon (

read reponse

if test ��reponse� % oui # then

exit �

elseexit �

fiOn peut utiliser ce shellscript dans un autre shellscript comme suit (

echo �n �Confirmez�vous la suppression � �

if oui # then

rm

fiRemarque ��

Puisqu�en l�absence de commande exit� un shellscript sort avec le code retour de

la derni�re commande ex�cut�e� le shellscript �oui� pourrait aussi s��crire (

read reponse

test ��reponse� % oui

���� LES STRUCTURES DE CONTR�LE ��

Variantes de if

if liste�commandes # then

liste�commandes

fiif liste�commandes # then

liste�commandes

elif liste�commandes # then

liste�commandes

elif ���

������

elseliste�commandes

fiCette structure est un raccourci plus simple et plus lisible pour la structure suivante

if liste�commandes # then

liste�commandes

elseif liste�commandes # then

liste�commandes

elseif ���

������

���

elseliste�commandes

fi

fi

fiExemple ��

if test ��reponse� % oui # then

exit �

elif test ��reponse� % non # then

exit �

elseexit �

fi

Page 69: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

������ case ��� esac

case mot in

mod�le� liste�commandes ##

��

mod�len liste�commandes ##

esaccase est une instruction de choix multiple ( le premier mod�le rencontr� qui correspond

� la valeur de mot indique la liste de commandes � ex�cuter� Si mot ne correspond � aucun

des mod�les� l�ex�cution se poursuit � l�instruction qui suit �esac��

Les mod�les sont de la forme (

val� � val���� � valp

Dans les mod�les� on peut utiliser les caract�res sp�ciaux �� � �� comme dans les

noms de �chiers �voir ���� On peut ainsi tester si une valeur commence par un chi�re par

le mod�le ������ ��

Exemple ��

Le shellscript �oui� donn� en b peut s��crire (

read reponse

case ��reponse� in

o�O�oui�OUI exit � ##

n�N�non�NON exit � ##

exit � ##

esac

����� for ��� do ��� done

Il est fr�quent d�avoir un traitement qui se r�p�te pour chaque param�tre d�une com�

mande �par exemple� �lpr �ch� �ch���� La commande for permet de traiter successivement

tous les param�tres d�une commande� Elle permet aussi de r�p�ter un traitement pour

plusieurs valeurs di��rentes�

for variable �in mots����

doliste�commandes

done

variable prend � tour de r�le pour valeur chaque mot de la liste mots qui suit �in�� Pour

chaque valeur de variable� liste�commandes est ex�cut�e�

Si �in mots���� n�est pas pr�sent� variable prend pour valeur chacun des param�tres de

la commande �ce qui est �quivalent � ( for variable in �$/� * voir ������

Remarque ��

Une boucle �for� sans �in� ne modi�e pas les valeurs de $�� $�����

���� LES STRUCTURES DE CONTR�LE ��

Exemples ��

�a� for i in � � �

doecho �i

done

�b� Pour voir la di��rence entre $� et $/� ex�cutez le shellscript suivant avec quelque

param�tres� remplacez ensuite $� par $/ et ex�cutez le � nouveau avec les m�me

param�tres� Notez la di��rence� Dans la premi�re version on n�a qu�un seul �tour

car �� � est consid�r� comme un mot unique�

for i in �� �

doecho �i

done

�c� Le shellscript �cherche� suivant a�che les chemins d�acc�s des �chiers donn�s e

argument (

for fichier

dofind � �name ��fichier� �print

done

Il su�ra de taper

cherche fich� fich� fich�

pour faire a�cher les chemins d�acc�s des �chiers sp�ci��s�

Si on veut ajouter quelques tests et entrer la racine de la recherche en premier para

m�tre� le shellscript cherche devient (

if test � �lt � # then

echo ��� � Il faut au moins � arguments� �+�

exit �

fiif test � �d �� # then

echo ��� � �� n�est pas un repertoire� �+�

exit �

firacine%��

shift

for fichier

dofind �racine �name ��fichier� �print

done

Page 70: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

�d� Pour ex�cuter un traitement �ici a�cher le nom� sur tous les �chiers d�un r�pertoire

on utilise la substitution de commande (

for i in ,ls �A,

doecho �i

done

������ while ��� do ��� done

while liste�commandes�

doliste�commandes�

done

ex�cute liste�commandes� tant que liste�commandes renvoie un code ��

Exemples ��

�a� while test ����

doecho ��

shift

done

a�che tous les param�tres� un par ligne� Retenez le test sur $� pour rep�rer le dernier

param�tre�

�b� Si le shellscript �coucou� contient (

while �

doecho coucou

sleep ��

done

Si on tape

coucou +

il s�a�chera �coucou� sur l��cran toutes les �� secondes �ne pas rediriger sur le terminal

du coll�gue ,�� La commande interne ��� est une commande qui ne fait rien et renvoie

le code retour � �voir �����

�c� Pour rechercher dans l�arborescence une liste de �chiers �$�� situ�s sous des r�per�

toires di��rents �$��� on peut utiliser le shellscript suivant �le shellscript �cherche� a

�t� �crit en c� (

while � ���� � teste la fin de la liste

���� LES STRUCTURES DE CONTR�LE ��

docherche ���� ����

shift �

done

�d� Lecture ligne � ligne d�un �chier structur� en lignes (

while read ligne

doecho �ligne

done ) fichier

������ until ��� do ��� done

Est semblable � while mais la sortie de la boucle s�e�ectue si la liste de commandes qu

suit until renvoie une valeur nulle�

����� Instructions li�es aux boucles �continue� break�

continue �n�

permet de sauter � la �n de la boucle et de recommencer une nouvelle boucle�

break �n�

provoque la sortie de la boucle en cours d�ex�cution et passe � l�instruction qui suit l

boucle�On peut ajouter un nombre entier n � la suite de ces � instructions pour indiquer qu

l�action porte sur des boucles externes� Par exemple� �break �� sortira de la boucle qu

englobe la boucle dans laquelle cette instruction est �crite�

������ Problmes avec les boucles redirig�es et les pipes

Lorsqu�une boucle est redirig�e vers un �chier� le shell l�ex�cute dans un sous�shell�

en est de m�me avec les commandes d�un pipe �sauf peut��tre la derni�re commande��

Ceci implique les deux probl�mes suivants (

) une commande exit ne sortira pas du shellscript mais seulement de la boucle ou d

pipe�

) les a�ectations de variables � l�int�rieur de la boucle ne seront pas connues en dehor

de la boucle ou du pipe�

Remarque ��

Malgr� tout on n�est pas oblig� d�exporter une variable pour qu�elle soit connue de

sous�shells engendr�s par le shell pour ex�cuter la boucle redirig�e �v�ri�ez�le tout d

m�me pour la version du shell que vous utilisez��

Page 71: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

Voici des m�thodes �de type �bidouillage�� pour contourner ces deux probl�mes dans le

cas d�une boucle redirig�e (

) Pour le probl�me du exit� il n�y a pas de solution miracle� On doit s�adapter � chaque

cas particulier� On peut envoyer un code retour sp�cial avec la commande exit �

l�int�rieur de la boucle �par exemple � et on teste le code retour juste � la sortie de

la boucle� On peut ainsi sortir du shellscript si le code retour lu est le code sp�cial

choisi�

) Pour l�a�ectation de variable� il n�y a pas non plus de solution simple� On peut

�crire l�a�ectation dans un �chier temporaire que l�on ex�cute avec la commande ���

�voir �������� � la sortie de la boucle� Par exemple �la valeur de �� est la m�me dans

les sous�processus du pipe mais il vaut mieux v�ri�er��

echo �var%valeur� � ftemp��

On peut aussi dans certains cas utiliser la substitution de commande comme il est

d�crit ci�dessous pour le pipe� C�est alors la solution la plus �propre��

) Pour le pipe� une solution est d�utiliser un �chier temporaire qui contient les infor�

mations que l�on veut faire passer au shell qui a appel� le pipe� Dans certains cas� une

autre solution est de mettre le pipe dans un shellscript � part �ou une fonction�� de

faire a�cher par ce shellscript les informations que l�on veut r�cup�rer� et d�utiliser

une substitution de commande pour r�cup�rer ces valeurs� Cette derni�re solution

est aussi utilisable dans le cas d�une boucle redirig�e�

��� Interception des signaux

trap �liste�commandes� n���

Le plus souvent� un processus s�interrompt quand il re'oit un signal �voir ������� La com�

mande trap permet un comportement di��rent � la r�ception du signal ( liste�commandes

sera ex�cut�e si le programme re'oit un des signaux dont le num�ro est indiqu� dans la liste

des n * ensuite� le programme continue � l�endroit o- il �tait au moment de la r�ception du

signal �sauf si une instruction comme exit a �t� ex�cut�e entre temps��

Si n est �� la liste de commandes sera ex�cut�e � la sortie du shell en cours �en g�n�ral�

� la �n de l�ex�cution du �chier de commande qui contient l�instruction trap� ou � la sortie

de la fonction �voir ���� dans laquelle a �t� d��ni le trap�

Si liste�commandes est la cha ne nulle �indiqu�e explicitement par �� ( � apostrophes

accol�es�� le signal est ignor��

Si liste�commandes est absente� le signal sera � nouveau trait� normalement� �trap�

�sans aucun param�tre� a�che la liste des commandes associ�es � chacun des signaux�

La liste de commandes du trap est lue et interpr�t�e une premi�re fois quand le shell

lit la ligne qui comprend la commande trap et le r�sultat de la premi�re interpr�tation est

interpr�t�e une deuxi�me fois si la liste de commande est ex�cut�e apr�s la r�ception d�un

signal�

����� INTERCEPTION DES SIGNAUX ��

Ces signaux sont pour la plupart des signaux d�interruption pour cause de d�roulemen

anormal �erreur au niveau du bus� m�moire insu�sante� etc�� ou d�interruption par l�util

sateur �l�appui sur la touche d�annulation correspond au signal num�ro ��� La command

kill ��tudi�e en ���� permet d�envoyer un signal � un processus rep�r� par son num�ro�

Exemples ��

�a� trap �� � les deux apostrophes designent la chaine vide

ignore l�interruption par la touche d�annulation

�b� trap �

r�tablit la prise en compte de cette touche

�c� temp%temp��

trap �rm �f �temp # exit �� � � ��

supprime le �chier temporaire dont le nom est compos� de la cha ne �temp� suiv

du num�ro de processus� � la �n du programme� si l�utilisateur appuie sur la touch

d�annulation ou si le programme a �t� interrompu par un �kill� ou par la d�connexio

de l�utilisateur�

Port�e d�un trap ( Le trap est en activit� dans un shellscript � partir du moment o-

est lu et jusqu�� ce qu�un autre trap sur le m�me signal soit lu� Les sous�shell n�h�riten

pas d�un traitement du signal initi� par un trap� Cependant� si un shellscript ignore u

signal� le signal ne sera pas transmis � ses �ls�

Exemples �

�a� Lancez le programme suivant� tapez sur la touche d�annulation et voyez le messag

s�a�cher � l��cran�

trap �echo �� � fin de programme # exit �� �

coucou

o- coucou est le shellscript suivant (

while �

doecho coucou

sleep �

done

�b� Le sch�ma ci�dessous permet d�interrompre �commande� en tapant la touche d�annu

lation� sans interrompre le programme principal * l�ex�cution reprend � la suite d

programme�

trap �trap �� �� � les guillemets pour entourer la chaine

Page 72: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

avec les deux apostrophes

commande

trap �� �

Suite du programme���

Si le premier trap �tait trap �� �� on ne pourrait pas interrompre la commande�

On pourrait aussi mettre trap � � comme premier trap mais il pourrait peut��tre

y avoir un probl�me si la touche d�annulation �tait tap�e pendant l�ex�cution du

deuxi�me trap �plac� apr�s la commande� ( le signal � ne serait plus ignor� dans la

suite du programme�

��� Commandes internes diverses

�commande nulle �elle peut �tre suivie de commentaires sur la m�me ligne�� Elle renvoie

le code � ce qui permet de construire des boucles in�nies �voir exemple de while de la

page �����

eval cha�nes���

les cha nes sont interpr�t�es par le shell et elles sont ensuite ex�cut�es comme si elles avaient

�t� tap�es au clavier �donc avec une nouvelle interpr�tation du shell�� Cette commande

permet de construire des commandes complexes morceau par morceau et des les ex�cuter

ensuite� Elle permet aussi des astuces qui sont li�es � une double interpr�tation du shell

comme dans l�exemple suivant�

Exemple ��

eval dernier%����

a�ecte � la variable �dernier� la valeur du dernier param�tre de position du shellscript�

En e�et� quand le shell lit la commande et l�interpr�te� la commande devient

eval dernier%��

�s�il y avait par exemple � param�tres de position� car le shell e�ectue la substitution

de variable �$���

La commande interne �eval� est ensuite lanc�e ( elle commence par interpr�ter la

cha ne �dernier%��� comme le ferait le shell� Cette cha ne devient �dernier%toto�

�si �toto� est la valeur du troisi�me param�tre��

L�a�ectation est ensuite ex�cut�e et on obtient bien ce que l�on voulait�

exec commande

la commande est ex�cut�e � la place du shell sans cr�ation de nouveau shell�

On a vu en ����� que exec permet aussi de faire des redirections d��nitives dans le

shell�wait �n�

attend le processus �ls de pid n� Si n n�est pas sp�ci��� attend tous les processus �ls�

����� R�CURSIVIT� DANS L�EX�CUTION DES SHELLSCRIPTS ��

Cette commande permet de lancer des processus en arri�re�plan et d�en attendre certain

avant de continuer une action� Il peut �tre utile de conserver le pid d�un processus lanc

en arri�re�plan dans une variable � l�aide de la variable sp�ciale $, �voir ������

���� R�cursivit� dans l�ex�cution des shellscripts

Un shellscript �ou une fonction� peut s�appeler lui�m�me� Par exemple le shellscrip

�dirr� suivant a�che tous les sous�r�pertoires de l�arborescence d�un r�pertoire donn� e

param�tre en d�calant les di��rents niveaux de sous�r�pertoires (

dir%�!���"

indent%��

for fich in ,ls �A �dir,

doif � �d �dir��fich �# then

echo ��indent��fich

�� �dir��fich ��indent �

fi

done

Remarques ��

�a� L�utilisation de $� au lieu du nom du shellscript assure que le shellscript fonctionner

m�me si on change son nom�

�b� L�ex�cution de ce shellscript risque de provoquer une erreur si l�arborescence d

r�pertoire est profonde et si la m�moire allou�e � la pile est trop faible�

���� Calculs� traitement des cha�nes de caract�res

ksh et zsh fournissent la commande interne let pour e�ectuer des calculs arithm�tique

Cette commande n�existe pas dans sh mais on peut utiliser la commande expr�

expr permet aussi d�extraire des sous�cha nes d�une cha ne de caract�res�

������ Commande expr

expr arguments���

�value les arguments comme une expression� Le r�sultat est envoy� sur la sortie standard

Ce n�est pas une commande interne au shell mais elle est tr�s utile dans l��criture d

shellscripts

Attention� sauf pour les options ci�dessous o- le code retour est indiqu�� le code retou

renvoy� est � lorsque la valeur envoy�e sur la sortie standard est di��rente de � et � si l

valeur est ��

Les calculs se font sur des entiers cod�s sur �� bits en compl�ment � ��

Page 73: Unix et programmation du shell Table des mati res

�� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

arguments est une expression comprenant des op�rateurs� On peut utiliser les op�rateurs

suivants� Il ne faut pas oublier de les prot�ger contre une interpr�tation du shell s�ils sont

des caract�res sp�ciaux pour le shell �par exemple� les caract�res ) � + ���

Voici ces op�rateurs par ordre de priorit� croissante� regroup�s par groupes d��gales

priorit�s (

exp� n j exp�si exp est non nulle et non vide� elle est envoy�e sur la sortie standard� sinon

si exp� est non nulle et non vide� elle est envoy�e sur la sortie standard� sinon

� est envoy�e sur la sortie standard�

exp� n. exp�si exp et exp� sont non nulles et non vides� exp est envoy�e sur la sortie

standard� sinon � est envoy�e sur la sortie standard�

exp� op�comp exp�

o- op�comp est un op�rateur de comparaison (

) )% % �% �% �

La comparaison est num�rique si les deux expressions sont num�riques * elle

est lexicographique sinon� Envoie � sur la sortie standard si l�expression est

vrai et � sinon�

exp� * exp�

exp� � exp� addition et soustraction

exp� n� exp�

exp� � exp�

exp� n/ exp� multiplication� division et modulo

Autres arguments (

cha�ne �une seule cha ne de caract�re� envoie cha�ne sur la sortie standard et le

code retour � si cha�ne est non vide * envoie une ligne vide et le code retour

� si cha�ne est vide�

cha�ne � exp�regrenvoie le nombre de caract�res de cha�ne qui peuvent �tre d�sign�s par

l�expression r�guli�re exp�reg �voir chapitre ���� exp�reg doit repr�senter le

d�but de cha�ne et il ne faut donc pas commencer exp�reg par le caract�re

����Si une partie de l�expression r�guli�re est parenth�s�e par �� et �� expr

renvoie la sous�cha ne de cha�ne qui correspond � cette partie� Le code

retour � est renvoy� si l�expression r�guli�re exp�reg ne correspond � aucune

sous�cha ne de cha�ne et � sinon�

On peut regrouper les expressions en les parenth�sant par � et ��

Exemples ��

�a� a%,expr �a $ �,

incr�mente a de ��

����� CALCULS� TRAITEMENT DES CHA�NES DE CARACT�RES ��

�b� Le programme suivant a�che les nombres entiers de � � (

a%�while � �a �lt �� �

doecho �a

a%,expr �a $ �,

done

�c� expr ��a� � �� �

a�che le nombre de caract�res de la cha ne contenue dans la variable a�

�d� expr ���abc � ������ �

a�che ��

�e� Le shellscript �option� suivant a�che le nombre n associ� � une option ��n�� Il renvoi

le code retour � si le param�tre ne commence pas par le caract�re ��� (

expr �� � ����� ��

������ Commande let

Cette commande n�existe pas en sh� Elle est disponible dans ksh et zsh�

let expression arithm�tique

permet d�a�ecter des valeurs num�riques � une variable�

L�expression arithm�tique doit �tre un seul mot pour le shell �on peut l�entourer d

guillemets pour cela�� Il ne faut pas faire pr�c�der les noms des variables du shell par

signe $ pour d�signer leur contenu�

Exemples ��

�a� let a%��$b

�b� let �a % �� a�

��expression arithm�tique

est �quivalent �

let �expression arithm�tique�

�voir �����

Exemples ��

�a� ��a%��$b

�b� ��a % �� a

Pour des calculs plus complexes on utilisera la commande bc�

Page 74: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

���� Traitement des cha�nes de caract�res

Le langage Perl permet d�e�ectuer de nombreuses manipulations sur les cha nes de

caract�res� Le langage est complexe et n�est pas �tudi� dans ce cours� Son usage doit

�tre envisag� pour les programmes qui comportent beaucoup de traitements de cha nes de

caract�res� Il est en particulier tr�s utilis� dans les programmes �CGI� �Common Gateway

Interface� install�s sur les serveurs Web �voir cours polycopi�s sur les r�seaux��

La commande habituelle utilis�e pour la manipulation de cha nes de caract�res est la

commande expr �voir ��������

Voici des m�thodes �plus ou moins� simples pour extraire une sous�cha ne de caract�res�

Pour ces exemples� on extrait l�heure les minutes et les secondes en utilisant la commande

date et la substitution de commande �voir ����� (

heure%,date � cut �c�����,

heure%,date � awk �!print ��"�,

heure%,date � read a b c d e# echo �d,

heure%,date � sed �s��� � �� � �� � ���� � �� �����,

heure%,set �,date�, # echo ��,

heure%,expr ��,date�,� � ��� � �� � �� � ���� � ��,

On peut aussi utiliser la variable IFS� Voici des lignes de programme pour a�cher le

nom de la machine d�une adresse internet (

nom%samoa�unice�fr

IFS%�

set �nom

echo ��

����� Aide pour traiter les options �getopts

La commande getopts est une commande interne qui aide � r�cup�rer les valeurs des

param�tres de position des shellscripts dont la syntaxe suit la syntaxe habituelle des com�

mandes Unix�

On sait que les commandes Unix acceptent plusieurs formats di��rents� On peut �crire

par exemple �ls �la� ou �ls �l �a�� Quand une option n�cessite un compl�ment� ce

compl�ment peut �tre accol� � l�option ou s�par� de l�option par un espace ���P�rv� ou

��P �rv� par exemple�� La r�cup�ration des options d�un shellscript n�cessite donc un

traitement assez complexe� La commande getopts facilite grandement la t&che du pro�

grammeur�

L�ancienne commande getopt e�ectuait le m�me type de traitement mais ne fonctionnait

pas correctement d�s qu�un des arguments �tait compos� de plusieurs mots �comme le

compl�ment de l�option �s dans �mail �s �Sujet du message� toto���

getopts options nom�variable �param�tres����

getopts analyse les param�tres de position �ou la cha ne constitu�e de param�tres��� si elle

est donn�e�� getopts traite une � une toutes les options� � chaque fois qu�on le lance� Il

������ MISE AU POINT DES SHELLSCRIPTS �SET �XV ��

met dans la variable du shell nom�variable la prochaine option et le num�ro de prochai

argument � traiter dans la variable OPTIND�

La premi�re fois que getopts est appel�e� OPTIND vaut � et ensuite OPTIND est incr�ment

� chaque fois que l�on appelle getopts� au fur et � mesure du traitement des di��rent

param�tres� Si une des options n�cessite un argument �comme l�option �P �voqu�e c

dessus�� cet argument est rang� dans la variable OPTARG�

Si une option ill�gale est rencontr�e� nom�variable re'oit la valeur ����

Quand toutes les options ont �t� pass�es en revue� getopts renvoie un code retour no

nul� L�option sp�ciale ���� peut indiquer la �n des options �on peut ainsi indiquer u

argument qui n�est pas une option et qui commence par �����

Les options accept�es sont indiqu�es dans la cha ne options� Le caract�re �(� est acco

derri�re les options qui doivent �tre suivies d�un compl�ment�

Voici un exemple d�utilisation de getopt en d�but de shellscript� Ce shellscript est sup

pos� accepter les options simples �a et �b et les options �s et �f avec des compl�ments� O

notera que l�on analyse d�abord tous les param�tres avant de commencer les traitement

On n�est ainsi pas tributaire de l�ordre dans lequel l�utilisateur a donn� les param�tres su

la ligne de commande�

opta%�# optb%�# optf%�# opts%�

fichier% complement pour option �f

sujet% complement pour option �s

while getopts abs�f� argument

docase �argument in

a opta%� ##

b ooptb%� ##

f optf%�

fichier%��OPTARG�##

s opts%�

sujet%��OPTARG�##

�� echo �,basename ��,� Usage� �

,basename ��, ��ab� ��s sujet� �f fichier�adresses �message�� �+

exit �##

esac

done

shift ,expr �OPTIND � �,

if � �optf �eq � � # then

���

����� Mise au point des shellscripts �set �xv

set �v

Page 75: Unix et programmation du shell Table des mati res

��� CHAPITRE ��� PROGRAMMATION DES SHELLSCRIPTS

fait a�cher les lignes du shellscript au moment o- elles sont lues par le shell� set $v annule

cette option�

set �x

fait a�cher les commandes �et leurs arguments� au moment de leur ex�cution� apr�s l�in�

terpr�tation du shell� set $x annule cette option�

Ces commandes peuvent �tre ins�r�es de part et d�autre des lignes que l�on veut �suivre

� la trace� dans les shellscripts que l�on veut mettre au point�

Si on veut suivre � la trace l�ex�cution enti�re d�un shellscript� le plus simple �car on

�vite de modi�er le shellscript� est de lancer le shellscript par �on remplacera sh par zsh si

le shellscript doit �tre ex�cut� par zsh��

sh �x nom�shellscript

oush �v nom�shellscript

Index

+� ��

+,� ���

�� �

",� ���

"+� ���

""� ���

"������ �

"�� ���

"�� ���

"-� ���

"n� ���

"variable� ��

"#+variable$� ��

"# variable$� ��

"#variable++mod�le$� ��

"#variable+mod�le$� ��

"#variable*mot$� ���

"#variable�mot$� ���

"#variable mot$� ���

�!variable�mot"� ���

"#variable//mod�le$� ���

"#variable/mod�le$� ��

"#variable$� ��

.� � ���

..� ���

��

�������� ���

������

�� ���

*�

�� �� ���

�plan� ��

�project� ��

�zlogin� ���

�zpro�le� ���

�zshenv� ���

�zshrc� ���

�� ���� ���

#� ���

�� �

�.n� ���

��� ��

� ��

�� �

�,� �

�.n� ���

��� �

�� ���

�� ���

� �test�� ���

�� ��� %%� ���

n� ��� ��

� n����n�� �

/n� �

nn� �

n#m� n$� �

n#m�nn$� �

n#mn$� �

�� ��

�� �

0� �

#���$�

j� ��

jj� ���

� � ��

a�ps� ��

administrateur� ��

a�ectation� ��

a�cher� ���

���

Page 76: Unix et programmation du shell Table des mati res

��� INDEX

a�cher le contenu d�un �chier� ��

a�cher les octets d�un �chier� �

a�cher page � page� �

alias� �

appels syst�me�

arri�re�plan� ���

at� ���

autorisations� �� �

autorisations d�un �chier� �

awk� ��

batch�

bc� ���

bg� �

boucles redirig�es� ���

Bourne shell�

break� ���

C�shell�

calculs� ��

calculs math�matiques� ���

cancel� ��

caract�res sp�ciaux pour le shell� ��

case� ���

cat� ��

cd� ��

CDPATH� ���

CGI� ���

cha ne de caract�res� ��� ���

chmod� �

cmp� ��

code retour� ��� �� ��

comm� ��

commande externe�

commande interne� � �� ���

commentaire� ��

comparer deux �chiers� ��

compatibilit� de zsh� �

compl�tion des commandes� ��

compress� �

compter les caract�res� mots et lignes� ��

concat�ner plusieurs �chiers� ��

con�gurer zsh� �

continue� ���

convertir des caract�res� �

copier des �chiers� �

copier l�arborescence d�un r�pertoire�

core� ��� ��

cp� ��

cpio� �

cr�er un r�pertoire�

csh�

csplit� ��

cut� �

daemon� ��

date� ��

d�but d�un �chier� �

d�caler les param�tres� ��

demand paging� ��

d�mon� ��

d�personnaliser�

d�placer des �chiers� �

descripteur de �chier� ��

df� �

di%� ��

di��rences entre deux �chiers� ��

DISPLAY� ���

disquette� �

driver� � �

droits sur un �chier� �

du� �

echo� ���

ed� ��

�diteur de texte� �

eject� �

emacs� �

EMACSLOADPATH� �

entr�e standard� �

environnement� ��� �� ���� �� � ���� ��

Envoyer un �chier� ��

erreur standard� �

eval� ���

ex�cution d�un shellscript� ���

exec� ��� ���

INDEX ��

exit� � � ��� ���

export� ��

expr� ��

expression conditionnelle� ���

expression r�guli�re� �

extraire une sous�cha ne� ��

false� ���

fg� �

�chiertype de� �� �

�chier inclus� ��

�chier ordinaire� �

�chier sp�cial� �� �

�le� ��

�n d�un �chier� �

�nd� ��

�nger� ��

fold� ��

fonction� ���

for� ���

g�n�ration des noms de �chiers� ��

gestion des jobs� �

getopt� ���

getopts� ���

grep� ��

groupe d�un �chier� �

groupe d�un processus� ��

groupe d�utilisateurs�

gzip� �

head� �

historique de Unix� �

HOME� ��� ��

hostname� ��

i�node� �� ��� �

identi�cateur d�une variable� ��

if� ��

IFS� ���

imprimantes disponibles� �

imprimer� �

inhiber l�interpr�tation du shell�

interpr�tation du shell�

interpr�teur de commandes�

jobs� �

join� ��

kill� ��� ��

Korn�shell�

ksh�

lancer une commande� ��

last� ��

lecteur de disquettes� �

lecture ligne � ligne d�un �chier� ���

let� ���

lien� ��� �

lien �hard�� �

lien symbolique� �

lien symbolique pour un r�pertoire�

lignes cons�cutives distinctes� �

lignes cons�cutives identiques� �

liste de commandes� ���

ln� ��

locate� ��

lpq� ��

lpr� �

lprm� ��

lpstat� �

ls� ��

mail� ��

majeur� �

man� ��

mcopy� �

mdir� �

message d�erreur� �

mineur� �

mise au point� ��

mise en page� ��

mkdir�

mode �dired� d�emacs� �

mode d�acc�s � un �chier� �

modi�er la valeur d�une variable� ���

monter un syst�me de �chiers�

Page 77: Unix et programmation du shell Table des mati res

��� INDEX

more� �

mot de passe� ��

mv� ��

NFS� �

NIS� ��� ��

NOCLOBBER� �

nohup�

nom absolu� ��

nom d�un �chier� ��

nom d�une commande� ��

nom de l�ordinateur� ��

nom relatif� ��

noyau�

NULLCMD� ���

num�ro de job�

num�ro de processus� ��

od� �

optionstraitement� ���

options des shells� �� ���

ordre de priorit�� ���

OSF� �

param�tre� ���

partition d�un disque�

passwd� ��

paste� ��

PATH� ��� ���� ���

PC �compatible�� �

Perl� ��

pid� ���

pilote� �

pipe�

pipe nomm�� �

place libre d�un syst�me de �chiers� �

place occup�e par un r�pertoire� �

pliage de r�pertoires� �

Postscript� ��

pr� ��

primitive�

print� ���

�subitem printcap( ��

printenv� ���

PRINTER� �

processus� ��

image� ��

processus en cours d�ex�cution� ��

programme de d�marrage� ��

prompt� �

propri�taire d�un �chier� �

propri�taire e�ectif� ��

propri�taire r�el� ��

protection des �chiers� �

ps� ��

PS�� ���� ���

PS�� ���

pseudo��chier�

pwd� ��

racine� ��

read� ���

recherche d�une cha ne� ��

recherche d�une commande� ���

recherche de �chiers� ��

rechercher le manuel en ligne� ��

rechercher une commande� ��

r�cursivit�� ��

redirection� ��� �� ��� ��

redirection des erreurs� �

redirection sur �chier inclus� ��

regrouper des commandes�

renommer des �chiers� �

renommmer un r�pertoire�

r�pertoire

structure interne� ��

r�pertoire courant� ��

r�pertoire HOME� ��

requ�te d�impression� �

return� ��

rm� ��

rmdir�

sauvegarder sur disquette� �

sed� ��

set� �� ���� ���� ��

INDEX ��

set group id� �

set user id� �

setopt� ���

sgid� �

sh�

shell� � �

shell d�ex�cution d�un shellscript� ���

shellscript� � �� ���

shift� ��

signal� ��� ��� ���

sleep� ���

socket� �

Solaris� �

sort� ��

sortie standard� �

split� ��

spool� �

substitution de commande� �

suid� �

super�utilisateur� ��

supprimer des caract�res� �

supprimer des �chiers� �

supprimer des r�pertoires�

supprimer des requ�tes d�impression� ��

supprimer un processus� ��� ��

supprimer une variable� ��

suspendre un processus� �

swap� ��

syst�me d�exploitation� �

nom du� ��

syst�me d�impression� �

syst�me de �chiers�

tail� �

tar� �

TERM� ���� ���

terminal de contr�le� ��

test� ���

thread� ��

touche sp�ciale� �

tr� �

traiter les options� ���

trap� ���

tri� ��

true� ���

tty� �

type d�un �chier� ��

type de �chier� �

uid�

umask� �

unalias� �

uname� ��

uniq� �

Unix BSD� �

Unix OSF� �

Unix Syst�me V� �

unset� ��

until� ���

uuencode� ��

valeur par d�faut d�une variable� ���

vared� ���

variable� ���

d�composition en mots sous zsh� ��

valeur par d�faut� ���

variable de position� ���

variable du shell� ��

variable sp�ciale du shell� ��

wait� ���

wc� ��

whence� ��

whereis� ��

while� ���

who� ��

whoami� ��

write� ���

xemacs� �

xterm� ���

Yellow Pages� ��

ypcat� ��

yppasswd� ��

Z shell�

zip� �

Page 78: Unix et programmation du shell Table des mati res

�� INDEX

zone de swap� ��

zsh� � �