Vous êtes sur la page 1sur 64

Utilisation de la ligne de commande avec bash sous GNU/Linux Version 0.

3
Copyright c 2003 by Patrick Percot (ppercot@free.fr)

13 f vrier 2003 e

La derni` re version de ce document peut etre trouv e sur http ://ppercot.free.fr. e e La permission est donn es de copier, distribuer, et/ou modier ce document selon e les termes de la Licence Publique de Documentation GNU (GNU Free Documentation License), Version 1.1 ou toute version ult rieure publi e par la Free Software Foundae e tion ; avec comme sections invariantes (Invariant Sections) le chapitre 8 et le colophon A.11, avec comme texte de page de garde (Front-Cover Texts) Utilisation de la ligne de commande avec bash sous GNU/Linux Une copie de la licence est incluse a lappendice A intitul GNU Free Documen` e tation License.

Historique des r visions e


Version 0.3 F vrier 2003 R vision par : Patrick Percot (ppercot@free.fr) e e Correction derreurs, indication des diff rences entre Mandrake et Debian e Premi` re diffusion publique e Version 0.2 Janvier 2003 R vision par : Patrick Percot (ppercot@free.fr) e Modication de la mise en page Version 0.1 Janvier 2003 Version initiale par Patrick Percot (ppercot@free.fr) Diffusion pour une formation de lassociation Tuxbihan

Table des mati` res e


1 Les d buts e 1.1 Passer en mode console . . . . . . 1.2 Format des commandes . . . . . . 1.3 Obtenir de laide . . . . . . . . . 1.3.1 La commande man(1) . . 1.3.2 La commande info(1) . 1.3.3 La commande locate(1) 1.4 Utiliser un editeur . . . . . . . . . 1.4.1 Emacs . . . . . . . . . . . 1.4.2 vi . . . . . . . . . . . . . 1.5 Devenir super utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 7 7 8 8 8 9 9 12 13 13 13 13 14 15 16 16 17 18 19 19 19 21 22 22 23 23 24 25 25 26 27 27 28

2 Linterpr teur de commandes e 2.1 La commande echo(1) . . . . . . . . . . . . 2.1.1 Afchage de texte brut . . . . . . . . . 2.1.2 Afchage de variables denvironnement 2.1.3 Bloquer linterpolation . . . . . . . . . 2.1.4 Listage des chiers . . . . . . . . . . . 2.2 Les variables denvironnement . . . . . . . . . 2.2.1 Exportation de variables . . . . . . . . 2.2.2 Les commandes set et env . . . . . . 2.3 Evaluation interm diaire dune commande . . . e

3 Manipulation de chiers 3.1 La structure des r pertoires . . . . . . . . . . . . . . . . . . . e 3.1.1 Description du syst` me de chiers . . . . . . . . . . . e 3.2 Cr ation de r pertoires et d placement dans larborescence . . e e e 3.3 La redirection des entr es et des sorties . . . . . . . . . . . . e 3.3.1 Redirection de la sortie simple . . . . . . . . . . . . . 3.3.2 Redirection de la sortie en ajout . . . . . . . . . . . . 3.3.3 Redirection de lentr e . . . . . . . . . . . . . . . . . e 3.3.4 Redirection de la sortie derreur vers la sortie standard 3.4 Les canaux de communications . . . . . . . . . . . . . . . . . 3.5 Cr ation de liens . . . . . . . . . . . . . . . . . . . . . . . . e 3.6 Suppression de liens symboliques . . . . . . . . . . . . . . . 3.7 Syst` me de permissions . . . . . . . . . . . . . . . . . . . . . e 3.7.1 Les permissions . . . . . . . . . . . . . . . . . . . . . 3.7.2 Modication des permissions . . . . . . . . . . . . .

3.8 3.9

3.7.3 Choisir les permissions par d faut . . . . . . . . . e 3.7.4 Modier le propri taire et/ou le groupe dun chier e D terminer le type de chier . . . . . . . . . . . . . . . . e Copie de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

31 31 31 32 33 33 33 34 34 36 36 37 37 38 39 39 39 40 41 41 42 42 42 43 43 44 45 45 46 46 46 46 49 49 50 51 51 53

4 Gestion des utilisateurs 4.1 Les chiers dutilisateurs et de groupes . 4.2 Cr er et supprimer des utilisateurs . . . e 4.3 Cr er et supprimer des groupes . . . . . e 4.4 Ajouter un utilisateur dans un groupe . .

5 Contr le des processus o 5.1 Visualiser les processus en cours . . . . . . . . . . . 5.2 Lancer un processus en arri` re-plan . . . . . . . . . e 5.3 Interrompre un processus . . . . . . . . . . . . . . . 5.4 Stopper un processus et le r activer . . . . . . . . . . e 5.5 Envoyer un signal a tous les processus de m me nom ` e 5.6 Envoyer le signal HUP a un daemon . . . . . . . . . ` 5.7 Lancer une commande avec nohup(1) . . . . . . . 5.8 Ex cuter une commande avec nice(1) . . . . . . . e

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

6 Programmation du shell 6.1 Les param` tres dun programme shell . . . . . . . . . . . . . . e 6.2 La commande read(bash(1)) . . . . . . . . . . . . . . . . . 6.3 if(bash(1)) . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 La boucle until(bash(1)) . . . . . . . . . . . . . . . . . . 6.5 La boucle for(bash(1)) . . . . . . . . . . . . . . . . . . . . 6.6 La structure de choix case(bash(1)) . . . . . . . . . . . . . 6.7 Sortie de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8 Renommer des chiers . . . . . . . . . . . . . . . . . . . . . . 6.9 Convertir des noms de chier des minuscules vers les majuscules 6.10 Exemples de programmes . . . . . . . . . . . . . . . . . . . . . 6.10.1 Vider le spool de exim(1) . . . . . . . . . . . . . . . . 6.10.2 G n rer de beaux chiers PDF . . . . . . . . . . . . . . e e 6.10.3 Extraire des pistes audio et les convertir en Ogg Vorbis . 7 Commandes utiles 7.1 Simplier la saisie de commandes . . . . . . . 7.2 Utiliser la commande ls(1) en couleur . . . . 7.3 Archiver des donn es . . . . . . . . . . . . . . e 7.3.1 Comparer des chiers ou des r pertoires e 8 Contributions A GNU Free Documentation License A.1 PREAMBLE . . . . . . . . . . . . . . . A.2 APPLICABILITY AND DEFINITIONS A.3 VERBATIM COPYING . . . . . . . . . A.4 COPYING IN QUANTITY . . . . . . . A.5 MODIFICATIONS . . . . . . . . . . . . A.6 COMBINING DOCUMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

54 54 54 55 56 56 58

A.7 A.8 A.9 A.10 A.11

COLLECTIONS OF DOCUMENTS . . . . . . . . AGGREGATION WITH INDEPENDENT WORKS TRANSLATION . . . . . . . . . . . . . . . . . . . TERMINATION . . . . . . . . . . . . . . . . . . . FUTURE REVISIONS OF THIS LICENSE . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

58 58 59 59 59

Introduction
Trop souvent, les utilisateurs habitu s aux interfaces graphiques sont d sempar s e e e lorsquil sagit de r aliser une op ration simple en mode console (ou mode texte). e e Connatre lutilisation dun interpr teur de commandes comme bash(1) 1 , est pour e tant essentiel. En effet, la conguration dun syst` me Unix ou GNU/Linux se fait e par le biais de chiers ne contenant que du texte, et savoir manipuler directement ces chiers, ou en extraire des informations est indispensable pour la maintenance du syst` me. e Lorsque linterface graphique est d pass e, cest-` -dire, lorsque ce que vous soue e a haitez faire na pas et programm au pr alable, que la bote de dialogue qui vous e e e permet dacc der a linformation dont vous avez besoin nexiste pas encore, ou nexise ` tera jamais, vous naurez plus que la ressource de r aliser les traitements en mode e console. Vous vous apercevrez alors de toute la puissance qui est entre vos mains, et vous constaterez que cette puissance ne vous est accessible quen mode console.

Avertissement
Comme toute documentation technique, ce document peut contenir des erreurs. Bien quayant essay de tester toutes les commandes qui sont donn es en exemple, e e il est toujours possible que ces commandes ne produisent pas exactement le m me e r sultat dans tous les environnements. Si tel etait le cas, je vous serais reconnaissant de e men informer (ppercot@free.fr) an que je corrige ces erreurs dans ce document.

1 Vous rencontrez souvent cette notation, elle correspond au nom de la commande et au num ro de section e de la page de manuel (cf. Section 1.3.1)

Chapitre 1

Les d buts e
1.1 Passer en mode console
Lensemble des op rations qui seront d crites ult rieurement, et lensemble des e e e exercices n cessitent de disposer dune console. e Pour passer en mode console, plusieurs options se pr sentent a vous : e ` Terminal X Cliquez sur une des ic nes permettent de lancer un terminal X o

Shell Emacs(1) Sous X ?Emacs2 , lancez la commande M-x shell. A noter que vous b n e e ciez des facilit s d dition dX ?Emacs, et que vous pourrez sauvegarder tous e e vos exercices dans un chier, mais que vous ne pourrez pas utiliser certaines commandes comme man(1) ou less(1) qui n cessitent un terminal. e

1.2 Format des commandes


Lensemble des commandes Unix et GNU/Linux r pondent a quelques r` gles e ` e structurelles simples. Les commandes prennent la forme suivante : commande [options] [param`tres] , o` : e u commande est le nom de la commande. options est une liste doptions commencant par - ou --. Cette liste est optionnelle.
1 dautres consoles virtuelles peuvent exister : n 9, la touche Fn correspond aux touches de fonction en haut du clavier 2 Ceci est une expression r guli` re (ou rationnelle), une regex quoi, ou regexp si vous pr f rez. Elle e e ee repr sente toute chane de caract` res contenant Emacs, eventuellement pr c d e dun X. Jaurais egalement e e e e e pu ecrire [XJ] ?Emacs pour satisfaire les utilisateurs de JEmacs, cette derni` re expression repr sentant toute e e chane de caract` res contenant Emacs, et eventuellement pr c d e dun X ou dun J. Si vous vous int ressez e e e e e aux expressions r guli` res, je vous conseille le livre de Jeffrey Friedl Matrise des expression r guli` res. e e e e

Console virtuelle Utilisez (avec Gnome sous Debian) la s quence Ctl-Alt-Fn, avec 1 e 1 pour passer sur une console virtuelle, et authentiez-vous.

6,

param`tres e est une liste de param` tres. Cette liste est optionnelle. e

1.3 Obtenir de laide


1.3.1 La commande man(1)
Une des premi` res choses a connatre avant de se lancer dans lexploration du e ` monde des commandes Unix est la commande man(1). Elle permet dobtenir de laide sur la commande pass e en param` tre. e e Elle utilise par d faut la commande pager(1) pour afcher le texte page par page, e et offrir certaines fonctionnalit s de recherche et de d placement. Voici les plus impore e tantes : Quitter Pour quitter, tapez q D placements e En g n ral les touches Home, End, et les autres touches de d placement fonce e e tionnent. Sinon, essayez les s quences : j, k, ESPACE, b, ESC <, ESC e >. Recherche /texte permet de chercher texte en avant. ?texte permet de chercher texte en arri` re. n permet de continuer la recherche vers lavant. N permet e de continuer la recherche vers larri` re. e Pour se familiariser avec cette commande, pourquoi ne pas lui demander comment elle fonctionne ? $ man man Vous apprendrez notamment que le manuel est divis en sections. e 1: 2: 3: 4: 5: 6: 7: 8: 9: Programmes ex cutables ou commandes shell e Appels syst` mes (fonctions fournies par le noyau) e Appels des biblioth` ques (Fonctions des biblioth` ques syst` me) e e e Fichiers sp ciaux (habituellement situ s dans /dev) e e Formats de chiers et conventions par ex. /etc/passwd Jeux Paquetages de macros et conventions par ex. man(7), groff(7). Commandes dadministration syst` me (habituellement r serv es a root) e e e ` Routines du noyau [Non standard]

