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 � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
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� � � � � � � � � � � � � �
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 � � � � � � � � � � � � � � � � � � � � � � � � � �
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� � � � � � � � � � � � � � � � � � � � � ��
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
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�
� 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
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� ,
� 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��
�� 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
�� 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�
�� 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�
� 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��
�� 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
�� 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
�� 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
�� 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
�
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 ������
�� 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
�� 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
�� 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�
�� 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�
� 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�
�� 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
�� 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
�� 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 ������
��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
�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 �
��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
� 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�
� 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�
� 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�
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�
� 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$��
� 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 ��
� 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�
� 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
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�
� 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�
�� 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
�� 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
�� 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
� 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
�� 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
�� 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
�� 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�
�� ��������
�� 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�
� 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(�(�� ����
�� 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
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�
� 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
� 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
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�
� 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���
��� 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�
��� 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�
��� 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�
�� 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�
��� 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�
��� 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
��� 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
��� 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
�� 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��
��� 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
��� 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
��
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 ��� �� �� �� ���
��� 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�
�� 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
��� 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
��� 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��
��� 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
��� 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 � ��
�� 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�
��� 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
��� 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� ���
���
��� 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�
��� 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� �
�� INDEX
zone de swap� ��
zsh� � �