unix et programmation du shell table des mati res

78

Upload: others

Post on 18-Feb-2022

8 views

Category:

Documents


0 download

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