Pour les noms poss dant des entr es multiples ; essayez par exemple : e e $ man -f printf man -f est equivalent a la commande whatis(1). ` Vous pouvez dans ce cas etre oblig dindiquer la section : e $ man 3 printf parce quil existe une page de manuel de m me nom dans une des sections pr c dentes. e e e Pour rechercher les pages de manuel qui mentionnent une information, utilisez : $ man -k printf qui est un equivalent de la commande apropos(1). Pour rechercher tous les chiers relatifs a une commande, utilisez whereis(1) : ` $ whereis printf

1.3.2 La commande info(1)


Le syst` me GNU/Linux dispose en plus dune commande nomm e info(1). Elle e e permet de parcourir laide relative a une commande. Elle utilise un syst` me de com` e mande proche de X ?Emacs, avec notamment le compl tement 3 de texte accessible e e avec la touche TAB. Les pages daide sont structur es en une arborescence de nuds que lon peut parcourir avec m pour atteindre un menu, n pour aller au nud suivant, et p pour aller au nud pr c dent. e e Essayons : $ info info Pour se d placer, les touches de d placements devraient fonctionner. Sinon, essayez e e les s quences ESPACE, BACKSPACE. La touche TAB permet de passer de menu en e menu, la touche RET permet dentrer dans le menu. La touche l permet de revenir au nud que lon vient de quitter. Les commandes C-s et C-r 4 permettent respectivement de faire une recherche incr mentielle en avant et en arri` re. Nh sitez pas a lire les documentations sur ces e e e ` commandes, pour ce faire, utilisez h pour etudier le cours dinstruction 5, et ? pour une aide rapide. NOTE : la commande info afche aussi les pages de manuel, et remplace donc compl` tement la commande man . e

1.3.3 La commande locate(1)


Cette commande permet de savoir o` sont localis s les chiers correspondant a u e ` un mod` le6 pass en param` tre. Ce mod` le peut contenir des m ta-caract` res (voir la e e e e e e section 2.1.4), dans ce cas il faut mettre des apostrophes doubles autour du mod` le. e Le r sultat est la liste des chiers qui correspondent. e La base de donn es (locatedb(8)) est mise a jour par la commande updatedb(1), e ` lanc e p riodiquement par cron(8). Vous pouvez lancer updatedb(1) manuellee e ment, mais il faut etre root pour ce faire (voir la section 1.5).

1.4 Utiliser un editeur


De nombreux editeurs sont disponibles sur les syst` mes GNU/Linux et Unix , e mais nous aborderons les deux principaux, a savoir Emacs(1) et vi(1). `

1.4.1 Emacs
emacs(1)Emacs est plus quun editeur, car il est enti` rement programmable avec e le langage Emacs Lisp . Mais nous naborderons que laspect editeur. Il est parti culi` rement puissant, mais aussi tr` s gourmand en m moire et en CPU. e e e Pour invoquer Emacs, il suft de lancer la commande emacs suivie eventuellement du nom des chiers que lon souhaite editer. Les s quences de touches Emacs sont pr x es par des caract` res de contr le (C- e e e e o signie Control, M- signie Meta ou Alt, S- signie Shift. Il est parfois n cessaire e
3 Completion 4 selon

en anglais. la terminologie X ?Emacs, S- signie Shift, C- signie Control, M- signie Meta (ou Alt). 5 Tutorial en anglais. 6 Pattern en anglais.

dutiliser la touche ESC au lieu de la touche Alt, dans ce cas, la touche ESC pr c` de le caract` re de la commande. Par exemple, M-w peut etre obtenu en appuyant e e e simultan ment sur Alt et w, mais aussi en appuyant successivement ESC et w. e Les tableaux Les commandes indispensables dEmacs (1.1) et Les commandes d dition dEmacs (1.2) reprennent les s quences les plus importantes. e e TAB . 1.1 Les commandes indispensables dEmacs C-x C-c C-x C-f C-x C-s C-x s C-h t C-h i C-h k C-h f C-h a C-h v Quitter Emacs Ouvrir un chier Sauvegarder les modications du buffer courant Sauvegarder tous les buffers modi s e D marrer la formation assist e e e D marrer laide (info) e D crire la s quence de touches e e Obtenir de laide sur la fonction Obtenir de laide sur les fonctions correspondant a la re` gexp Obtenir de laide sur la variable

TAB . 1.2 Les commandes d dition dEmacs e C- ou C-) C-x b C-x C-b C-x 2 C-x 3 C-x 0 C-x o C-SPACE M-w C-w M-d M-BACKSPACE C-k C-y M-y C-t M-t C-x C-t C-s C-r M-% Annuler la modication Changer de buffer Ouvrir la fen tre de s lection de buffer e e Diviser horizontalement l cran en deux fen tres e e Diviser verticalement l cran en deux fen tres e e Garder cette fen tre (ferme la derni` re fen tre ouverte e e e Changer de fen tre e Poser le marqueur Copier le texte entre le point et le marqueur Couper le texte entre le point et le marqueur Couper le mot a droite du point ` Couper le mot a gauche du point ` Couper la ligne a droite du point ` Coller le texte pr c demment copi ou coup e e e e Coller le texte suivant du kill ring7 Transposer le caract` re au point courant et le caract` re e e pr c dent e e Transposer le mot apr` s le point et celui qui pr c` de e e e Transposer la ligne o` est le point et la pr c dente u e e Recherche incr mentielle en avant e Recherche incr mentielle en arri` re e e Remplacer du texte

De nombreuses autres fonctionnalit s sont disponibles, nh sitez pas a consulter e e ` toutes les aides disponibles 1.1.

1.4.2 vi
vi(1) ou vim ou gvim est un editeur beaucoup plus l ger quEmacs. Il na e cependant pas grand chose a envier a Emacs pour ce qui concerne la puissance 8 . ` ` Lutilisation de vi est assez inhabituelle, car il utilise un mode commande dans lequel les caract` res frapp s ex cutent des commandes, et un mode saisie o` les cae e e u ract` res sont ins r s dans le buffer. e ee vi est invoqu en lancant la commande vi suivi eventuellement du nom des e chiers a editer. ` vimtutor est le cours dinstructions pour vi. Les fonctionnalit s les plus importantes sont regroup es dans ce tableau (1.3). e e TAB . 1.3 Les principales commandes de vi :help :q :q :q ! :qa ! :w ESC i o O u Y p P x X dw cw dd / ? n N :vi :next :prev Obtenir de laide Quitter vi (le chier courant) Quitter vi (ferme tous les chiers) Quitter vi sans conrmation (abandonne les modications) Quitter vi sans conrmation (abandonne les modications de tous les chiers) Enregistrer les modications Quitter le mode insertion Passer en mode insertion a ce point ` Passer en mode insertion apr` s la ligne courante e Passer en mode insertion avant la ligne courante Annule la modication Copie la ligne courante Colle la ligne copi e apr` s la ligne courante e e Colle la ligne copi e avant la ligne courante e Supprime le caract` re a droite e ` Supprime le caract` re a gauche e ` D truit le mot a droite e ` Change le mot a droite ` Supprime la ligne Recherche le texte en avant Recherche le texte en arri` re e Poursuit la recherche en avant Poursuit la recherche en arri` re e Ouvrir un chier a la place du chier courant ` Passer au chier suivant Passer au chier pr c dent e e

8 Bien que nous nabordions pas ici, que ce soit pour Emacs ou vi, les fonctionnalit s qui font de ces deux e editeurs des outils hors du commun (notamment, lutilisation des expressions r guli` res). e e

1.5 Devenir super utilisateur


La commande su(1) permet de changer didentit . Sa syntaxe est : su utilisateur e . Si lon veut changer son identit pour celle de root , le param` tre utilisateur est e e optionnel. $ su Password: # exit $ su tuxbihan Password: $ exit $ Pour reprendre son ancienne identit , il suft dutiliser la commande exit(1) ou e te taper la s quence Ctrl D. e

Chapitre 2

Linterpr teur de commandes e


2.1 La commande echo(1)
2.1.1 Afchage de texte brut
e e La commande echo(1) afche les param` tres qui lui sont pass s, sans modication. $ echo Hello World Hello World $ Nous ne nous attarderons pas sur les options de cette commande, elles sont simples, consultez la page de manuel.

2.1.2 Afchage de variables denvironnement


Essayez ceci : $ echo $HOME /home/patrick Alors que je viens de vous dire que echo(1) afche les param` tres qui lui sont e pass s sans modication, cet exemple semble montrer exactement le contraire. Toutee fois, je ne vous ai pas menti. Que se passe til donc r ellement ? e La commande echo recoit en fait le texte /home/patrick , parce que linterpr teur e de commandes bash(1) a r alis une op ration nomm e interpolation de variables e e e e avant de proc der a lex cution de la commande sp ci e. Une variable est un nom e ` e e e pr x par le symbole $ . Une seconde syntaxe est utilisable : e e $ echo ${HOME}_SWEET_HOME /home/patrick_SWEET_HOME Elle permet de sp cier les caract` res qui doivent etre consid r s comme faisant e e ee partie du nom de la variable, dans le cas o` linterpr teur de commande ne pourrait pas u e reconnatre la n du nom de la variable. Consid rez ce qui se passe si lon nutilise pas e les accolades : 12

$ $ echo $HOME_SWEET_HOME $ La commande echo(1) nafche rien, car la variable HOME SWEET HOME nest pas d nie. e Mais si lon cr e cette variable : e $ HOME_SWEET_HOME=Breizh $ echo $HOME_SWEET_HOME Breizh $

2.1.3 Bloquer linterpolation


Et comment faire pour afcher le symbole $ ? Plusieurs m thodes : e $ echo \$HOME $HOME $ echo $HOME $HOME $ Dans le premier exemple, on utilise le caract` re d chappement 1 pour interdire e e linterpr tation dun seul caract` re. Dans le second, on masque lensemble de la chane e e a laide des quotes simples, le texte est donc pass sans modication a la commande ` e ` echo(1). Lutilisation des quotes doubles ( "" ) nemp che pas linterpolation des variables, e mais emp che linterpr tation des espaces et tabulations comme s parateurs de pae e e ram` tres. On peut ainsi passer un param` tre qui sans les doubles quotes serait consid r e e ee comme plusieurs param` tres distincts. e $ echo abc abc def $ echo "abc abc def def def"

2.1.4 Listage des chiers


Maintenant, essayons ceci : $ echo * $ first-step.aux first-step.dvi first-step.tex first-step.toc
1 Pas tr` s heureux ce nom, vous direz-vous ! Mais saviez-vous que le m canisme dhorlogerie qui permet e e a un ressort de se d tendre a vitesse constante est aussi appel echappement, et quil a et invent durant ` e ` e e e la derni` re partie du Moyen-Age ? Ce fut une p riode dintense activit technologique a la n de laquelle e e e ` il restait moins de for ts en France quil ny en a de nos jours. LEglise, plus puissante quelle ne lest e aujourdhui, y a mis un terme pour quelques si` cles. e

Cette fois, rien a voir avec linterpolation de variables, cest a la globalisation, ` ` appel e aussi expansion que nous avons affaire. La globalisation permet de d nir e e un ensemble de noms de chiers par d nition, a charge pour linterpr teur de come ` e mande de nous afcher cet ensemble de chiers par extension. La globalisation fait appel a deux caract` res joker * et ? , ainsi qu` une classe de caract` res, par exemple ` e a e [12345] est equivalent a [1-5] . ` * correspond a nimporte quelle suite de caract` res, y compris la chane vide. ` e ? correspond a un et un seul caract` re, quel quil soit. ` e [xyz] correspond a lun des caract` res cit s a lint rieur des crochets. ` e e ` e [x-z] correspond a lun des caract` res compris dans lintervalle. ` e [ !xyz] correspond si aucun des caract` res cit s a lint rieur des crochets nest trouv (le e e ` e e e` caract` re peut etre utilis a la place de ! ). e [ :class :] o` class est une des classes d nies dans le standard POSIX.2 ( alnum alpha u e ascii blank cntrl digit graph lower print punct space upper xdigit ) Quelques petits exemples : $ echo * abc1.c abc1.cpp abc1.h abc1.hxx ABC1.c ABC1.cpp ABC1.h ABC1.hxx $ echo *h abc1.h ABC1.h $ echo *.? abc1.c abc1.h ABC1.c ABC1.h $ echo [a-z]* abc1.c ABC1.c abc1.cpp ABC1.cpp abc1.h ABC1.h abc1.hxx ABC1.hxx $ echo [A-Z]* ABC1.c ABC1.cpp ABC1.h ABC1.hxx $ echo [[:lower:]]* abc1.c abc1.cpp abc1.h abc1.hxx $ echo [[:lower:][:upper:]]* abc1.c ABC1.c abc1.cpp ABC1.cpp abc1.h ABC1.h abc1.hxx ABC1.hxx $ echo *[px][px] abc1.cpp abc1.hxx ABC1.cpp ABC1.hxx Vous constaterez une anomalie en ligne 4 ( echo [a-z]* ) ne retourne pas le r sultat attendu. Si cela ne sest pas produit sur votre machine, cest parce quune e variable de bash(1) nest pas positionn e, il sagit de nocaseglob(bash(1)). Elle e indique que lon ne tient pas compte de la casse. Si lon veut tenir compte de la casse, et ne reconnatre que des caract` res minuscules, il faut utiliser les classes pr d nies e e e (ne pas oublier les crochets autour du symbole repr sentant la classe), ou modier cette e variable a laide de la commande interne shopt(bash(1)). `

$ shopt -u $ shopt [...] nocaseglob [...] $ shopt -s $ shopt [...] nocaseglob [...]

nocaseglob

off nocaseglob

on

Consultez laide de bash(1) et recherchez extglob(bash(1)) si vous souhaitez utiliser des formats de description plus complexes. Vous devrez utiliser shopt(bash(1)) pour positionner extglob(bash(1)) an dutiliser ces formats. Consultez aussi glob(7), prenez garde cette fois a taper man 7 glob sinon vous aurez la docu` mentation de la fonction glob(3).

2.2 Les variables denvironnement


Dans la section pr c dente, nous avons eu un bref apercu des variables denvironnee e ment. Nous allons approfondir cette notion. Les variables jouent un r le de conteneur. o Elles sont identi es par une chane de caract` res, et leur contenu peut etre retrouv (la e e e variable est alors d r f renc e) en pr xant son nom (son identiant) par le symbole eee e e $.

2.2.1 Exportation de variables


Les variables sont h rit es par les shells ls du shell courant a condition quelles e e ` soient export es. Faisons une exp rience : e e $ 1 $ $ 2 $ $ 1 echo $SHLVL bash echo $SHLVL exit echo $SHLVL

La variable SHLVL indique le niveau du shell. Le niveau 1 indique que le shell est le ls direct du processus init . A chaque nouveau shell lanc , le niveau est incr ment e e e de 1. Poursuivons lexp rience avec les variables : e $ HELLO=hello $ echo $HELLO hello $ bash $ echo $HELLO

$ exit $ echo $HELLO hello $ La variable HELLO cr ee dans le premier shell nexiste pas dans le shell ls, car la e variable na pas et export e, ce qui se fait avec la commande interne export(bash(1)). e e Recommencons : $ export HELLO=hello $ echo $HELLO hello $ bash $ echo $HELLO hello $ exit $ echo $HELLO hello $ Cette fois, la variable existe dans les deux shells.

2.2.2 Les commandes set et env


Les commandes set(bash(1)) qui est une commande interne de bash(1) et env(1) permettent de connatre lensemble des variables qui ont et d nies. La com e e ` mande set(bash(1)) afche en plus toutes les variables internes de bash(1). A noter que les variables internes optionnelles sont afch es par shopt(bash(1)). e La fonction principale de env est de lancer un programme dans un environnement modi . Elle permet de supprimer certaines variables, et den d nir dautres au sein e e de lenvironnement dans lequel sera lanc le programme pass en argument. e e Une des utilisations possibles est de lancer un programme sensible a la localisation ` dans diff rentes langues sans modier lenvironnement du shell courant : e $ env LANG=en gcompris $ env LANG=fr gcompris Les commandes pr c dentes lancent dabord gcompris en anglais, puis en francais, e e ce que vous ne manquerez pas dentendre si vous avez une carte son.

2.3 Evaluation interm diaire dune commande e


Les quotes inverses (ou backticks) permettent d valuer (au sens fonctionnel du e terme, cest-` -dire ex cution et r cup ration du r sultat) une commande et dutiliser le a e e e e r sultat de l valuation. e e $ echo $SHLVL 1 $ echo /bin/bash > my-preferred-shell $ cat my-preferred-shell

$ echo $SHLVL 2 $ exit $ echo $SHLVL 1 $ ls -l cat my-preferred-shell -rwxr-xr-x 1 root root 511400 May 30 2002 /bin/bash Dans le premier cas, cat my-preferred-shell est tout dabord evalu , puis, e comme les backticks sont au d but de la ligne de commande, son r sultat est utilis e e e comme nom de commande a ex cuter. ` e e Dans le second cas, cat my-preferred-shell est tout dabord evalu , puis, comme les backticks ne sont pas au d but de la ligne de commande, son r sultat est e e utilis comme param` tre de la commande ls . e e Le texte contenu entre les backticks est evalu , puis son r sultat est incorpor dans e e e la ligne de commande a lemplacement m me o` se trouvaient les backticks. La com` e u mande ainsi form e est ex cut e. e e e

Chapitre 3

Manipulation de chiers
Dans ce chapitre, nous allons etudier la structure des r pertoires, la cr ation de e e chiers, de liens physiques et dynamiques, ainsi que la redirection des entr es et des e sorties, les canaux de communications (pipes) et le syst` me des permissions. e

3.1 La structure des r pertoires e


Le syst` me de chiers des syst` mes Unix et de GNU/Linux est homog` ne, bien e e e que les supports physiques puissent ne pas etre identiques. En effet, les chiers stock s e sur une disquette, un lecteur de CDROM, un disque SCSI ou un disque IDE vont etre accessibles dans la m me arborescence de r pertoires de facon ind pendante du supe e e port.

3.1.1 Description du syst` me de chiers e


. La racine de larborescence est symbolis e par /. Les r pertoires suivants font e e partie de larborescence d nie par le Filesystem Hierarchy Standard (FHS version e 2.1). / R pertoire racine e Principales commandes utilisateurs binaires (pour tous les utilisateurs) Fichiers du chargeur de syst` me (boot loader) e Fichiers de p riph riques e e Fichiers de conguration syst` me de la machine e Conguration du syst` me X Window e Fichiers de conguration pour /opt /bin /boot /dev /etc

Sur Debian, vous pouvez trouver une source dinformations sur le FHS dans /usr/share/doc/debian-policy/fh

/etc/X11 /etc/opt /home /lib /mnt /opt /root

R pertoires de base des utilisateurs (home) (optionnel) e Biblioth` ques partag es essentielles et modules du noyau e e Point de montage des syst` mes de chiers mont s temporairement e e Paquetages des logiciels applicatifs ajout s au syst` me e e R pertoire de base de lutilisateur root (optionnel) e 18

/sbin /tmp

Binaires syst` mes (autrefois dans /etc) e Fichiers temporaires Syst` me X Window, Version 11 Release 6 e Principalement commandes utilisateurs R pertoire pour les chiers include standards e Hi rarchie locale au syst` me e e Binaires syst` mes standard non essentiels e Donn es ind pendantes de larchitecture du syst` me e e e Listes de mots Pages de manuel Diverses donn es ind pendantes de larchitecture du syst` me e e e Biblioth` ques pour la programmation et paquetages e

/usr/X11R6 /usr/bin /usr/lib /usr/local /usr/sbin /usr/share /usr/include

/usr/share/dict /usr/share/man /usr/share/misc /usr/src /var/cache /var/account

Code source Registres (logs) de comptabilit des processus (si support ) e e Donn es de cache des applications e Polices g n r es localement e ee Pages de manuel format es localement (optionnel) e

/var/cache/fonts /var/cache/man /var/crash /var/games /var/lib

Vidages des crash syst` mes (si support ) e e Donn es variables des jeux e Informations d tat e Fichiers de backup et d tat e Donn es diverses e

/var/lib/<editor> /var/lib/misc /var/lock /var/log /var/mail /var/opt /var/run /var/spool

Fichiers de verrous Fichiers et r pertoires registres (logs) e Fichiers de bote a lettre des utilisateurs ` Donn es variables pour /opt e Donn es variables des applications en cours dex cution e e Donn es de spool dapplication e Files dattente du daemon dimpression Fichiers rwhod

/var/spool/lpd /var/spool/rwho /var/tmp /var/yp

Fichiers temporaires pr serv s entre les red marrages e e e Fichiers de la base de donn es NIS (Network Information Service) e

Sp cicit s de Linux : e e /dev /proc /sbin Fichiers de p riph riques et chiers sp ciaux e e e Syst` me de chier virtuel des informations du noyau e Binaires syst` mes essentiels e Fichiers dent te inclus par les programmes C e Donn es de spool de cron(8) et at(1) e Code source

/usr/include /usr/src

/var/spool/cron

3.2 Cr ation de r pertoires et d placement dans lare e e borescence


Apr` s ce tour dhorizon du syst` me de chiers, commencons par nous localiser. e e Normalement, nous devrions nous trouver dans notre r pertoire de base. V rions-le a e e ` laide de pwd(1) : $ pwd /home/patrick $ Si nous ne nous trouvons pas dans notre r pertoire de base, nous pouvons nous e d placer avec la commande cd(bash(1)). e $ cd /tmp $ pwd /tmp $ cd $ pwd /home/patrick cd sans argument nous replace dans notre r pertoire de base. e Nous allons maintenant cr er un r pertoire dans lequel nous pourrons cr er des e e e chiers pour les exercices (mkdir(1)). $ mkdir first-step $ cd first-step $ pwd /home/patrick/first-step $ mkdir second-step $ cd second-step $ cd $ pwd /home/patrick/first-step $ cd second-step $ pwd /home/patrick/first-step/second-step $ cd $ pwd /home/patrick $ cd - nous ram` ne dans le r pertoire que nous venons de quitter. e e cd nous ram` ne dans notre r pertoire de base, comme le fait cd et comme le e e ferait cd $HOME . Le caract` re peut etre suivi dun nom de r pertoire. Il permet e e alors de sp cier de facon absolue le r pertoire dans lequel on d sire se placer, par e e e exemple cd /first-step , par opposition au d placement relatif au r pertoire coue e rant, comme dans cd first-step , qui suppose quun r pertoire first-step existe e dans le r pertoire courant. e La commande rmdir(1) permet de supprimer un r pertoire. Si le r pertoire nest e e pas vide, la commande retourne une erreur, et le r pertoire nest pas d truit. e e

$ mkdir essai $ cd essai $ pwd /home/patrick/first-step/essai $ cd .. $ pwd /home/patrick/first-step $ rmdir essai $ cd essai bash: cd: essai: No such file or directory $ Nous venons de voir une autre nouveaut ( cd .. ). .. repr sente le r pertoire e e e parent du r pertoire courant. cd .. permet donc de redescendre (ou de remonter si e lon consid` re que la racine est en haut) dun niveau dans larborescence. e

3.3 La redirection des entr es et des sorties e


Lorsquun programme est d marr , le syst` me ouvre pour lui, automatiquement, e e e trois chiers. Ces chiers sont nomm s stdin , stdout et stderr , ou 0 , 1 ou 2 e , selon que lon utilise la notation des fonctions de la biblioth` que libc (fopen(3), e fwrite(3), fread(3) et fclose(3)), ou les fonctions syst` mes (open(2), write(2), e read(2) et close(2)). Ces chiers sont normalement le chier dentr e (le clavier), le chier de sortie e (l cran) et le chier derreur ( galement l cran). La redirection des entr es et des e e e e sorties concerne ces trois chiers, et consiste a substituer un autre chier aux chiers ` standard. Nous sommes dans le r pertoire de travail. Nous allons maintenant cr er des e e chiers.

3.3.1 Redirection de la sortie simple


$ ls $ > first-file $ ls first-file $ echo coucou > second-file $ ls first-file second-file $ La commande ls(1) liste le contenu du r pertoire qui lui est pass en param` tre, e e e ou du r pertoire courant si aucun param` tre ne lui a et transmis. Nous voyons que pour e e e linstant, cette commande a le m me effet que echo * , mais elle peut faire beaucoup e plus. Nous venons aussi de voir nos premi` res redirections. En voici la description du e fonctionnement. Le caract` re > sert a rediriger la sortie (ce qui est afch a l cran) e ` e` e de la commande vers un chier.

Dans le second cas ( echo coucou > second-file ), la commande echo devrait afcher coucou a l cran, mais la redirection provoque lenvoi du texte dans le chier ` e second-file . Le chier est cr e sil nexiste pas. Il est d truit, puis recr e sil existait. e e e Dans le premier cas, lusage est assez particulier, puisquil ny a pas de commande. De ce fait, rien nest envoy dans le chier, mais il est tout de m me cr e. Nous aurions e e e pu parvenir au m me r sultat avec la commande touch(1), dont lusage est normae e lement de changer la date de modication, mais qui a comme effet de bord de cr er le e chier sil nexiste pas.

3.3.2 Redirection de la sortie en ajout


$ ls -a -1 . .. first-file second-file $ ls -a -1 >> second-file $ cat second-file coucou . .. first-file second-file $ La premi` re commande liste les chiers du r pertoire courant, un chier par ligne. e e La seconde fait de m me, mais la sortie au lieu d tre envoy e sur l cran est redirig e e e e e e en ajout >> dans le chier second-file . La commande cat(1) afche ensuite le contenu du chier.

3.3.3 Redirection de lentr e e


Pour faire un essai, nous allons utiliser la commande grep(1). $ grep o < second-file coucou second-file $ Dans ce contexte dutilisation, elle recherche dans son entr e standard la chane qui e lui a et pass e en param` tre (dans notre cas o), et afche chaque ligne pour laquelle e e e elle a trouv une correspondance (dans notre cas toutes les lignes contenant au moins e un o). Linterpr teur de commande ouvre le chier second-file et son contenu e Mais nous aurions aussi pu utiliser la commande grep sans la redirection. Tout fonctionne correctement, car la commande grep traite les param` tres suppl mentaires e e comme des chiers. $ grep o second-file coucou second-file $

3.3.4 Redirection de la sortie derreur vers la sortie standard


Pour faire nos essais, nous allons utiliser ce court programme en C (voir gure 3.1), que nous enregistrerons dans un chier nomm trace.c , et que nous allons compiler e avec la ligne de commande suivante cc -o trace trace.c . #include <stdio.h> int main() { fprintf(stdout,"sortie vers stdout\n"); fprintf(stderr,"erreur vers stderr\n"); } F IG . 3.1 Code source de trace.c Nous allons maintenant utiliser le programme trace que nous avons g n r . Il e ee ecrit le texte sortie vers stdout dans le chier stdout , et le texte erreur vers stderr dans le chier stderr . Ceci va nous permettre de diff rencier les e effets des redirections que nous allons ecrire. $ ./trace sortie vers stdout erreur vers stderr $ ./trace > sortie erreur vers stderr $ cat sortie sortie vers stdout $ ./trace 1> sortie erreur vers stderr $ cat sortie sortie vers stdout $ ./trace 2> erreur sortie vers stdout $ cat erreur erreur vers stderr $ ./trace > sortie 2>&1 $ cat sortie sortie vers stdout erreur vers stderr $ ./trace &>sortie sortie vers stdout erreur vers stderr Nous constatons deux choses : e e 1. que nous ecrivions 1>1 ou >, cela ne fait pas de diff rence. Si le num ro du descripteur de chier est omis, cest stdout qui est utilis . e 2. les deux syntaxes > sortie 2>&1 et &>sortie sont equivalentes.
1 Attention : le 1 doit etre accol au >, sinon le shell va interpr ter 1 comme un param` tre du e e e programme.

Les syntaxes que nous venons de voir sont tr` s utiles dans les cas o` il est n cessaire de e u e dissocier les sorties normales dun programme et les sorties derreur, ainsi que dans les cas o` il faut r cup rer toutes ces sorties dans un m me chier. Nous verrons (Section u e e e 3.4) comment conserver lafchage a l cran tout en envoyant la sortie vers un chier. ` e

3.4 Les canaux de communications


Un canal de communication | est un moyen de connecter la sortie dun programme sur lentr e dun autre. Le programme wc(1) compte les lignes, les mots et les cae ract` res quil lit sur son entr e standard, et afche ces valeurs sur une ligne lorsquil se e e termine. Loption -l lui demande de ne tenir compte que des lignes. $ ./trace | wc -l erreur vers stderr 1 $ ./trace 2>&1 | wc -l 2 Dans le premier cas, seule la sortie standard de trace est connect e a lentr e e ` e standard de wc(1), alors que dans le second les deux sorties de trace sont connect es e a lentr e standard wc . ` e Comme promis, un programme tr` s utile : tee(1). Il recopie son entr e standard e e dans le chier pass en param` tre ainsi que sur sa sortie standard. e e $ ./trace 2>&1 | tee sorties-de-trace erreur vers stderr sortie vers stdout $ cat sorties-de-trace erreur vers stderr sortie vers stdout

3.5 Cr ation de liens e


Deux types de liens existent dans les syst` mes de chiers GNU/Linux et Unix . e Les deux types de liens peuvent etre cr es a laide de la commande ln(1). e ` Liens physiques Le chier cr e ainsi partage le m me espace disque physique que le e e chier originel. Les deux chiers doivent etre sur une m me partition physique. e Liens symboliques Le chier cr e ainsi indique lemplacement du chier d sign . e e e Lemplacement du chier destination peut etre relatif ou absolu, et peut r sider e sur une autre partition. $ ls -l sortie -rw-r----1 patrick $ ln sortie output $ ls -l sortie output -rw-r----2 patrick -rw-r----2 patrick $ ln -s sortie sym

patrick

38 Dec 27 02:58 sortie

patrick patrick

38 Dec 27 02:58 output 38 Dec 27 02:58 sortie

$ ls -l sortie sym -rw-r----2 patrick lrwxrwxrwx 1 patrick $

patrick patrick

38 Dec 27 02:58 sortie 6 Dec 27 04:11 sym -> sortie

La valeur dans la seconde colonne donne le nombre de liens physiques sur linode du chier. La cr ation du premier lien incr mente ce nombre de liens. Une des cons quences e e e est que le chier ne pourra etre d truit physiquement que lorsque le nombre de ces liens e deviendra nul. Une autre cons quence est que lon peut supprimer le chier originel e sans que le nouveau chier nen soit alt r . ee La cr ation du second type de lien ne modie pas cette valeur. Le chier nouvele lement cr e ne fait quindiquer lemplacement du chier originel. Si lon supprime le e chier originel, le lien continue dexister mais nest plus fonctionnel. Pour supprimer un lien, on utilise la commande rm(1) qui supprime aussi bien des liens que des chiers. $ rm sortie $ ls -l output sym -rw-r----1 patrick patrick lrwxrwxrwx 1 patrick patrick $ cat output erreur vers stderr sortie vers stdout $ cat sym cat: sym: No such file or directory

38 Dec 27 02:58 output 6 Dec 27 04:11 sym -> sortie

3.6 Suppression de liens symboliques


Lorsque lon supprime un lien symbolique, cela ne touche pas le chier ou r pertoire e d sign par le lien. Ainsi, lors dune destruction r cursive de r pertoire ( rm -r repertoire e e e e ), les liens symboliques contenus a lint rieur de ce r pertoire ou des r pertoires d truis ` e e e e r cursivement sont simplement supprim s. Si un lien symbolique d signe un r pertoire, e e e e le r pertoire d sign nest pas parcouru ni supprim . e e e e

3.7 Syst` me de permissions e


Dans la section pr c dente, nous avons utilis la commande ls(1) avec loption e e e -l. Nous allons maintenant expliquer ce que signient les informations que cette commande afche.

3.7.1 Les permissions


$ ls -alh total 32k drwxr-s--drwxr-s---rw-r----lrwxrwxrwx

2 5 1 1

patrick patrick patrick patrick

patrick patrick patrick patrick

4.0k 4.0k 38 6

Dec Dec Dec Dec

27 27 27 27

04:30 04:45 02:58 04:11

. .. output sym -> sortie

[ ... ] $ La valeur afch e sur la premi` re ligne indique la taille occup e par les chiers e e e du r pertoire. A noter quun lien symbolique noccupe pas despace disque (la place e n cessaire pour enregistrer la destination est prise sur linode du r pertoire si sa taille e e est inf rieure a 60 octets). e ` Pour la seconde colonne, voir la section pr c dente. e e La troisi` me colonne indique quel est le propri taire du chier (ici patrick), et e e la quatri` me colonne indique quel est le groupe du chier (ici patrick egalement). e Les informations suivantes sont la taille (ici afch es dans un format lisible pour e un etre humain gr ce a loption -h), la date, lheure et le nom. a ` La premi` re colonne se d compose en 10 caract` res. e e e Le premier caract` re correspond au type de chier (voir table 3.1). e TAB . 3.1 Types de chiers d l b c s p Fichier r gulier e R pertoire e Lien symbolique P riph rique de type bloc e e P riph rique de type caract` re e e e Socket Tube nomm (Named pipe) e

Les neuf caract` res suivants se subdivisent en trois groupes : e Les permissions du propri taire e Les permissions du groupe Les permissions des autres Les trois caract` res des permissions rwx peuvent prendre les valeurs suivantes e (voir table 3.2) :

3.7.2 Modication des permissions


Maintenant, voyons comment modier les bits de permissions avec la commande chmod(1). Nous omettrons quelques syntaxes particuli` res (voir les syst` mes daide e e info ou man ). Le format symbolique Syntaxe de la commande chmod(1) (mode symbolique) : chmod MODE[,MODE] fichiers Le param` tre MODE est form par la concat nation dun a trois caract` res ugoa , e e e ` e dun caract` re +- et dun ou plusieurs caract` res rwxXstugo , dont la signication e e est indiqu e dans la table 3.7.2. e Exemples : $ chmod ug+rw,o-rwx * $ chmod u+s prog

TAB . 3.2 Les valeurs des bits de permissions Bit r r w w x Valeurs r w x Signications Permission en lecture Interdit en lecture Permission en ecriture Interdit en ecriture Permission en ex cution. Pour un r pertoire, signie e e que lon peut rentrer (avec la commande cd(1)) dans ce r pertoire, ou lister son contenu (avec la commande e ls(1)). Interdit en ex cution e Donner les droits de lutilisateur ou groupe lors de lex cution e Pour un r pertoire, nautoriser la suppression et le renome mage quau propri taire du r pertoire et au propri taire e e e des chiers contenus dans le r pertoire e

x x x

s t

TAB . 3.3 D composition du MODE symbolique de chmod e u Propri taire (user) e g Groupe Utilisateurs o Autres (other) a Tous les utilisateurs (all) + Ajouter les permissions Action - Supprimer les permissions r Lecture w Ecriture x Ex cution e X Ex cution si le chier est un r pertoire ou a d j` un bit x e e ea Bits positionn e s Set (GID ou UID) t Sticky bit u Copier les permissions du propri taire e g Copier les permissions du groupe o Copier les permissions des autres

Le format octal Syntaxe de la commande chmod (mode octal) : chmod OCTAL fichiers Le format octal est constitu de 4 chiffres en octal, le premier etant optionnel (voir e leur d composition dans la table 3.7.2) : e TAB . 3.4 D composition du mode OCTAL de chmod e 4 Set User ID bit 1er octet 2 Groupe 1 Sticky bit 4 Read bit ` ` Write bit 2eme au 4eme octet 2 1 Execute bit

La valeur des chiffres est obtenue en composant les valeurs des bits a laide de ` laddition. Soit pour positionner les bits r et w, on ajoute 4 2 ce qui donne 6. L quivalent des commandes symboliques est (dans le second cas, on suppose que e lon souhaite accorder les droits en lecture, mais pas en ecriture) : $ chmod 660 * $ chmod 4755 prog Modication r cursive e On constate quil est plus facile de g rer le format symbolique, car il nest pas e n cessaire de sp cier les valeurs de tous les bits. Ceci est particuli` rement pratique e e e lorsque lon modie des permissions de facon r cursive en utilisant loption -R. e $ chmod -R u+rw,g+r,g-w,o-rwx /home/patrick/* $ Il est aussi possible dutiliser la commande find(1) pour faire des modications r cursives. Notamment, si lon ne souhaite effectuer les modications que sur les e chiers ou les r pertoires, ou, si lon souhaite neffectuer les modications qu` partir e a dun r pertoire particulier. e La premi` re commande ne modie que les chiers, la seconde ne modie que les e r pertoires, et la troisi` me ne modie que les chiers et r pertoires contenus dans le e e e r pertoire nomm cible , et la quatri` me r alise la m me chose que la troisi` me, mais e e e e e e a laide de la commande xargs(1). ` $ find . -type f ./1/cible/fic ./2/cible/fic ./3/cible/fic $ find . -type f -exec chmod u+rw {} \; . ./1

./1/cible ./2 ./2/cible ./3 ./3/cible $ find . -type $ find . -name ./1/cible ./2/cible ./3/cible $ find . -name $ find . -name

d -exec chmod g+rwx {} \; cible

cible -exec chmod -R og-rwx {} \; cible | xargs chmod -R og-rwx

La commande find permet de parcourir une arborescence de r pertoires, elle e prend pour premier param` tre un r pertoire (ici ., cest-` -dire le r pertoire courant). e e a e Elle applique ensuite une s lection sur les chiers et r pertoires parcourus (ici, soit une e e s lection sur le type (f pour chier, ou d pour r pertoire). e e La fonction ex cut e par d faut est lafchage des noms des chiers et r pertoires e e e e parcourus (loption -print est loption par d faut). Elle peut etre remplac e par e e laction -exec. La syntaxe de laction -exec est singuli` re. Tout ce qui suit cette option, jusquau e ; est consid r comme la commande a ex cuter et ses param` tres. Le ; doit etre ee ` e e echapp , car cest le s parateur de commandes du shell, et il ne serait pas vu par find e e si le . etait omis. La s quence est remplac e par le nom du chier ou r pertoire. e e e La commande xargs recoit en param` tre le nom dune commande a ex cuter. Elle e ` e lit dans son entr e standard une liste de param` tres s par s par des espaces, tabulations e e e e ou retour chariot. Elle transmet chacun de ces param` tres a cette commande. e `

3.7.3 Choisir les permissions par d faut e


Lorsquun chier est cr e, ses permissions sont attribu es en fonction dun masque e e que chaque utilisateur peut modier selon ses pr f rences a laide de la commande ee ` interne umask(bash(1)). Elle peut etre soit utilis e avec les permissions symboliques, dans ce cas, on indique e quelles sont les permissions que lon autorise pour chacun des propri taire, groupe et e autres. Mais aussi avec les permissions num riques en octal, et dans ce cas, la valeur e indique les bits que lon souhaite supprimer. Ainsi, si je souhaite que mon groupe puisse lire, et ex cuter, mais pas ecrire, et que e les autres nauront aucun droit, je peux utiliser lune des deux commandes suivantes : $ umask u=rwx,g=rx,o= $ umask 027

3.7.4 Modier le propri taire et/ou le groupe dun chier e


Un utilisateur peut modier le groupe dun chier qui lui appartient, a condition ` quil fasse lui-m me partie du nouveau groupe, mais il ne peut modier le propri taire e e du chier. Le changement de propri taire se fait automatiquement si le destinataire e copie le chier. Le super utilisateur peut, bien evidemment, modier tant le groupe que le pro pri taire, sans aucune restriction. e

Pour modier le groupe dun chier, on utilise la commande chgrp(1). La syntaxe est chgrp groupe fichiers , o` groupe est un groupe existant, et chiers est une u liste de chiers et/ou de r pertoires. une option -R permet de parcourir les r pertoires e e r cursivement. e Pour modier le propri taire dun chier, on utilise la commande chown(1). La e syntaxe est sensiblement la m me que pour chgrp(1) ( chown proprio fichiers e ), mais proprio repr sente le propri taire, eventuellement suivi dun nom de groupe e e s par par le symbole : ou le symbole . . e e # chgrp patrick *.tex *.dvi # chown -R tuxbihan:devel *.c* *.h*

3.8 D terminer le type de chier e


Les extensions de chiers, cest-` -dire, les caract` res situ s derri` re le dernier a e e e point, sont en g n ral une bonne facon de d terminer le type de chier auquel on a e e e affaire. Par exemple, un chier termin par lextension .tex est probablement un e A chier LTEX. Mais il nexiste aucune obligation dutiliser une telle extension signicative, et de nombreux chiers nont pas dextensions, notamment les commandes Unix . Pour savoir a quel type de chier on a affaire, on se base donc sur les permissions, pour ` savoir si le chier est ex cutable ou non, et on peut utiliser la commande file(1) e pour sassurer du contenu exact dun chier. Elle analyse le contenu du chier pour donner un diagnostic. Si vous souhaitez creuser un peu plus le fonctionnement de cette commande, regardez le chier /usr/share/misc/magic et sa description (magic(5)).

3.9 Copie de chiers


Lorsque lon copie un chier, les permissions du chier, ainsi que le propri taire e sont modi s. Si je suis lutilisateur patrick et que je copie le chier .emacs.el e qui appartient a lutilisateur tuxbihan , ce que je peux faire si jai le droit de lire ` ce chier, la copie de ce chier mappartient, et ses permissions sont r evalu es en e e fonction de la valeur de umask(bash(1)). Ce comportement est satisfaisant dans la quasi totalit des cas, mais il pose probl` me e e lorsque que lon souhaite faire une copie conforme des chiers. Cest le cas, par exemple, quand root souhaite copier des chiers qui ne lui appartiennent pas pour les d placer e dune partition vers une autre, ou dun r pertoire vers un autre. Si cette copie est faite e sans pr cautions, a la n de la copie, tous les chiers appartiennent a root , et leur e ` ` ancien propri taire ne peut plus les utiliser. e Plusieurs options de la commande cp(1) sont utiles dans ce cas ( -p pour pr server e les attributs des chiers, -d pour ne pas suivre les liens symboliques, -R pour parcourir r cursivement les r pertoires), lune delles combine les autres ( -a qui est e e equivalente a -dpR ). ` De plus, pour copier des partitions enti` res, il faut utiliser loption -x qui interdit e a la commande cp(1) de changer de syst` me de chiers au cours de la copie. ` e

Chapitre 4

Gestion des utilisateurs


Dans le chapitre pr c dent, nous avons abord la notion dutilisateurs et de groupes, e e e mais si linstallation de votre distribution a cr e au moins deux utilisateurs automae tiquement ( root et un utilisateur normal), la cr ation de nouveaux utilisateurs est e laiss e a votre discr tion. La t che de gestion des utilisateurs et groupes incombe au e ` e a super utilisateur ( root ).

4.1 Les chiers dutilisateurs et de groupes


Les utilisateurs sont stock s dans le chier /etc/passwd , dont le format est e d crit dans la page de manuel passwd(5). Les mots de passe, qui peuvent etre moe di s a laide de la commande passwd(1) peuvent etre stock s, soit dans le chier e ` e /etc/passwd , soit dans le chier /etc/shadow . Les groupes sont stock s dans le chier /etc/group , dont le format est d crit e e dans la page de manuel group(5). Seul root est habilit a faire ces manipulations. Il faut donc soit se connecter e` comme root dans une console virtuelle, soit utiliser la commande su(1) (voir section 1.5) pour changer didentit . e

4.2 Cr er et supprimer des utilisateurs e


Pour cr er un nouvel utilisateur, plusieurs commandes sont disponibles. adduser(8) e pr sente lavantage de poser des questions pour obtenir les param` tres dont elle a bee e soin1 . Pour supprimer un utilisateur, utiliser la commande deluser(8). # adduser newuser Adding user newuser... Adding new group newuser (1004). Adding new user newuser (1004) with group newuser. Creating home directory /home/newuser. Copying files from /etc/skel
1 Attention, les utilisateurs de Mandrake seront tr` s d cus de sapercevoir que cette commande nest quun e e lien vers la commande useradd(1)

31

Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for newuser Enter the new value, or press return for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [y/n] y # grep newuser /etc/passwd newuser:x:1004:1004:,,,:/home/newuser:/bin/bash # grep newuser /etc/shadow newuser:$1$9y3d/b5S$e5s2A.$UjydgPiOHklz19w.:12067:0:99999:7::: # deluser newuser Removing user newuser... done. # grep newuser /etc/passwd #

4.3 Cr er et supprimer des groupes e


Les commandes addgroup(8) et delgroup(8) sont les pendants des fonctions de gestion des utilisateurs. # addgroup thegroup Adding group thegroup (105)... Done. # grep thegroup /etc/group thegroup:x:105: # delgroup thegroup Removing group thegroup... done.

4.4 Ajouter un utilisateur dans un groupe


La commande groups(1) permet de v rier a quels groupes un utilisateur appare ` tient. La syntaxe est groups utilisateur , o` utilisateur est une liste dutilisau teurs, qui est optionnelle si lon souhaite v rier a quels groupes lutilisateur courant e ` appartient. # groups patrick tuxbihan patrick : patrick dialout cdrom floppy audio dip www-data src devel tuxbihan : tuxbihan audio Les groupes auxquels appartient un utilisateur d terminent ses droits dutilisation e de certains p riph riques, ainsi que ses droits en lecture/ criture de certains chiers. e e e

Au-dessus, on voit que lutilisateur tuxbihan appartient au groupe audio , ce qui lui donne le droit dacc der aux p riph riques appartenant au groupe audio. e e e Les deux commandes ci-dessous permettent de voir quels sont ces p riph riques. e e $ find /dev -group audio $ ls /dev | grep audio Lutilisateur patrick appartient aussi aux groupes cdrom , ce qui permet notamment dutiliser cdparanioa(1)2 , au groupe floppy , ce qui permet dutiliser la commande dd(1) sur le lecteur de disquettes. Pour information, dd(1) permet de cr er une image disque, ou de copier une image e disque sur un support, par exemple : $ dd if=/dev/fd0 of=/tmp/img $ dd of=/dev/fd0 if=/tmp/img Pour visualiser les p riph riques concern s, on peut utiliser la commande find(1), e e e avec une recherche sur le groupe et lop rateur OU - -o : e $ find /dev -group cdrom -o -group floppy -o group audio -o group dialout $ Pour ajouter un utilisateur a un groupe, on peut utiliser la commande adduser(8). ` Bien s r, seul root peut faire cela. u # adduser tuxbihan floppy Adding user tuxbihan to group floppy... Done. # groups tuxbihan tuxbihan: tuxbihan floppy audio # Pour que lappartenance au nouveau groupe prenne effet, il faut que lutilisateur tuxbihan se reconnecte.

2 Sur un syst` me utilisant des p riph riques SCSI ou IDE-SCSI, il faudra aussi changer le groupe des e e e p riph riques /dev/sg* e e

Chapitre 5

Contr le des processus o


Nous allons dans ce chapitre etudier les fonctions qui permettent de manipuler les processus, cest-` -dire, leur envoyer des signaux, les stopper, les tuer, les mettre en a arri` re-plan, et les ramener en avant-plan. e

5.1 Visualiser les processus en cours


Les processus en cours dex cution sont list s par la commande ps(1). La premi` re e e e e ligne de ps indique la signication des diff rentes colonnes. $ ps PID TTY 1058 pts/4 1225 pts/4 $

TIME CMD 00:00:00 bash 00:00:00 ps

Dautres options permettent dafcher plus dinformations. Les options a et x permettent de voir lensemble des processus (R f rez-vous a la documentation de ee ` ps(1) pour une description compl` te des tr` s nombreuses options de cette commande). e e Voici un petit extrait dune sortie de g n r e par ps ax --forest . e ee $ ps ax --forest PID TTY STAT [...] 995 ? S 997 pts/3 S 1058 pts/4 S [...] $

TIME COMMAND 0:12 /usr/bin/emacs -g 110x67 0:00 \_ /bin/bash 0:00 \_ /bin/bash -i

Loption --forest indique les liens de parent entre les processus. Au-dessus, le e processus emacs a lanc deux processus ls bash , lun deux est un shell emacs et e A lautre est utilis pour compiler les chiers L TEX. e

34

5.2 Lancer un processus en arri` re-plan e


La fonctionnalit la plus fr quemment utilis e, avec lenvoi de signaux, est lex cution e e e e en arri` re-plan dune commande. Lex cution en arri` re-plan est utile quand une come e e mande risque de durer longtemps, et que lon ne souhaite pas attendre la n de son ex cution. e Par exemple, la commande updatedb (voir sous-section 1.3.3), quil vaut mieux lancer sous le compte de root, car il peut acc der a tous les r pertoires, met beaucoup e ` e de temps a sex cuter. ` e Pour lancer un processus en arri` re-plan, il faut terminer la ligne de commande par e un &. # updatedb & [1] 1234 Le nombre entre crochets est le num ro de job (voir jobs(bash(1))). Le nombre e qui suit est le PID , cest-` -dire lidentiant du processus. a Ce nest pas forc ment une bonne id e de lancer en arri` re-plan un processus qui e e e g n` re beaucoup de sorties sur l cran, car ces sorties vont perturber votre travail en e e e sins rant au milieu des sorties des programmes que vous allez ex cuter par la suite. e e Vous pouvez utiliser les redirections (voir la section 3.3) pour envoyer ces sorties vers un chier.

5.3 Interrompre un processus


Il est parfois n cessaire de mettre n au processus actif, (parce que lon a fait une e erreur en le lancant, par exemple). Il suft de presser la combinaison de touches Ctl C. Si le processus nest pas actif sur le m me terminal, on peut linterrompre en utilie sant la commande mal nomm e kill(1). La commande kill permet en fait dene voyer un signal a un processus. Ce signal peut etre un signal dinterruption, mais pas ` n cessairement, bien que le signal envoy par d faut ( SIGHUP ) mette n au processus. e e e Pour visualiser les effets de ces commandes, nous allons utiliser deux programmes C que nous pourrons lancer et interrompre a volont . ` e Le premier (voir gure 5.1) afche un caract` re x sur le terminal toutes les see condes. Ses sorties vont donc se m langer avec celles des processus courants. e Le second (voir gure 5.2) nafche rien, il utilise les ressources processeur autant quil le peut, en ex cutant du code en permanence. e Nous allons compiler ces chiers avec les lignes de commande suivantes : $ cc -o longcmd longcmd.c $ cc -o long-and-silent long-and-silent.c $ ./longcmd & [1] 1594 $ kill 1594 Pour d truire le processus, nous aurions pu utiliser egalement le num ro de job e e avec la commande kill %1 , ou encore kill pidof longcmd . La commande

pidof(8)1 retourne le (ou les) PID du (ou des) processus dont le nom est pass en e param` tre. Attention a ne pas d truire dautres processus que celui que vous souhaitez e ` e d truire ! e

5.4 Stopper un processus et le r activer e


Lorsquun processus na pas et lanc en arri` re-plan, et que lon souhaite ree e e prendre la main, il nest pas n cessaire dinterrompre le processus. On peut le suse pendre a laide de la s quence de touches C-Z(bash(1)). On retourne au processus ` e stopp avec la commande interne fg(bash(1)). e $ ./longcmd xxxxZ [1]+ Stopped $ ps x PID TTY STAT [...] 1233 pts/4 T 1234 pts/4 R $ fg ./longcmd xxxxxC
1

./longcmd TIME COMMAND 0:00 ./longcmd 0:00 ps x

Il a et constat sur des distributions Mandrake que cette commande ne fonctionnait pas. e e

#include <stdio.h> int main() { while(1) { printf("x"); fflush(stdout); sleep(1); } }

F IG . 5.1 Code source de longcmd.c #include <stdio.h> int main() { for(;;); }

F IG . 5.2 Code source de long-and-silent.c

$ La lettre T dans la colonne STAT indique que le processus est stopp . On peut e constater que les caract` res x que le processus afchait ne sont plus g n r s. e e ee On peut egalement, apr` s avoir stopp le processus, le remettre en fonctionnement, e e mais en le maintenant en arri` re-plan, a laide de la commande bg(bash(1)). e ` $ ./longcmd xxxxZ [1]+ Stopped $ bg %1 [1]+ ./longcmd & $ xxxxps x PID TTY STAT [...] 1242 pts/4 S 1246 pts/4 R $ xxxxkill %1 [1]+ Terminated

./longcmd

TIME COMMAND 0:00 ./longcmd 0:00 ps x ./longcmd

On voit quapr` s avoir mis le processus en arri` re-plan, les caract` res x quil e e e afche se m langent a lafchage. Pour mettre n au processus, on utilise la commande e ` kill %1 , qui a pour effet de d truire le job n 1. e

` 5.5 Envoyer un signal a tous les processus de m me e nom


La commande killall(1) envoie un signal a tous les processus qui portent le ` m me nom. Faire attention aux eventuelles cons quences ! e e

` 5.6 Envoyer le signal HUP a un daemon


Un moyen courant de forcer un daemon a relire ses chiers de conguration est de ` lui envoyer le signal HUP . Par exemple, apr` s avoir modi la conguration du daemon e e inetd : # emacs /etc/inetd.conf # kill -HUP pidof inetd

5.7 Lancer une commande avec nohup(1)


Les essais r alis s avec une Debian 3.0 (kernel 2.4.18) nont pas permis de mettre e e en evidence lint r t de la commande nohup , puisquune commande lanc e simple ee e ment en arri` re-plan se comporte comme si elle avait et lanc e avec nohup . Pour e e e m moire, cette commande est sens e maintenir active une commande (en redirigeant e e ses sorties vers le chier nohup.out ) apr` s que lutilisateur qui la lanc e se soit e e d connect . e e

5.8 Ex cuter une commande avec nice(1) e


La commande nice lance une commande en arri` re-plan avec un param` tre qui e e indique sa priorit dex cution. e e Pour mettre en evidence leffet de la commande, nous utiliserons la commande top(1). Cette derni` re afche les temps CPU utilis s par chaque processus. e e $ nice -n 20 ./long-and-silent & [9] 1033 $ ./long-and-silent & [10] 1034 $ top 93 processes: 89 sleeping, 4 running, 0 zombie, 0 stopped CPU states: 71.4% user, 21.4% system, 7.1% nice, 0.0% idle Mem: 384824K total, 200868K used, 183956K free, 5172K buffers Swap: 128484K total, 0K used, 128484K free, 100960K cached PID USER 1034 patrick 1035 patrick 595 root 656 patrick 682 patrick 1033 patrick [...] $ PRI NI SIZE RSS SHARE STAT %CPU %MEM 16 0 252 252 208 R 57.2 0.0 12 0 940 940 716 R 14.3 0.2 5 -10 66964 17M 3400 S < 7.1 4.6 9 0 4544 4544 3492 R 7.1 1.1 9 0 4664 4664 3616 S 7.1 1.2 19 19 252 252 208 R N 7.1 0.0 TIME 0:32 0:04 1:02 0:03 0:05 0:04 COMMAND long-and-silent top XF86_SVGA gnome-terminal deskguide_apple long-and-silent

On voit bien ici que le processus lanc avec nice , dont le PID est 1033 a consomm e e moins de temps CPU (7,1 %) que le processus lanc sans nice dont le PID est 1034 e et qui a consomm 57,2 % de CPU. e

Chapitre 6

Programmation du shell
Nous allons ecrire des programmes pour bash(1). Comme chaque programme devra contenir le chemin de bash , il est n cessaire de le localiser. Nous utiliserons e pour cela la commande which(1). $ which bash /bin/bash $ Toutes les commandes que nous avons utilis es jusquici peuvent etre enregistr es e e dans un chier, dont la premi` re ligne serait : e #!/bin/bash Un tel chier constituerait d j` un programme shell, mais nous allons etudier ici ea quelques structures qui permettent r ellement de contr ler le d roulement du proe o e gramme, comme le permet tout langage de programmation.

6.1 Les param` tres dun programme shell e


Les param` tres pass s a un programme shell sont d r f renc s en utilisant la notae e ` eee e tion $x, o` x est un num ro de 1 a 9. Ce qui limite le nombre de param` tres utiu e ` e lisables simultan ment a 9. Heureusement, la commande interne shift(bash(1)) e ` permet datteindre les param` tres suivants, mais le param` tre $1 devient alors inace e cessible. Essayons notre premier programme (voir gure 6.1) : F IG . 6.1 Premier programme shell : prg-hello # !/bin/bash echo Bonjour $1 Nous pouvons lex cuter comme ceci, en passant ce chier comme param` tre a la e e ` commande bash(1) : 39

$ bash prg-hello Bonjour $ ou comme ceci, en rendant le chier ex cutable : e $ chmod +x prg-hello $ ./prg-hello Bonjour $ ./prg-hello Patrick Bonjour Patrick $

6.2 La commande read(bash(1))


Modions-le ainsi en utilisant la commande interne read(bash(1)) (voir gure 6.2) : F IG . 6.2 Second programme shell : prg-hello2 # !/bin/bash read name echo Bonjour $name La commande interne read(bash(1)) lit au clavier un texte termin par un ree tour chariot, et le stocke dans la variable pass e en param` tre. Comme pour le pae e ram` tre $1, le d r f rencement se fait en pr c dant la variable par le symbole $. e eee e e

6.3

if(bash(1))

Si lutilisateur rentre une ligne vide, on indique un message derreur (voir gure 6.3) : e e Le avant le , car, rappelez-vous, cest le caract` re qui permet d viter linterpolation de variables. Le test aurait pu etre invers en utilisant le caract` re ! devant les crochets. ! e e signie non . Faites lessai. Toutes les expressions conditionnelles qui peuvent etre evalu es sont list es dans e e la rubrique CONDITIONAL EXPRESSIONS du manuel de bash(1). Le test if(bash(1)) peut etre plus complexe, avec des tests dans la clause else, ce qui donne : if ... then ... elif ... then ... else ... fi .

6.4 La boucle until(bash(1))


Voici comment parcourir la liste des param` tres de la ligne de commande a laide de e ` la boucle until(bash(1)). Nous aurions pu utiliser la boucle while(bash(1)) en inversant le test avec !.

#!/bin/bash until [ "$1" = "" ] do echo parm: $1 shift done

6.5 La boucle for(bash(1))


e Avec une boucle for(bash(1)) et la variable $* qui repr sente la liste de tous les param` tres, nous aurions pu ecrire ce programme comme ceci. A noter que $# e donne le nombre de param` tres recus. e

#!/bin/bash for i in $* do echo parm: $i shift done

6.6 La structure de choix case(bash(1))


La structure case(bash(1)) permet de s lectionner une option parmi plusieurs. e On gagne en lisibilit lorsque le nombre de choix est important par rapport a un test if e ` ... then ... elif ... then ... else ... fi . #!/bin/bash

F IG . 6.3 Troisi` me programme shell : prg-hello3 e #!/bin/bash echo -n "Comment vous appelez-vous ? " read name if [ "$name" = "" ] then echo Vous n\avez pas donn votre nom ! e else echo Bonjour $name fi

# Test de $SHELL case $SHELL in "/bin/bash" ) echo Votre shell est un bon shell;; "/bin/csh" ) echo Pas mal non plus;; *) echo Vous devriez utiliser le shell bash;; esac

Testons maintenant ce programme : $ ./case-struct Votre shell est un bon shell $ env SHELL=autre ./case-struct Vous devriez utiliser le shell bash

6.7 Sortie de boucle


Nous signalerons, sans nous attarder, les instructions break(bash(1)) qui permet de quitter une boucle et continue(bash(1)) qui permet de quitter le corps de la boucle et de sauter au test suivant. #!/bin/bash for i in 1 2 3 do if [ $i -eq 2 ] then break else echo $i fi done

#!/bin/bash for i in 1 2 3 do if [ $i -eq 2 ] then continue else echo $i fi done

6.8 Renommer des chiers


Apr` s avoir utilis cdparanoia(1) pour extraire les pistes audio de votre chane e teur pr f r , et oggenc(1), vous souhaitez renommer les chiers track01.ogg a eee ` track20.ogg en Klaus-Nomi-01.ogg a Klaus-Nomi-20.ogg . `

for i in track*.ogg do mv $i ${i/track/Klaus-Nomi-} done

6.9 Convertir des noms de chier des minuscules vers les majuscules
Voici une ligne de commande pour renommer les noms chiers en minuscules en noms de chiers en majuscules (pour eviter les accidents malencontreux, cette com mande inverse les minuscules et les majuscules, donc, si par accident, vous ex cutez e cette commande dans un r pertoire critique, il suft dattendre quelle se termine et la e relancer a nouveau). ` Ex cution dans un seul r pertoire : e e $ for i in * ; do mv $i $(echo $i | tr a-zA-Z A-Za-z); done Ex cution dans toute une arborescence : e $ find . -type f -exec bash -c src={}; echo $src | tr a-zA-Z A-Za-z); \ [ $src != $dst ] && mv $src $dst \; $ dst=$( \

Un petit exercice a r aliser pour ceux qui veulent creuser ; faire la m me commande ` e e quau-dessus mais en modiant aussi les r pertoires ! Le probl` me est que si lon se e e contente denlever le -type f les r pertoires sont renomm s avant que nd nait le e e temps de les parcourir, et nd sort une erreur, car il essaie douvrir un r pertoire en e minuscules, alors quil vient d tre renomm en majuscules. e e Une solution a et donn e par Peter Stopschinski (voir gure 6.4 : e e F IG . 6.4 Solution de Peter Stopschinski $ find . -depth -exec bash -c src={} ; srcA=${src%/*} ; \ srcZ=${src##*/} ; dst=$(echo $srcZ | tr a-zA-Z A-Za-z); \ [ $srcZ != $dst ] && mv $src ${srcA}/$dst \;

6.10 Exemples de programmes


6.10.1 Vider le spool de exim(1)
Ce programme (voir gure 6.5) permet de supprimer tous les mails en attente dans le spool dexim. Il recherche tous les chiers qui se terminent par -H , ce sont les chiers qui contiennent les ent tes. Leur nom est le num ro de mail en attente suivi de e e -H . Il appelle la commande exim(1) avec loption -Mrm en supprimant le -H du nom de chier trouv . e F IG . 6.5 Vidage du spool exim

#!/bin/bash # $i scans all the files in the exim spool cd /var/spool/exim/input for i in *-H do /usr/sbin/exim -Mrm ${i/-H/} done cd -

6.10.2 G n rer de beaux chiers PDF e e


Ce programme (voir gure 6.6) pourrait etre am lior en testant le r sultat des e e e e commandes pslatex , dvips et ps2pdf . L criture du test pourrait utiliser $#. La mani` re d crire ce test est tr` s fonctionnelle, cest une ecriture de type Lisp, e e e souvent adopt e dans les programmes Perl. e

6.10.3 Extraire des pistes audio et les convertir en Ogg Vorbis


Ce programme (voir gure 6.7) r alise successivement une extraction de pistes e audio avec cdparanoia1, un encodage au format Ogg Vorbis (en faible qualit ) avec e oggenc(1), puis un renommage des chiers avec le nom de lauteur et le titre du disque. Un exemple dutilisation : $ extract2ogg "Tracy Chapman Cross Roads" [...] $ ogg123 "Tracy Chapman Cross Roads 01.ogg"

F IG . 6.6 G n ration PDF e e

#!/bin/sh ` # Un param`tre: $1: Nom du fichier a compiler e # Si plus ou moins de param`tres, on arrte. e e usage () { echo "$0: $0 myfile.tex" echo "Generates a clean myfile.pdf file and a myfile.ps" } [ ! "$1" ] || [ "$2" ] && { usage exit 1 } pslatex \\nonstopmode\\input $1 dvips ${1/.tex/.dvi} ps2pdf -dPDFSETTINGS=/printer ${1/.tex/.ps}

F IG . 6.7 Extraction audio #!/bin/bash # Set defaults values no_extract=no no_rm_wav=no tracks="" # Check options for (( ; 1 ; )) ; do case "$1" in ( --no-extract | -e ) no_extract=yes;; ( --no-rm_wav | -r ) no_rm_wav=yes;; ( --tracks | -t ) tracks=$2; shift;; ( * ) break esac shift done usage () echo echo echo echo echo echo echo echo echo echo } { "Usage: extract2ogg OPTIONS \"Nom Chanteur Titre Disque\"" "extracts a CD" "Converts files to ogg Vorbis format" "Renames files to \"Nom Chanteur Titre Disque\"" "OPTIONS:" "if --tracks is specified, extracts only the specified tracks (see cdparanoia for "if --no-extract is specified, doesn\t performs extraction" "if --no-rm-wav is specified, Wav files are not removed after processing"

# Test if requested number of parameters is ok [ ! "$1" ] || [ "$2" ] && { usage exit 1 } # Perform extraction of specified tracks [ "$no_extract" == yes ] || { if [ -z "$tracks" ]; then cdparanoia -B else cdparanoia -B "$tracks" fi } # Rename all the files *.cdda.wav to *.wav for i in *.wav; do mv $i ${i/.cdda/} done # Convert wav to ogg Vorbis oggenc -q1 *.wav # rename all files to the specified name for i in *.ogg; do dst=${i/track/$1 }

Chapitre 7

Commandes utiles
Ce chapitre regroupe (un peu en vrac pour linstant, en attendant mieux) quelques fonctions, commandes utiles.

7.1 Simplier la saisie de commandes


La commande interne alias(bash(1)) permet de substituer une chane de ca ract` res a un nom lorsque celui-ci est utilis comme une commande. Son usage le plus e ` e fr quent est de passer automatiquement des param` tres a une commande utilis e soue e ` e vent, sans avoir a saisir les param` tres a chaque fois. ` e ` Sa syntaxe est simple : alias nom_d_alias="chaine de remplacement" ou alias nom_d_alias=chaine de remplacement Le choix des quotes utilis es est fonction du fait que lon souhaite, ou non, que le e shell interpr` te le contenu de la chane avant de cr er lalias. e e Sans param` tre, la commande alias afche tous les alias existants. e Le plus souvent les commandes alias(bash(1)) sont regroup es dans le chier e .bashrc qui est interpr t par le shell bash lorsquil d marre. Ces alias deviennent ee e donc permanents et peuvent etre r utilis s a chaque session. A noter que dans ce chier, e e ` le contenu de la chane nest pas interpr t par le shell, m me si les quotes doubles sont ee e utilis es. e Un alias peut etre supprim en utilisant la commande unalias(bash(1)). e Nous en protons pour pr senter deux commandes utiles du(1) et df(1) qui pere mettent respectivement dindiquer la taille totale occup e par un r pertoire (par d faut e e e le r pertoire courant), et dindiquer lespace disque occup (et libre) sur chacune des e e partitions mont es. Ces deux commandes ont en commun de pouvoir afcher les vae leurs dans un format humainement lisible gr ce a loption -h . a ` $ df Filesystem /dev/hdb5 /dev/hdb6 /dev/hdb9

1k-blocks 2071384 2071384 2071384 47

Used Available Use% Mounted on 1650976 315184 84% / 1033728 932432 53% /var 1307548 658612 67% /usr/local

/dev/hdb10 $ alias df=df -h $ df Filesystem /dev/hdb5 /dev/hdb6 /dev/hdb9 /dev/hdb10 $ du 8 ./backticks 8 ./find/1/cible 12 ./find/1 8 ./find/2/cible 12 ./find/2 8 ./find/3/cible 12 ./find/3 40 ./find 4 ./listage 40 ./processus 52 ./programmation 20 ./redirection 168 . $ alias du=du -h $ du 8.0k ./backticks 8.0k ./find/1/cible 12k ./find/1 8.0k ./find/2/cible 12k ./find/2 8.0k ./find/3/cible 12k ./find/3 40k ./find 4.0k ./listage 40k ./processus 52k ./programmation 20k ./redirection 168k .

2071384

1731480

234680

89% /home

Size Used Avail Use% Mounted on 2.0G 1.6G 307M 84% / 2.0G 1010M 910M 53% /var 2.0G 1.3G 643M 67% /usr/local 2.0G 1.7G 229M 89% /home

7.2 Utiliser la commande ls(1) en couleur


La commande peut colorier les r pertoires, les chiers, les liens symboliques, ... e diff remment. Pour cela, il suft dajouter dans le chier .bashrc les lignes suie vantes : eval dircolors alias ls="ls --color=auto" Note : La commande eval(bash(1)) interpr` te dans le shell courant la chane e de caract` res qui lui est transmise en param` tre. e e

Toutefois, pour les habitu s dX ?Emacs, ceci pose un probl` me, car lafchage des e e couleurs dans le shell Emacs ne donne pas de r sultats concluants. La solution consiste e en une courte ligne dalias qui teste la variable denvironnement TERM pour savoir si il faut ou non utiliser la coloration. Cette ligne peut etre ajout e au chier .bashrc . e alias ls="ls -h $(if [ $TERM = dumb -o $TERM = emacs ] ; then echo --color=no ; else echo --color=auto ; fi)" alias ll=ls -l

7.3 Archiver des donn es e


tar(1) est une commande que lon se doit de connatre, car de nombreux pro grammes (sous forme de sources ou de binaires) sont distribu s dans le format quelle e g n` re. e e Pour g n rer une archive : tar -czvf archive.tgz fichiers ou tar -cjvf e e archive.tar.bz fichiers . fichiers repr sente une liste de chiers et/ou de r pertoires. Pour les autres ope e tions, voir la table 7.3. $ $ $ $ $ $ tar czvf exercices1.tgz exercices tar czf exercices2.tgz exercices tar czvf exercices3.tgz --exclude *.o exercices tar czvvf exercices3.tgz --exclude *.o exercices tar cjvf exercices1.tar.bzip exercices ls -l exercices.*

Pour lister le contenu dune archive : tar -tzvf archive.tgz ou tar -tjvf archive.tar.bz . $ tar tzf exercices1.tgz $ tar tzvf exercices3.tgz Pour extraire le contenu dune archive : tar -xzvf archive.tgz ou tar -xjvf archive.tar.bz . $ mkdir extraction; cd extraction $ tar xzvf ../exercices1.tgz

7.3.1 Comparer des chiers ou des r pertoires e


e La commande diff(1) permet de comparer deux chiers, ou deux r pertoires. Elle permet aussi de faire des comparaisons avec lentr e standard, ce que nous ne e verrons pas ici. Par exemple, pour comparer deux r pertoires : e $ diff -r exercices/ ../exercices Only in ../exercices/processus: long-and-silent.o Only in ../exercices/processus: longcmd.o Only in ../exercices/redirection: trace.o $

Pour comparer deux chiers : $ cd exercices/programmation $ diff prg-hello3 prg-hello2 5,10c5 < if ! [ "$name" = "" ]; then < echo Bonjour $name < else < echo Vous n\avez pas donn votre nom ! e < fi < --> echo Bonjour $name $

TAB . 7.1 Principales options de tar Option c t x exclude PATTERN z j v f FILE Signication Cr ation dune archive e Listage du contenu dune archive Extraction du contenu dune archive Exclure les chiers qui correspondent a PATTERN ` Compression avec gzip Compression avec bzip2 Mode verbeux (plusieurs v possibles) Utiliser le chier dont le nom est FILE

Chapitre 8

Contributions
La ligne de code qui r alise une conversion majuscules/minuscules des noms de e chiers est de Peter Stopschinski. Les lecteurs de ce document sont invit s a envoyer toute remarque ou toute propoe ` sition dajout ou de modication a lauteur1. `

1 Patrick

Percot, ppercot@free.fr

51

Annexe A

GNU Free Documentation License


This documentation is released under the following license. GNU Free Documentation License Version 1.1, March 2000 c 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

A.1

The purpose of this License is to make a manual, textbook, or other written document free in the sense of freedom : to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modications made by others. This License is a kind of copyleft, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation : a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals ; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

A.2

This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The Document, below, refers to any such manual or work. Any member of the public is

PREAMBLE

APPLICABILITY AND DEFINITIONS

52

a licensee, and is addressed as you. A Modied Version of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modications and/or translated into another language. A Secondary Section is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Documents overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The Invariant Sections are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The Cover Texts are certain short passages of text that are listed, as Front-Cover Texts or BackCover Texts, in the notice that says that the Document is released under this License. A Transparent copy of the Document means a machine-readable copy, represented in a format whose specication is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent le format whose markup has been designed to thwart or discourage subsequent modication by readers is not Transparent. A copy that is not Transparent is called Opaque. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standardconforming simple HTML designed for human modication. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine- generated HTML produced by some word processors for output purposes only. The Title Page means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, Title Page means the text near the most prominent appearance of the works title, preceding the beginning of the body of the text.

A.3

VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.

A.4

COPYING IN QUANTITY

If you publish printed copies of the Document numbering more than 100, and the Documents license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts : Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the easd (e)Tj 7.07rea (ying)-31.1 07 12.8222 14.5041 0 Td (co)Tj0.6939 0 Td (to)Tj 10batimer4 Td Td (w)Tj 7.00 Td (sd.39705 194e)Tj 12.1also copies. Thewj 43.8654lu (tou4.911420.6(j 43.865 (with)Tj720.1434 0 t594 0 T39Td

6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modied Version under the terms of this License, in the form shown in the Addendum below. 7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Documents license notice. 8. Include an unaltered copy of this License. 9. Preserve the section entitled History, and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modied Version as given on the Title Page. If there is no section entitled History in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modied Version as stated in the previous sentence. 10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the History section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. 11. In any section entitled Acknowledgements or Dedications, preserve the sections title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. 12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. 13. Delete any section entitled Endorsements. Such a section may not be included in the Modied Version. 14. Do not retitle any existing section as Endorsements or to conict in title with any Invariant Section. If the Modied Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modied Versions license notice. These titles must be distinct from any other section titles. You may add a section entitled Endorsements, provided it contains nothing but endorsements of your Modied Version by various partiesfor example, statements of peer review or that the text has been approved by an organization as the authoritative denition of a standard. You may add a passage of up to ve words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modied Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another ; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modied Version.

A.6

COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms dened in section 4 above for modied versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodied, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled History in the various original documents, forming one section entitled History ; likewise combine any sections entitled Acknowledge- ments, and any sections entitled Dedications. You must delete all sections entitled Endorsements.

A.7

COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

A.8

AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modied Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an aggregate, and this this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Documents Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

A.9

TRANSLATION

Translation is considered a kind of modication, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

A.10

TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

A.11

FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http ://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document species that a particular numbered version of this License or any later version applies to it, you have the option of following the terms and conditions either of that specied version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

Colophon
A Ce document a et ecrit en L TEX, langage de mise en page de documents ecrit par e Leslie Lamport. L diteur de texte utilis est Emacs1 , initialement ecrit par Richard Stallman. e e Le document a et produit sur un syst` me Debian GNU/Linux2. e e Lauteur3 de ce document la r alis initialement pour lassociation Tuxbihan 4. e e

://www.emacs.org ://www.debian.org 3 Patrick Percot, ppercot@free.fr 4 http ://tuxbihan.apinc.org ou http ://www.tuxbihan.org


2 http

1 http

58

Bibliographie
[1] Documentation Linux (info, man, /usr/share/doc, ...) [2] Daniel P. Boyet, Marco Cesati : Le noyau Linux, OReilly, (F vrier 2002) e [3] Daniel Robbins, Chris Houser : LPI certication 101 exam prep, Part 1-3, IBM developerWorks, (Non dat ) e [4] Matt Welsh, Matthias Kalle Dalheimer, Lar KaufMan : Le syst` me Linux, e OReilly, (Mai 2001) [5] Naba Barkakati : Red Hat Linux Secrets, Sybex, (1999) [6] Franck Gehrke, Peter Klappheck, Forbj rn Glinsky, G nter Gripp : Linux, Syo u bex, (1998)

59

Table des gures


3.1 5.1 5.2 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Code source de trace.c . . . . . . . . . . . . . . . . . . . . . . . . . Code source de longcmd.c . . . . . . . . . . . . . . . . . . . . . . . Code source de long-and-silent.c . . . . . . . . . . . . . . . . . . . . Premier programme shell : prg-hello . . Second programme shell : prg-hello2 . . Troisi` me programme shell : prg-hello3 e Solution de Peter Stopschinski . . . . . Vidage du spool exim . . . . . . . . . . G n ration PDF . . . . . . . . . . . . . e e Extraction audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 38 38 41 42 43 45 46 47 48

60

Liste des tableaux


1.1 1.2 1.3 3.1 3.2 3.3 3.4 7.1 Les commandes indispensables dEmacs . . . . . . . . . . . . . . . . Les commandes d dition dEmacs . . . . . . . . . . . . . . . . . . . e Les principales commandes de vi . . . . . . . . . . . . . . . . . . . . Types de chiers . . . . . . . . . . . . . . . . . Les valeurs des bits de permissions . . . . . . . . D composition du MODE symbolique de chmod e D composition du mode OCTAL de chmod . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 11 27 28 29 29 52

Principales options de tar . . . . . . . . . . . . . . . . . . . . . . .

61

Index
, 25 &, 37 >, 23 >>, 23 , 21 addgroup(8), 34 adduser(8), 33, 35 apropos(1), 8 bash(1), 16, 17, 41, 42 cat(1), 23 cd(1), 28 cdparanioa(1), 35 cdparanoia(1), 45 chgrp(1), 31 chmod(1), 28 chown(1), 31 Commandes internes alias, 49 bg, 39 break, 44 C-Z, 38 case, 43 cd, 21 continue, 44 eval, 50 export, 17 fg, 38 for, 43 if, 42 jobs, 37 read, 42 set, 17 shift, 41 shopt, 16, 17 umask, 31, 32 unalias, 49 until, 42 while, 42

cp(1), 32 cron(8), 8 dd(1), 35 delgroup(8), 34 deluser(8), 33 df(1), 49 diff(1), 51 du(1), 49 echo(1), 13 emacs(1), 9 exim(1), 46 exit(1), 12 expansion, 15 le(1), 32 nd(1), 30, 35 Format des commandes, 6 glob(7), 16 globalisation, 15 grep(1), 23 group(5), 33 groups(1), 34 info(1), 8 interpolation de variables, 13 kill(1), 37 killall(1), 39 ln(1), 25 locate(1), 8 locatedb(8), 8 ls(1), 22, 28, 50 magic(5), 32 man(1), 7 mkdir(1), 21 nice(1), 40

62

nohup(1), 39 oggenc(1), 45, 46 pager(1), 7 passwd(1), 33 passwd(5), 33 pidof(8), 37 ps(1), 36 pwd(1), 21 rmdir(1), 22 su(1), 12, 33 tar(1), 51 tee(1), 25 top(1), 40 updatedb(1), 8 useradd(1), 33 Variables internes optionnelles extglob, 16 nocaseglob, 16 vi(1), 9 wc(1), 25 whatis(1), 7 whereis(1), 8 which(1), 41 xargs(1), 30

Vous aimerez peut-être aussi