Vous êtes sur la page 1sur 37

Les

commandes Fondamentales De Linux


Alain MOUHLI

Introduction
Lobjectif de ce livre est denseigner les commandes fondamentales de Linux (et donc
dUnix).

Table des matires


1. Commandes fondamentales
Se dplacer dans les rpertoires (cd)
O suis-je ? (pwd)
Lister les fichiers dun rpertoire (ls)
Voir un fichier (cat et more)
diter un fichier (vi, emacs, joe)
Copier un fichier (cp)
Supprimer un fichier (rm)
Crer un rpertoire (mkdir)
Dplacer ou renommer un fichier (mv)
Retrouver un fichier (find, locate et which))
Trouver du texte dans un fichier (grep)
Les liens (ln)
Le compactage et le dcompactage des fichiers au format .gz : la commande
gzip
La commande uncompress
Archivage de donnes : la commande tar.
Connatre lespace disque restant (df, du)
La gestion des processus (top, ps, pstree, kill, killall).
La connexion de plusieurs commandes : les pipes.
Les redirections
2. bash et ses capacits
3. Organisation des rpertoires
4. Quelques commandes dadministration systme
Placer les droits dutilisation des fichiers : chmod
Dsigner lutilisateur et le groupe propritaire des fichiers : chown Ajouter un
utilisateur : adduser
Spcifier ou modifier un mot de passe : passwd
Dcrire un utilisateur : chfn
Supprimer un utilisateur : userdel
les commandes tail et head
Utiliser votre CD-ROM, votre lecteur de disquette (mount) Mettre jour le cache et
les liens des bibliothques (ou comment viter les
cant load lib au dmarrage dun logiciel)
Arrter le systme : la commande shutdown
Voil, cest fini, mais comment puis-je en savoir plus sur les commandes ?
5. Bibliographie
REMARQUE : SOUS LINUX (comme sous tout systme UNIX) LES MINUSCULES
ET LES MAJUSCULES NE SONT PAS QUIVALENTES.

1. Commandes fondamentales
- Se dplacer dans larborescence de rpertoires (cd)
Lorsque vous avez pass le login et le password de linux, vous vous retrouvez devant le
prompt shell qui est le plus souvent celui de bash (sinon vous serez devant celui de csh). Il
ressemble le plus souvent ceci :
Le mot root signifie que vous vous tes logu sur le compte de ladministrateur
systme. Vous tes donc en pleine possession de la machine, vous pouvez faire
absolument nimporte quoi, jusqu supprimer tous les fichiers faites donc trs
attention En thorie il ne faut utiliser la machine sous ce compte quafin de
ladministrer. Des comptes dits dutilisateurs permettent sinon de travailler en temps
normal. Nous verrons ci-aprs comment crer un compte utilisateur.
Le mot mistrareprsentera, dans ce document, le nom de votre ordinateur (pour le
connatre invoquer la commande hostname)
Actuellement vous vous trouvez sous le compte de ladministrateur systme, cest--dire
que vous tes dans le rpertoire /root (sous Unix, les composants des noms de rpertoires
sont spars par des slash / et non pas comme sous MS-DOS par des anti-slash ").
Dplaons-nous dans la racine du systme :
Faites bien attention de sparer par un espace cd et .., UNIX exige une grande
prcision dans la syntaxe des commandes. Soumettez la commande au systme grce la
touche Entre , videmment !
Vous tes maintenant dans le rpertoire racine :
Que contient-il ? Tapez la commande ls, et voyez le rsultat, vous devez obtenir quelque
chose comme :
Si certains fichiers ou rpertoires
manquent ce nest pas important.
Dplaons-nous dans le rpertoire qui contient une grande partie des programmes (souvent
simplement appels binaires ) de linux : /usr/bin : cd usr/bin. Vous pouvez l aussi
obtenir le contenu du rpertoire en utilisant la commande ls.
Maintenant allons voir ce que contient le rpertoire /etc (aperu lorsque nous avons list le
rpertoire racine /). Nous avons deux possibilits pour nous y rendre : soit nous revenons
dans le rpertoire racine et nous nous rendons ensuite dans le rpertoire etc; soit nous nous
rendons immdiatement dans le rpertoire /etc :
- Mthode no 1 :
cd / (pour se rendre la racine)
puis
cd etc
Cette mthode est fastidieuse car elle ncessite de taper deux commandes successives.
Nous pouvons utiliser la deuxime mthode pour nous rendre directement dans le
rpertoire /etc en crivant le chemin complet dans la commande cd :

- Mthode no 2 :
cd /etc
et nous sommes directement dans le rpertoire /etc. Dans cette commande nous avons
indiqu que pour se rendre dans le rpertoire etc, il fallait dabord se rendre dans le
rpertoire racine. Pour se faire nous avons plac un / devant etc.
Lorsque lon ajoute un ~ au lieu dun chemin la commande cd, celle-ci nous replace
automatiquement dans notre rpertoire utilisateur. Si vous tes en administrateur systme
la commande par cd ~ vous placera dans le rpertoire /root. Dans le cas o je suis (je suis
logg en tant quutilisateur delcros) je vais automatiquement me retrouver dans le
rpertoire de lutilisateur delcros qui se trouve dans /home/delcros. Les rpertoires des
utilisateurs sont tous sous /home.
[delcros@mistra bin]$cd ~
- Ceci est la mthode orthodoxe, sinon vous pouvez faire simplement : [delcros@mistra
bin]$cd
et vous reviendrez ainsi dans votre rpertoire personnel.

Dans quel rpertoire suis-je actuellement ? (pwd)


Lorsque lon se dplace dans les rpertoires, par dfaut bash naffiche que le nom court
du rpertoire o lon se trouve. Le nom court ne comprend pas le chemin complet. Or il
peut arriver quun mme nom court corresponde plusieurs rpertoires bien distincts,
donc que seuls les chemins qui y mnent permettent de les distinguer. Cest par exemple le
cas du nom court bin, que lon trouve en /bin et en /usr/local/bin. Il existe beaucoup
dautres exemples. La solution pour connatre le chemin du rpertoire o lon se trouve est
dutiliser la commande pwd :
[delcros@mistra bin]$ pwd
[delcros@mistra bin]$

Lister les fichiers dun rpertoire (ls)


La commande ls et ses trs nombreuses options vous permettront dobtenir beaucoup
dinformations sur les fichiers prsents dans un rpertoire : dplaons nous par exemple
dans le rpertoire /bin et listons le contenu de ce rpertoire :
[delcros@mistra bin]$ cd /bin
[delcros@mistra /bin]$ ls
Ceci est un listing brut du rpertoire /bin qui contient les utilitaires
de base de linux. On reconnat par exemple la commande ls
De la mme manire que sous MS-DOS (avec la commande dir), nous pouvons demander
Linux de lister seulement les fichiers dont les noms contiennent des caractres donns.
Demandons par exemple uniquement les noms des fichiers commenant par la lettre l :
[delcros@mistra /bin]$ ls l*
[delcros@mistra /bin]$
Voici quelques options intressantes de la commande ls (les options sous UNIX suivent la

commande et sont le plus souvent prcdes dun tiret) :


Loption ls -l permet de lister les attributs des fichiers (les droits de lecture, dcriture et
dexcution, le propritaire, le groupe, la taille en octets, sa date de cration ou de
modification) :
[delcros@mistra /bin]$ ls -l

Notes : Ici, tous les fichiers appartiennent ladministrateur


systme (root) et son groupe (root), comme les sections consacres chmod et chown
lexposerons). Nous traiterons du sens de la fin de chaque ligne, qui contient parfois une
flche visible ici sur la ligne
, dans la section consacre aux liens ln.
ls -a liste tous les fichiers du rpertoire, y compris les fichiers cachs. Cette option est trs
utile lorsque lon se trouve dans son rpertoire personnel car il contient les fichiers de
configuration de lutilisateur dont les noms commencent gnralement par un point et
seule loption -a permet de dtecter leur existence.
Exemple avec le rpertoire de ladministrateur systme : voici une partie des fichiers lists
avec la commande ls sans option : [root@mistra /root]# ls
Et voici une partie du rsultat avec la commande ls -a. [root@mistra /root]# ls -a

On peut maintenant connatre tout (option a : penser au mot all) le contenu du


rpertoire.
Dautres options de ls sont utiles :
ls -m :
Affiche les fichiers en les sparant par une virgule au lieu de les prsenter en colonnes.
ls -t :
Affiche les fichiers par date, cest--dire en les classant du rcent au plus ancien.
ls -lu :
Affiche les fichiers par date de dernier accs et indique cette date.
ls -F :
Affiche les fichiers par type. Ainsi un fichier suivi dun slash (/) est un rpertoire, un
fichier suivi dune toile est un fichier excutable et un fichier suivi dun @ est un lien
(nous reviendrons sur les liens dans la section consacre ln).
ls -S :
Affiche les fichiers tris par ordre de taille dcroissante.
ls -X :
Affiche les fichiers par type dextension.
ls -r :
Affiche les fichier en ordre alphabtique inverse.
Cette option la particularit dinverser leffet de tous les tris requis. Par exemple, la

commande ls -tr affichera les fichiers par date en commenant par les plus anciens pour
finir par les plus rcents.

Voir un fichier (cat et more)


La commande cat permet de lire des fichiers. Nous avons vu tout lheure que le
rpertoire /root contenait des fichiers de configuration. Ces fichiers sont simplement des
fichiers textes avec un agencement et une syntaxe particulire. Regardons le contenu du
fichier .bashrc qui permet de configurer souhait son shell :
[root@mistra /root]# cat .bashrc

[root@mistra /root]#
Une option utile de cat est -n qui permet de numroter les lignes (ne pas oublier que cat
permet de lire et non de modifier un fichier. Ainsi la numrotation de ligne apparat
lcran mais le fichier .bashrc nen est pas pour autant modifi).
[root@mistra /root]# cat -n .bashrc

[root@mistra /root]#
Si vous souhaitez connatre les autres options de cat, tapez au prompt cat help.
Vous pouvez utiliser la commande more pour visualiser un fichier. La commande more a
lavantage dafficher le fichier page par page. Pour passer dune page lautre, tapez sur
la touche ESPACE.

- diter un fichier (vi, emacs, joe)


1. vi (lditeur le plus ancien)
vi date des annes 70 . autant dire que cet diteur a du mtier et nest toujours pas
dmod. Ce nest pas celui que jutilise mais beaucoup en sont adeptes malgr son
apparence fruste. Ceci sexplique par une grande puissance Si je mattarde quelque peu
sur vi, cest que dans les moments critiques o rien ne fonctionne, o tout va mal, cest
lditeur quon ne peut viter.
Lanons Vi :
[root@mistra /root]# vi
Aprs le lancement de la commande vous allez vous trouver directement dans lditeur
Pendant ce court apprentissage de vi, nous allons crer un fichier, le modifier,
lenregistrer, et quelques autres petites manoeuvres de survie :
1. Passer du mode commande aux mode texte, taper du mode texte, enregistrer.

vi comprend deux modes : un mode commande et un mode insertion, aprs le


lancement de vi nous sommes en mode commande : appuyez sur la touche Echap puis
sur a (a, comme append, permet dajouter du texte aprs le curseur). Vous voyez en
bas de lcran apparatre la ligne INSERT . Nous pouvons commencer notre texte :

Noubliez pas de placer retour chariot au bout de chaque ligne.


Sauvons le fichier : nous sortons dabord du mode texte en appuyant nouveau sur la
touche Echap. La mention INSERT disparat, nous sommes en mode
commande. Tapez maintenant :w linux-test et sur la touche retour chariot (afin dcrire
(write) le fichier). Vous devez obtenir en bas de lcran ceci :
2. Supprimer du texte et quitter vi
Nous voyons qu la deuxime ligne, jai fait une grosse fte daurtograffe. Nous allons
supprimer le b qui est en trop dans stabble : dplacez le curseur sur un des b en trop,
passez en mode commande (INSERT ne doit pas apparatre lcran), appuyez sur
x, le b a disparu.
Quittons vi, mais auparavant, nous devons sauver les modifications effectues : Passez en
mode commande et tapez :wq (write et quit). Vous tes sorti de vi et votre fichier a t
sauvegard sous linux-test. Pour revenir vi en ouvrant le fichier linux-test au dmarrage
tapez :
[root@mistra /root]# vi linux-test
Si vous souhaitez quitter sans enregistrez les dernires modifications, il vous faudra passer
en mode commande et taper : q!.
Ceci est une prsentation trs trs courte de vi, mais qui vous permettra malgr tout de
survivre au cas o vous devriez absolument lutilisez. Voyons tout de mme un rapide
descriptif dautres commandes vi :
3. Dautres commandes vi.
A permet dajouter du texte la fin de la ligne. i permet dajouter du texte avant le
curseur. o permet dajouter une ligne en dessous du curseur. O permet dajouter une ligne
au dessus du curseur.
le retour chariot permet daller la ligne suivante.
dd permet de supprimer la ligne courante. X permet de supprimer le caractre avant le
curseur. u permet dannuler la dernire commande effectue.
2. Emacs la puissance !
Emacs date de la fin des annes 70 et ne cesse dvoluer depuis, ce qui fait de lui, sans
aucun doute possible, lditeur le plus puissant au monde. Bien plus quun diteur, emacs
est un environnement de travail : dition, programmation, mail, news, shell bref on
peut rester sous emacs sans avoir besoin de quoi que ce soit dautre.

Ses adeptes sont trs nombreux.


Et surtout ne leur dites pas quemacs est lourd vous vous tromperiez lourdement (je sais
de quoi je parle jai fait lerreur et en ce moment je suis sous emacs ;-)) Lanons
emacs :
[root@mistra root]$ emacs
Ouvrons maintenant le fichier linux-test que nous avons cr prcdemment sous vi :
Pour cela utilisez la squence de touches suivante : Ctrl-x Ctrl-f
Vous voyez apparatre en bas de lcran : Find File : ~/
tapez le nom du fichier et faites un retour chariot.
Nous retrouvons notre charmant petit texte.
Vous le comprenez, la touche Ctrl permet de passer des commandes et de passer du mode
texte au mode commande. Vous pouvez le modifier souhait. Les touches Backspace et
Suppr fonctionnent comme sous nimporte quel diteur.
Pour sauver le fichier, tapez la squence de touches suivante :
Ctrl-x Ctrl-s
Si vous tes bloqus dans la ligne de commande demacs aprs avoir effectu de
mauvaises manipulations et que vous souhaitez retrouver le mode texte, tapez la squence
suivante :
Ctrl-g
Si vous avez fait des erreurs dans le texte, la squence suivante permet de supprimer les
dernires modifications :
Ctrl-x u
Si vos touches de direction ne fonctionnent pas, voici plusieurs squences de touches qui
vous permettent de vous dplacer dans votre document :
Ctrl-p : monter dune ligne.
Ctrl-n : descendre dune ligne.
Ctrl-f : avancer dun caractre.
Ctrl-b : reculer dun caractre.
Ctrl-v : avancer dun cran (ou dune page si vous prfrez).
Alt-v : reculer dun cran.
Ctrl-d : supprimer le caractre sur lequel le curseur se trouve.
Une commande utile est :
Ctrl-s qui permet de faire une recherche dynamique (incrmentale) sur une suite de
caractres dans le texte.
Meta-% permet de lancer un Rechercher et remplacer . La touche Meta est en gnral
confondue avec la touche Alt Pour quitter emacs, utiliser la combinaison de touches
suivante :
Ctrl-x Ctrl-c
Avec cette rapide prsentation vous pourrez dj barboter un peu sous emacs. Il mest
impossible de dcrire dans ce document les milliers de fonctions disponibles . si vous
souhaitez en savoir plus, cette squence vous permettra de rentrer dans laide demacs :

Ctrl-h
Ou bien lancez le tutorial : Ctrl-h t
Si vous devenez un mordu demacs (ce qui est tout a fait normal : -) vous pourrez trouver
quelques ouvrages sur emacs dans toutes les bonnes bibliothques.
3. joe : la simplicit.
joe est lditeur que jutilise pour faire des petites modifications dans mes fichiers de
configuration par exemple, il est trs leger, il ne possde pas la puissance demacs mais
rend lui aussi service :
Pour appeler joe :
[root@mistra /root]# joe
joe est trs intuitif ( la Wordstar), pas besoin de stendre sur les fonctionnalits textes.
Trois oprations fondamentales connatre :
Ctrl-k e permet douvrir un fichier Ctrl-k d permet de sauvegarder le fichier
Ctrl-k x permet de sauvegarder le fichier et de quitter joe
Ctrl-c permet de quitter joe sans sauvegarder les modifications.
joe possde de nombreuses fonctions possibles qui sont dcrites dans le man (nous verrons
comment y accder dans la section consacre man).

Copier un fichier (ou un rpertoire) : cp.


La syntaxe de la commande cp est la suivante :
cp [option] fichier-origine fichier-destination
ou
cp [option] fichier rpertoire
par exemple pour faire une copie de notre fichier linux-test en un fichier linux-test2, il
suffit de faire :
[root@mistra /root]# cp linux-test linux-test2
Nous possdons maintenant deux exemplaires de notre fichier dans /root.
ATTENTION ! : si vous effectuez une copie dun fichier sur un fichier qui existe dej,
celuici sera effac et remplac par le nouveau fichier.
Si vous souhaitez copier le fichier linux-test dans un rpertoire (par exemple /home) en
gardant le nom du fichier, utilisez la commande suivante :
[root@mistra /root]# cp linux-test /home
Pour lui donner un autre nom :
[root@mistra /root]# cp linux-test /home/linux-test2
Nous venons de voir que lutilisation de cp est dangereuse et lon risque parfois deffacer
des fichiers importants. Les options de cp peuvent vous viter des situations fcheuses.
cp -i avertit lutilisateur de lexistence dun fichier du mme nom et lui demande sil peut
ou non remplacer son contenu. Recopions nouveau le fichier linux-test sur linux-test2
avec loption -i :
[root@mistra /root]# cp -i linux-test linux-test2
cp : overwrite `linux-test2?

cp vous demande sil peut craser linux-test2 : rpondre par y (yes) ou n.


Quelques options importantes de cp :
cp -b permet comme loption -i de sassurer que la copie ncrase pas un fichier existant :
le fichier cras est sauvegard, seul le nom du fichier dorigine est modifi et cp ajoute
un tilde (~) la fin du nom du fichier.
cp -l permet de faire un lien dur entre le fichier source et sa copie. Ceci signifie que le
fichier copi et sa copie partageront physiquement le mme espace. Cela permet des gains
de place non ngligeables. Plus exactement, sur le disque dur le fichier et sa copie seront
le mme fichier alors quavec une copie classique, le disque dur contiendra deux
exemplaires du fichier.
cp -s permet de faire un lien symbolique entre le fichier source et sa copie. Le lien
symbolique est un pointeur. Ainsi si nous copions le fichier linux-test avec loption -s,
lorsque par exemple nous voudrons diter le fichier copi, linux ditera en ralit le fichier
original (voir la section consacre ln pour un descriptif plus complet des liens).
cp -p permet lors de la copie de prserver toutes les informations concernant le fichier
comme le propritaire, le groupe, la date de cration (voir les sections consacres chmod
et chown pour plus dinformations).
cp -r permet de copier de manire rcursive lensemble dun rpertoire et de ses
sousrpertoires.
Exemple :
Je possde dans mon rpertoire /home/delcros/personnel un rpertoire intitul mygale
et qui contient 3 sous rpertoires (echecs, linux, xcaissa) :

Je souhaite copier le rpertoire mygale ainsi que ses sous-rpertoires dans mon rpertoire
/home/delcros/ : jutilise la commande (en supposant que je me suis au pralable dplac
dans le rpertoire /home/delcros/personnel/ :
[delcros@mistra personnel]$ cp -r mygale /home/delcros
cp -v permet dafficher le nom des fichiers copis. Utile si par exemple vous copiez
plusieurs fichiers ( laide des occurences * et/ou ?) et que vous souhaitez voir le bon
droulement de la multicopie. Jaurais pu par exemple utiliser cette option lors de ma
copie rcursive du rpertoire mygale.
Jaurais ainsi vu ceci en associant loption -v et -r :
[delcros@mistra personnel]$ cp -rv mygale /home/delcros
(cest une partie du rsultat).

Supprimer un fichier rm.


PREAMBULE :
Nous entrons maintenant dans une zone risque, mieux vaut donc se loguer en tant
quutilisateur de la machine et non pas en tant quadministrateur systme (root), car nous

risquerions par une mauvaise manipulation de supprimer des fichiers fondamentaux


ncessaires au bon fonctionnement de linux. Nous allons donc crer un compte utilisateur,
lui attribuer un mot de passe et nous loguer sur ce compte. Excutez les commandes
suivantes, une explication dtaille interviendra ensuite dans la partie consacre
ladministration systme :
[root@mistra /root]#adduser le_nom_de_choix (votre prnom par exemple, mais sans
accent et si possible long de moins de 8 caractres)
[root@mistra /root]#passwd le_nom_de_votre_choix (saisir deux fois le mme mot de
passe, la seconde sert confirmer)
[root@mistra /root]#cp linux-test /home/le_nom_de_votre_choix (gardons notre fichier
pour continuer nos petites expriences ;).
[root@mistra /root]#chow le_nom_de_votre_choix.le_nom_de_votre _choix
/home/le_nom_de_votre_choix(Ladministrateur donne gnreusement le fichier linuxtest au nouvel utilisateur avec la commande chown que nous verrons dans les
commandes dadministration systme, pour linstant ne vous en souciez pas.)
[root@mistra /root]#su le_nom_de_votre_choix (la commande su permet de se loguer
sur un autre compte).
Il suffira de saisir exit pour retomber dans la session de travail root.
Effectuons nouveau une copie du fichier linux-test (tapez cd pour vous retrouver dans
votre rpertoire personnel) :
[delcros@mistra delcros]$ cp linux-test linux-test2
LA COMMANDE rm
Pour supprimer le fichier linux-test2 : [delcros@mistra delcros]$ rm linux-test2
LES OPTIONS de rm
Comme pour cp, loption cp -i permet rm de demander lutilisateur sil souhaite
vraiment supprimer le ou les fichiers en question :
[delcros@mistra delcros]$ rm -i linux-test2
rm : remove `linux-test2?
(il vous suffit donc de rpondre y ou n)
rm -d permet de supprimer un rpertoire quil soit plein ou non (attention dangereux )
rm -r permet de supprimer un rpertoire et ses sous rpertoires (attention TRS
dangereux)
rm -f permet de supprimer les fichiers protgs en criture et rpertoires sans que le
prompt demande une confirmation de suppression ( utiliser avec prcaution )

Crer un rpertoire (mkdir)


Pour crer un rpertoire, il suffit de taper la commande suivante (ici je cre le rpertoire
personnel dans /home/delcros :
[delcros@mistra delcros]$ mkdir personnel
Une option de mkdir est souvent utile :
mkdir -p permet de crer une suite de rpertoire.

Supposons que je veuille crer dans mon rpertoire /home/delcros la suite de rpertoires
suivante : doc/mygale/mail. Je peux faire soit :
[delcros@mistra delcros]$ mkdir doc
[delcros@mistra delcros]$ cd doc
[delcros@mistra delcros]$ mkdir mygale
[delcros@mistra delcros]$ cd mygale
[delcros@mistra delcros]$ mkdir mail
Ou bien utiliser loption -p qui me permet de crer la suite de rpertoires parents le plus
simplement du monde :
[delcros@mistra delcros]$ mkdir -p doc/mygale/mail

Dplacer ou renommer un fichier (mv)


Pour comprendre la commande mv, voyons une suite de commandes qui effectuent des
oprations diffrentes :
[delcros@mistra delcros]$ mv linux-test perso
renomme le fichier linux-test en perso
[delcros@mistra delcros]$ mv perso perso
va craser le fichier existant avec la source.
[delcros@mistra delcros]$ mv personnel mon-rpertoire
va renommer le rpertoire personnel en mon-rpertoire
[delcros@mistra delcros]$ mv perso /home/delcros/mon-rpertoire
va dplacer le fichier perso dans le rpertoire /home/delcros/mon-rpertoire
Les options :
mv -b (b comme backup) va effectuer une sauvegarde des fichiers avant de les
dplacer :
[delcros@mistra delcros]$ mv -b mon-rpertoire/perso /mon-rpertoire/linux-test
Cette commande va renommer le fichier perso en linux-test, cependant vous trouverez
dans le rpertoire une sauvegarde de perso (perso~).
mv -i (i comme interactive) demande pour chaque fichier et chaque rpertoire sil
peut ou non dplacer fichiers et rpertoires.
mv -u (u comme update) demande mv de ne pas supprimer le fichier si sa date de
modification est la mme ou est plus rcente que son remplaant. Exemple :
Dplaons-nous vers notre rpertoire personnel puis crons un nouveau fichier avec
lditeur de texte joe :
[delcros@mistra personnel]$ joe linux-test2
saissons un petit texte :
y en a marre de ces textes stupides !
et finissons notre session joe par la squence de touches suivante : Ctrl-k x
qui permet denregister le fichier et de quitter joe.
Notre fichier linux-test2 est plus rcent que notre fichier linux-test. Vous pouvez le vrifier
en effectuant un ls -l.

Nous souhaitons (navement, bien sr !) renommer le fichier linux-test en linux-test2.


Mais nous sommes attentifs et nous ne voulons pas que le fichier linux-test2 soit cras si
celui-ci est plus rcent que linux-test :
[delcros@mistra personnel]$mv -u linux-test linux-test2
Loption -u nous a vit dcraser le fichier linux-test2. La commande mv na donc pas t
effective.

Retrouver un fichier (find)


1- La commande find
Exemple simple : comment trouver un fichier portant un nom donn ?
[delcros@mistra delcros]$ find / -name linux-test2 -print
/home/delcros/linux-test2
(Un peu long nest ce pas pour trouver la reponse dans tout cette grosse arborescence ? :-)
)
En general on recherche rarement un fichier depuis la racine.
Dcomposition de la commande de lexemple :
/ indique que nous voulons chercher partir de la racine notre fichier. -name est
loption qui indique ici que nous voulons spcifier le nom dun fichier. -print demande
find dafficher le rsultat.
Pour chercher tous les fichiers commencant par linux-tes et dfinir partir de quel
rpertoire on souhaite effectuer la recherche on utilise cette syntaxe : [delcros@mistra
delcros]$find /home/delcros -name linux-tes* -print
Le nombre doptions de find est impressionnant. En voici quelques unes :
-type permet dindiquer le type de fichier que lon recherche. Si vous cherchez seulement
un rpertoire et non pas un fichier vous pourrez utilisez cette option : [delcros@mistra
delcros]$find /usr -type d -name bin -print
Ici, on demande find de trouver les rpertoires (largument d (comme directory) de
loption -type indique que lon cherche un rpertoire) du nom de bin partir du
rpertoire /usr.
-exec ou -ok permet dexcuter une commande sur les fichiers trouvs. La diffrence entre
-exec et -ok est que la deuxime vous demandera pour chaque fichier trouv si vous
souhaitez rellement raliser lopration :
[delcros@mistra delcros]$find -name linux-tes* -print -ok rm {} \;
[delcros@mistra delcros]$
Dans loption -exec, la paire daccolades se substitue aux fichiers trouvs, et lantislash li
au point virgule forme une squence dchapemment.
On peut dire que cette prsentation de find est assez sommaire, mais jespre quelle vous
laisse deviner ses capacits.
2- La commande locate
La commande locate a la mme mission que find. Pourtant vous verrez quen utilisant la
commande locate, le fichier sera trouv beaucoup plus rapidement. Pourquoi ? Parce que

locate ne va pas chercher le fichier dans toute larborescence des rpertoires mais va
localiser la position du fichier dans une base de donnes qui contient la liste des fichiers
existants. Cette base de donnes est en gnral automatiquement gnre une fois par jour
par le systme grce une commande appele updatedb. Sur un systme Linux Redhat,
cette base de donne se trouve dans le rpertoire /usr/lib et se nomme locatedb.
La syntaxe est donc simple:
[delcros@mistra delcros]$ locate nom_du_fichier
Bien que la commande locate soit trs intressante, elle ne possde pas la puissance des
options de find. De plus, si vous crez des fichiers pendant la journe et que vous les
recherchez avec la commande locate, il nest pas sr que la base de donne ait t remise
jour. Bref, locate est un complment de find.
3-La commande which
which vous permet simplement de connatre le chemin dun excutable. Exemple:
[delcros@mistra delcros]$ which ls /bin/ls
[delcros@mistra delcros]$

Trouver du texte dans un fichier (grep)


La commande grep est un pivot des commandes UNIX. Elle cherche une expression
rationnelle dans un ou plusieurs fichiers, exemple :
[delcros@mistra delcros]$grep fouille linux-commande.html
La commande a donc affich la ligne qui contient le mot fouille dans le fichier
linuxcommande.html.
La richesse de la commande grep permet de faire des recherches sur plusieurs fichiers et
davoir un format de sortie adquat. Par exemple, le fichier linux-commande.html est dj
assez important et il serait agrable de savoir o se trouve cette ligne qui contient le mot
fouille dans le fichier :
[delcros@mistra delcros]$grep -n fouille linux-commande.html
Le mot fouille se trouve la ligne numro 902 et cest loption -n qui nous a permis de
connatre ce numro.
Une autre option trs utile est -l qui permet de nafficher que les noms des fichiers
contenant ce que lon cherche :
[delcros@mistra delcros]$grep -l fouille /home/delcros/personnel/html/*
Ici, jai demand la commande grep de chercher loccurence fouille dans les fichiers
du rpertoire /home/delcros/personnel/html/. Le rsultat est le nom des fichiers qui
contiennent loccurence. Ici, seul le fichier linux-commande.html dans le rpertoire
contient le mot fouille. Quelques-unes des autres options :
-c donne le nombre de fois o lexpression rationnelle a t rencontre dans le fichier :
[delcros@mistra delcros]$ grep -c fouille linux-commande.html

-n est utile lorsque vous cherchez une expression rationnelle qui commence par un tiret
car si vous nutilisez pas loption -n, grep la considrera comme une option !

Les liens (ln)


Les liens forment un axe central du fonctionnement de linux. Quest ce quun lien ?
Un lien est un type spcial de fichier qui permet plusieurs noms de fichiers de faire
rfrence au mme fichier sur le disque.
On doit distinguer deux sortes de liens :
1. les liens durs associent deux ou plusieurs fichiers un mme espace sur le disque, les
deux fichiers sont pourtant indpendants. On peut dire que physiquement les fichiers sont
les mmes mais que virtuellement ils ne le sont pas. Prenons un exemple :
[delcros@mistra personnel]$ln linux-test /home/delcros/linux-test-lien-dur
le fichier linux-test-lien-dur est cr dans le rpertoire /home/delcros. si vous faites un ls -l
vous constaterez que linux-test et linux-test-lien ont la mme taille. Au niveau de leur
existence sous linux, ils sont indpendants. Mais sur le disque, il nexiste quun seul
fichier, simplement linux-test-lien-dur et linux-test sont sur le mme espace (ou inode) sur
le disque dur lorsquon les appelle.
Ainsi si nous modifions le fichier linux-test-lien-dur, nous aurons automatiquement une
modification du fichier linux-test (et vice et versa), car la modification seffectuera
physiquement sur le disque dur sur linode partag par les deux fichiers.
2. Les liens symboliques :
si nous faisons maitenant un lien symbolique :
[delcros@mistra personnel]$ln -s linux-test /home/delcros/linux-test-lien-symb
Faites un ls -F dans le rpertoire /home/delcros, vous verrez que le fichier linux-testliensymb est prcd du signe @. Ce fichier pointe sur linux-test. Si vous avez fait un peu
de programmation en C, nous retrouvons le concept de pointeur. Quand on appelle le
fichier linux-test-lien-sym, il va automatiquement se diriger vers le fichier linux-test.
Quelles sont les points communs entre les liens symboliques et les liens durs ?
Le lien symbolique fait rfrence un fichier dans un rpertoire alors que le lien dur fait
rfrence un espace sur le disque dur.
- Les liens symboliques sont des fichiers de petite taille qui ont une existence propre sur le
disque dur. Ces fichiers contiennent les rfrences des fichiers sources auquels ils
correspondent.
- Dans le cas dun lien dur, la suppression de lun des deux fichiers naffectera pas lautre.
Dans le cas dun lien symbolique, la suppression du fichier source entranera un
changement de comportement du fichier lien qui ne correspondra plus un fichier valide
et sera donc dit cass (broken).
Utilit des liens
Les liens sont utiles si vous souhaitez quun fichier apparaisse dans plusieurs rpertoires,
ou sous un nom diffrent. Imaginez que ce fichier fasse quelques megaoctets une copie
laide cp entranera une perte de place non ngligeable alors quun lien permettra de

limiter lutilisation de lespace disque. Mieux :un lien garanti que toute modification
effectue sur ce fichier concernera toutes les apparentes copies disperses.
Syntaxe de ln :
ln fichier-source fichier-lien ln -s permet deffectuer un lien symbolique.
ln -b ralise une sauvegarde dun fichier existant et dont nous aurions utilis le nom avant
de lcraser.
ln -i demande lutilisateur sil souhaite craser le fichier qui a un lien sur le fichier
source au cas ou celui-ci existerait dj.
ln -d effectue des liens durs sur des rpertoires seuls les utilisateurs possdant les droits
adquats pourront le faire.

Le compactage et le dcompactage des fichiers au format .gz : la


commande gzip
Pour compacter un fichier, taper la commande suivante :
[delcros@mistra delcros]$ gzip non_du_fichier
Pour dcompacter un fichier, taper la commande suivante :
[delcros@mistra delcros]$ gzip -d non_du_fichier.gz

Le dcompactage des fichiers avec la commande uncompress


Si vous rencontrez un fichier au format .Z ( un autre type de compression plus ancien, et
moins performant), vous pouvez aussi utiliser gzip -d.

Archivage de donnes : la commande tar


La commande tar permet darchiver ou de dsarchiver des rpertoires et des fichiers de
facon optimale.
Une des commandes dont vous aurez certainement le plus besoin est :
[root@mistra /]# tar xzf nom_du_fichier.tar.gz
Cette commande dcompacte un fichier au format .tar.gz ou .tgz ; vous rencontrerez
rgulirement ce genre de fichier en voulant par exemple rcuprer des logiciels pour
linux sur lInternet. Le format .tar.gz indique que le fichier est en ralit une archive
(.tar), cest-dire que le fichier contient en ralit plusieurs fichiers, et quil est compact
(.gz). La commande prcdente peut tre ainsi comprise :
x (extract) permet dextraire certains fichiers dune archive (lorsque lon ne spcifie pas
les noms des fichiers que lon souhaite extraire de larchive, tar les extrait tous).
z dcompacte larchive
f extrait un fichier donn (ici le fichier est nom_du_fichier.tar.gz).
Une autre commande permet de connatre la liste des fichiers contenus dans un fichier
.tar.gz ou tgz :
[root@mistra /]#tar tvzf nom_du_fichier.tar.gz
t affiche la liste des fichiers contenus dans une archive tar.

v est le mode verbose, qui affiche les noms des fichiers tel quils ont t archivs
lorigine.
Cest donc loption t qui permet de voir comment les fichiers de larchive seront
dsarchivs.
La commande suivante crera une archive de tout mon rpertoire
/home/delcros/personnel :
[delcros@mistra delcros]# tar cvfz personnel.tgz personnel
c indique tar de crer une archive
z indique a tar de compacter une archive
Ainsi tout mon rpertoire personnel, avec les sous rpertoires et tous les fichiers, se
trouveront rassembls dans UN fichier archive : personnel.tgz

Connatre lespace disque utilis (df et du)


La commande df permet de connatre lemplacement de montage des systmes de fichiers
(partitions utilisables pour stocker des fichiers) accessibles sur votre systme et les
capacits restantes sur chacun deux.
La commande du permet de connatre lutilisation disque en kilo-octet par le rpertoire
spcifi et ses sous rpertoires.

Contrler les ressources utilises par les processus


1. La commande top :
La commande top vous permet dafficher des informations en continu sur lactivit du
systme. Elle permet surtout de suivre les ressources que les processus utilisent (quantit
de RAM, pourcentage de CPU, la dure de ce processus depuis son demarrage).
Vous pourrez utiliser loption -d pour spcifier des dlais de rafrachissement (en
secondes).
En cours dutilisation de top, il est possible de stopper un process de manire interactive
en tapant k. top demande ensuite lquel signal il doit envoyer : 15 (SIGTERM) est le signal
par dfaut qui met fin un process, 9 (SIGKILL) est plus brutal.
Pour quitter top, appuyer simplement sur la touche q.
2. La commande ps :
La commande ps permet de connatre les processus actifs un moment donn :
[delcros@mistra delcros]$ ps

Le PID est lidentificateur dun processus, cest un nombre. Chaque processus est

identifi dans le systme par un nombre unique.


Le TTY indique quel port de terminal est associ le processus.
STAT indique ltat dans lequel se trouve le processus. Dans lexemple, trois processus
sont endormis (S comme sleep), et un processus en cours dexcution (R comme run).
Le processus qui est en cours dexcution nest autre que la commande ps que nous
venons de lancer.
Le TIME indique depuis combien de temps le processus utilise les ressources du
microprocesseur.
Le COMMAND prcise, comme son nom lindique, la commande dont ltat est dcrit
par PID, TTY, STAT et TIME.
Ceci dit, une simple commande ps nindique pas tous les processus du systme. Le
simple fait de lancer ps nous a juste indiquer les processus associs un terminal et qui
dpendent de lutilisateur courant (ici delcros).
En fait, il est tout a fait probable que dautres processus non lis un terminal aient t
lancs par delcros. Jen suis dailleurs sur, puisque actuellement jutilise emacs pour
raliser cette modeste page de documentation et que pour visualiser le rsultat, jutilise
netscape :
[delcros@mistra delcros]$ ps -x

Les commandes qui ne sont pas associes un terminal sont reconnaissable par le point
dinterrogation qui rempli le champs TTY.
Si vous voulez connatre tous les processus de la machine de tous les utilisateurs, il suffit
dutiliser loption ax. Si en plus vous voulez connatre les utilisateurs associs chaque
processus, il vous suffit dutiliser loption aux. Vous verrez alors plusieurs colonnes
sajouter dont USER qui indique quel utilisateur appartient le processus. %CPU
indique en pourcentage les ressources du microprocesseur utilises par le processus.
%MEM montre en pourcentage les ressources en mmoire vive utilises par le
processus. RSS donne rellement la mmoire utilise en kilobytes par le processus.
START indique lheure laquelle le processus a t lanc.
Comment tre plus prcis ? : -)
8. La commande pstree :
Cette commande permet dafficher les processus sous forme darborescence et donc de
voir leurs inter-dpendances :
[delcros@mistra delcros]$ pstree
init-+-crond
|-emacsemacsserver
|-gpm
|-inetd

|-kerneld
|-kflushd
|-klodg
|-kswapd
|-loadmeter
|-lpd
|-6*[mingetty]
|-named
|-netscapenetscape
|-4*[nfsiod]
|-nxtermslrn-gorslrn
|-portmap
|-pppd |-rc.newsinnwatchsleep |-rpc.mountd
|-rpc.nfsd
|-rpc.yppasswdd
|-sendmail
|-syslogd
|-update
|-xconsole
|-xdm-+-X
| `-xdmXsessionfvwmFvwmPager |-xtermbashsubashtail
|-2*[xtermbash]
|-xtermbashpstree
\ -ypserv
On voit par exemple ici que jutilise Fvwmpager qui depend en fait lui-mme de fvwm et
lui mme dpend de Xwindow ici lanc grace xdm (vous nobtiendrez pas la mme
chose que moi si vous lancez Xwindow grce la commande startx, en effet xdm permet
de lancer automatiquement Xwindow au dmarrage de linux).
9. La commande kill :
La commande kill permet dexpdier un signal un processus en cours. Sa syntaxe est
la suivante :
kill [options] PID
Par exemple, si jai lanc une connexion lInternet en PPP, un processus pppd sera en
cours. Pour tuer le processus, je peux dabord faire un ps -ax pour connatre le numero du
PID de pppd et ensuite si par exemple le PID est 592, je peux tuer la connexion en faisant
:
[root@mistra delcros]# kill 592
Vous remarquerez que je suis logu en utilisateur root pour faire ceci, en effet le
processus pppd appartenait lutilisateur root et un autre utilisateur ne peut pas lui
expdier de signal.
Si un processus vous rsiste, cest dire que vous narrivez pas le tuer, vous devez
utiliser la commande : kill -9 PID (PID tant toujours le numro de de processus).
La commande killall permet aussi de tuer un processus mais au lieu dindiquer le PID
vous indiquerez le nom du processus.

Mais attention, plusieurs processus peuvent utiliser la mme commande. Ainsi, si vous
tapez :
[delcros@mistra delcros]# killall grep
Vous tuerez tous les processus qui contiennent la commande grep. Je vous recommande
donc dutiliser loption -i qui vous demande une confirmation avant de tenter darrter
un processus..

La connexion de plusieurs commandes : les pipes


Quest ce quun pipe (parfois appel tube ) ? Si on le dcrit ce nest rien dautre que
cette barre verticale que vous pouvez obtenir avec la combinaison de touches Altgr + 6
sur les clavier franais classiques, ou Altgr + 1 sur les claviers franco-belges. Un tube
permet de passer le rsultat dune commande autre commande. Un exemple permettra de
comprendre tout cela beaucoup plus facilement :
Je veux savoir quels sont tous les processus bash qui fonctionnent sur le systme, mais
je veux que la commande ps aux ne me fournisse les lignes que les lignes qui contiennent
le mot bash pour meviter davoir parcourir toute la longue liste quaffiche ps aux :

On peut dire que lon a connect deux commandes entre


elles. Mais vous pouvez ainsi en connecter autant que vous voulez en utilisant cette
syntaxe :
commande1 | commande2 | commande3 | commandeN Si on se rend compte de
lutilit des pipes, progressivement on les utilise et on fini par ne plus sen passer.

Les redirections
Quand on parle de redirection, on parle plus prcisemment de la redirection des
entressorties que traitent ou engendrent les programmes. Par exemple, lorsque vous tapez
des commandes au prompt de linux, vous effectuez une entre de caractre grce au
clavier et linux vous donne une sortie en vous donnant lcran le rsultat de votre
commande. Mais lentre de donnes peut se faire autrement que par le clavier, en
indiquant par exemple un fichier qui contient des donnes traiter. La sortie peut aussi
seffectuer ailleurs que sur lcran, sur limprimante par exemple.
Ainsi, lorsque nous parlons des entres sorties, nous parlons aussi des priphriques de
lordinateur. On considrera que les priphriques sont des fichiers a part entire car, sous
UNIX, des fichiers spciaux permettent laccs aux priphriques se trouvent dans le
rpertoire /dev. Dans la plupart des cas ce que lon y copie va vers le priphrique.
Mais comment faire pour rediriger une entre ou une sortie ?
Comment faire par exemple pour que la commande cat qui affiche un fichier lcran,
sorte plutot le fichier dans un autre fichier ou vers une imprimante ? Cest le signe > qui
va nous permettre de raliser ceci.
Il est temps de prendre un exemple.

Dans un premier cas, je veux que linux maffiche le fichier test lecran :
[delcros@mistra delcros]$ cat test
Vous allez voir safficher lcran le fichier test.
Dans un deuxime cas, je veux que linux place le fichier test dans un fichier test2 au lien
de lafficher lcran :
[delcros@mistra delcros]$ cat test > test2
Dans un troisime cas, je veux que linux imprime le fichier au lieu de lafficher lcran :
[delcros@mistra delcros]$ cat test > /dev/lp0
Quelques constats simposent :
1- La sortie sur un autre fichier nest rien dautre avec la commande cat quune copie du
fichier test en test2. La commande cp nous permet aussi de faire cela.
2- Dans la redirection vers limprimante nous avons indiqu le fichier spcial /dev/lp0 qui
correspond au port LPT1 o est connecte mon imprimante.
La commande cat affiche son rsultat vers la sortie standard qui est le terminal.
Par dfaut le terminal est la sortie standard, ce descripteur de fichier est dsign par
le chiffre 1
Lentre standard dans un systme UN*X est le clavier et est dsign par le chiffre
0.
Il existe un troisime descripteur de fichier qui est la sortie des erreurs produites par
lexcution dune commande.
La sortie des erreurs se fait par dfaut sur le terminal et est dsign par le chiffre 2.
Plusieurs types de redirection existent :
> fichier qui permet de rediriger le rsultat dune commande vers une sortie que nous
choisissons.
< fichier permet de spcifier une entre standard.
>> fichier permet comme le signe > de rediriger la sortie standard vers un fichier,
mais si le fichier spcifi existe dj, la sortie sera ajout ce qui existe dj dans le
fichier alors quavec un simple > le fichier spcifi serait cras.
<> fichier permet de spcifier un fichier comme tant en mme temps lentre standard
et la sortie standard.
n> fichier permet de rediriger la sortie dun des descripteurs de fichiers vers un fichier.
Par exemple, si vous souhaitez obtenir les erreurs standards dans un fichier vous naurez
qu utiliser cette syntaxe :
commande 2> erreurs
n< fichier permet de spcifier un fichier comme tant un des descripteurs de fichier.
>&n permet de dupliquer la sortie standard vers un des descripteurs de fichier. <&n
permet de dupliquer lentre standard depuis un des descripteurs de fichier.
&> fichier permet de rediriger la sortie standard et lerreur standard vers un seul et
mme fichier.
premire vue, on se demande bien quoi peut servir certaines des redirections
On les dcouvre au fur et mesure, mais une des plus utiles est 2>&1 qui permet de
rediriger les erreurs vers la sortie standard. Elle est trs apprcie des utilisateurs lorsque

par exemple ceux-ci narrivent pas lancer linterface X-Window. Il est alors courant de
recourir la commande suivante afin dobliger X placer tous ses messages dans un
fichier nomm erreursX que lon pourra consulter ensuite loisir :
[delcros@mistra delcros]$ startx 2>&1 erreursX.tmp

2. bash et ses capacits


Le but de cette section nest absolument pas dexpliquer la programmation et la
configuration bash (loin de moi cette prtention .), pour apprendre le bash, la lecture de
Le Shell Bash, configuration et programmation est fortement recommande (sinon
consultez la page de manuel sur bash man bash).
Le shell bash, comme les autres shells (korn shell, C shell), permet ce qui a t vu
prcdemment, cest--dire de lancer des commandes, de crer des pipes, de connecter par
pipes des commandes
Mais avec les commandes dcrites depuis le dbut de ce document et laide dune
syntaxe proche de celle des langages de programmation courants comme le C ou le Pascal,
on peut raliser des scripts permettant dautomatiser certaines tches. Nous nallons pas
dcrire ici en dtail ce language de programmation mais simplement montrer quelques
exemples : Un exemple, on utilise souvent cette syntaxe pour dcompresser et dsarchiver
un fichier au format fichier.tar.gz :
gzip -dc fichier.tar.gz | tar xfBp
(on peut aussi utiliser uniquement les options de la commande tar pour raliser ceci.)
Il est assez pnible davoir taper systmatiquement cette longue commande. Un script
bash peut simplifier les choses :
#!/bin/bash
gzip -dc $1 fichier.tar.gz | tar xfBp On enregistre ensuite le fichier sous le nom montar
puis on le rend excutable grace la commande suivante :
chmod +x montar
pour dcompressez un fichier il vous suffira de taper ceci :
montar fichier.tar.gz
Quelques remarques :
- Tout script bash doit commencer la premire ligne par une invocation du shell :
#!/bin/bash
- les paramtres passs sur la ligne de commandepar lutilisateur du script sont pour ce
dernier des variables nommes : $1 pour le premier, $2 pour le deuxime, $3 pour le
troisime, etc $0 tant la variable reprsentant le nom de la commande.
Voila qui simplifie dj suffisamment la vie.
Nous pourrions amliorer ce script en voyant dabord de quoi est compos le fichier.tar.gz
avant la dcompression.
#!/bin/bash
tar tvzf $1
gzip -dc $1 | tar xfBp
Il serait cependant plus utile de pouvoir accepter ou non le dsarchivage du fichier selon
les informations fournies par la commande tar tvzf :
#!/bin/bash
tar tvzf $1

echo -n Voulez vous dsarchiver larchive ? (o/n) :


read archi
if [ $archi = o ]
then
gzip -dc $1 | tar xfBp
else
exit
fi
La commande echo permet dafficher un message sur la console, et loption n permet de
ne pas faire de retour chariot en fin de ligne.
La commande read attend une rponse de lutilisateur, ici la rponse sera stocke dans la
variable archi.
Les crochets ([ ]) encadrent tous types dexpression.
Enfin, la condition if permet de tester la valeur de la rponse donne par lutilisateur.
Voici la construction typique de linstruction if : if condition
then
instruction
else
instruction
fi
Si vous souhaitez insrer plusieurs conditions if utilisez la syntaxe suivante : if
condition
then
instruction
elif condition
then
instruction else
instruction fi
Nous pourrions utiliser aussi un menu qui nous permettrait de choisir entre une
dcompression immdiate ou une visualisation du contenu de larchive :

La construction select permet de gnrer des menus avec une grande facilit. PS3 est une
variable qui permet de stocker une chane dinvite qui est utilise par select.
choix est le nom de la variable qui contiendra un des lments de la suite qui suit le mot
cl in. Dans notre cas, choix contiendra soit la chane tar tvzf ou la chane tar xvzf.
Dans la construction do done, nous placons les commandes que nous voulons executer.
Ici $choix contiendra donc soit tar tvzf soit tar xvzf et $1 contiendra largument
(ici le nom du fichier compress) que lon aura indiqu lexecution de notre script.
Si notre script sappelle ctgz, son excution se droulera ainsi :

Lutilisateur na plus qu taper 1 ou 2.

Comme pour tout langage de programmation, bash contient des instructions de rptition :
La boucle for permet de raliser une instruction un nombre de fois prcis. Sa syntaxe est
trs proche de celle de select :

exemple :

Ce petit script permet de regarder le contenu de plusieurs fichiers compresss. $@ contient


la liste des fichiers que lutilisateur aura spcifi en argument de la ligne de commande :
La boucle while ainsi que la boucle until effectue la mme chose que for la diffrence
que celle-ci rpte une instruction tant que (while) ou jusqu ce que (until) une condition
soit vrifie.
Voici un exemple avec la boucle until :

Avec cette boucle, tant que le fichier naura pas pu tre dcompress et dsarchiv, la
commande tar sera rpte indfiniment pour sortir de la boucle utilisez la
combinaison de touches Ctrl-c.
Avec ces quelques structures de contrle on voit bien la simplification des tches
quotidiennes que bash peut permettre, au prix dun effort rduit.
La personnalisation des variables denvironnement :
bash contient des variables qui permettent dadapter son environnement ses besoins : Il
existe un fichier qui met en place une grande partie des variables denvironnement : le
fichier .bash_profile (ou .profile).
Pour que les variables denvironnement soit prises en compte vous devez vous reloguer
sur votre compte(avec la commande su - nom_utilisateur (si vous avez modifi le
.bash_profile) ou alors passer les variables directement en ligne de commande (dans ce
cas, les variables ne seront pas enregistres dans le .bash_profile).
Vous trouverez par exemple la variable PATH qui dfinit les chemins existant pour les
excutables. Si par exemple, votre chemin PATH est de la forme :
PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
et que vous souhaitez ajouter dans ce chemin un rpertoire /home/delcros/binaire qui
contient votre script bash ou vos programmes personnels, il vous faudra ajouter ce chemin
la variable PATH :
PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/home/delcros/binaire
(notez la prsence de : entre chaque nom de rpertoire).

La variable PS1 contient la forme de votre invite :


PS1=[\u@\h \w] affichera votre nom dutilisateur (\u); @; le nom de la machine (\w);
un espace; le rpertoire de travail courant (\w). Voil ce que cela donne :
Voici une autre configuration dinvite qui contient quasiment toutes les options possibles :
PS1=[\t \d \u@\h \w \$]
ce qui donne :
Une autre variable utile est MAIL. Normalement, vos
mails arrivent dans le rpertoire /var/spool/mail/nom_utilisateur
Vous pouvez placer cette variable dans votre .bash_profile avec cette forme :
MAIL=/var/spool/mail/nom_utilisateur
Les alias
Les alias sont une des choses les plus pratiques qui soient. Rgulirement on utilise les
mmes commandes avec parfois de nombreuses options. Les alias se placent
habituellement dans le fichier de configuration .bashrc. Voici un exemple classique
dalias :
Avec cet alias, vous naurez plus besoin de spcifier systmatiquement
loption color qui permet de lister en couleur le contenu dun rpertoire. Il vous
suffira simplement de taper lalias l.
Ainsi, le mini script que nous avions ralis au dbut de cette section pourrait aussi se
faire grce un simple alias :

3. Organisation des rpertoires


Voici larborescence dun systme UNIX classique :
/ est le rpertoire racine, tous les autres rpertoires en dpendent. Par exemple le rpertoire
o est mont mon CD-ROM est sur /mnt/cdrom. On na donc pas comme sous MSDOS, diffrentes lettres qui correspondent diffrents lecteurs disctincts physiquement.
Les lecteurs sont harmonieusement monts en rpertoires dans larborescence UNIX.
/bin contient les binaires fondamentaux la gestion de Linux. On y retrouve par exemple
les commandes prcdemment tudies.
/dev contient une multitudes de fichiers dits spciaux. Lun deux correspond mon
modem. Je dois indiquer ce fichier dans la configuration de mes outils de communication.
De mme /dev/hda1 correspond la premire partition de mon disque dur IDE, si mon
disque dur est un SCSI, son nom sera /dev/sda1. Un dernire exemple : /dev/fd0
correspond mon lecteur de disquettes. Pour une application, allez voir la section
consacre mount.
/etc contient tous les fichiers de configuration de linux. On y retrouve par exemple le
fichier /etc/passwd, qui dfinit les mots de passe des utilisateurs.
/sbin contient les binaires du systme. On y trouve par exemple la commande shutdown
qui permet darrter lordinateur.
/home est le rpertoire qui contient les rpertoires des utilisateurs du systme. Le
rpertoire des utilisateurs est automatiquement cr avec la cration dun compte. Jai par
exemple dans mon ordinateur un compte que jutilise en permanence (comme maintenant,
pendant la rdaction de ce petit guide), tous mes fichiers personnels sont dans
/home/delcros. Jai un autre utilisateur de ma machine, lui se logue en tant que gorka .
Il stocke ses fichiers dans le rpertoire /home/gorka).
/lost+found est le rpertoire des fichiers perdus. Ces fameux fichiers qui, du fait derreur
disque, se retrouvent sans chemin daccs. Le binaire fsck, qui est lanc rgulirement au
dmarrage de linux, se charge de les dtecter et de les stocker dans le rpertoire
/lost+found
/tmp est un rpertoire accessible par tous les utilisateurs du systme, il permet de ne pas
encombrer son rpertoire personnel par des fichiers que lon souhaite de toute manire
rapidemment dtruire ou modifier.
/var/spool est le rpertoire des fichiers qui servent de file dattente. Par exemple, les files
dattente de limprimante se trouvent sous ce rpertoire. Les donnes imprimer, envoyer,
sont stockes dans ces files dattentes jusqu ce quelles soient traites.
/usr contient grosso modo tout ce qui concerne les binaires utiles tous les utilisateurs et
quelques commandes dadministration. On y trouve cependant dautres choses : /usr/bin
contient donc les binaires disponibles pour les utilisateurs et les scripts.
/usr/X11R6 contient tout ce qui concerne Xfree86 (les bibliothques, les binaires, la
documentation).
/usr/include contient tous les headers ncessaires la programmation dans les diffrents
languages.

/usr/lib contient toutes les bibliothques ncessaires au fontionnement des logiciels.


(comme par exemple la bibliothque C ou C++ ou tcl/tk).
/usr/local on y met ce quon veut, mais surtout les fichiers dusage local. Jy place les
logiciels qui ne sont pas habituellement livrs avec linux et que jai trouv dans dautres
CD-ROM ou sur lInternet.

4. Quelques commandes dadministration systme


-Placer les proprits (chmod)
Introduction : linux permet de spcifier les droits quont les utilisateurs sur un fichier. Pour
voir ces droits, il suffit dutiliser la commande ls -l :
[delcros@mistra delcros]$ ls -l perso
-rw-rr 1 delcros delcros 9 Jul 19 12 : 39 perso
cest la partie qui contient : -rw-rr- qui nous intresse pour linstant.
Le premier tiret signifie que perso est un fichier tout ce quil y a de plus classique. Si la
place du premier tiret on observait un d cela signifierait quen ralit le fichier est un
rpertoire. Si la place du premier tiret on observe un l, cela signifie que le fichier est
un lien.
Ensuite nous devons dcomposer en trois parties les 9 dernires caractres : rw | r- | r1. La premire partie fixe les droits de proprits pour le propritaire du fichier.
2. La deuxime partie fixe les droits accords aux utilisateurs faisant partie du groupe
auquel appartient le fichier.
3. La dernire partie fixe les droits des autres utilisateurs.
Dans chaque partie, le premier caractre correspond au droit de lecture ( r), la deuxime
caractre correspond au droit dcriture (w), le troisime caractre correspond au droit
dexcution (x). Si la place dun des caractres nous ne voyons quun tiret -, cest
que le droit nest pas autoris.
On voit ainsi que tous les utilisateurs ont le droit de lire (r comme read) le fichier et
que seul son propritaire a le droit de le modifier (w comme write).
Par contre personne ne peut excuter ce fichier (normal ce nest ni un script, ni un
binaire). Si par exemple tout le monde pouvait excuter le fichier on aurait le dernier tiret
de chaque partie remplac par un x comme eXcutable.
rwx | r-x | r-x
Cette spcificit dUNIX sur la mthode de fixation des permissions sur un fichier assure
une trs grande scurit et une trs grande souplesse.
Ds maintenant, nous donnerons la lettre u pour le propritaire du fichier, la lettre g
pour le groupe dutilisateur qui possde le fichier, la lettre o pour les autres utilisateurs.
La lettre a nous permettra de faire rfrence tous les utilisateurs. Cette notation est
ncessaire car cest celle que lon doit utiliser avec la commande chmod.
Cest donc la commande chmod qui permet de modifier ces permissions quont les
utilisateurs sur le fichier. videmment, seul le propritaire du fichier a le pouvoir de
modifier ces permissions ( part bien sur le superutilisateur root qui peut faire
absolulement tout ce que bon lui semble
Par exemple, nous dcidons que nimporte qui pourra modifier notre fichier linux-test :
[delcros@mistra delcros]$ chmod a+w linux-test
a indique que tous les utilisateurs seront touchs par la modification des permissions

+ signifie que cest une permission supplmentaire que lon donne. Pour en supprimer
une il suffit de remplacer le signe + par -.
w signifie que cest la permission dcriture que nous donnons.
Pour vrifier que tout a bien fonctionn, faites un ls -l linux-test, nous obtenons :
-rw-rw-rw- 1 delcros delcros 9 Jul 19 19 : 03 linux-test
Si maintenant nous voulons supprimer ce droit dcriture mais aussi le droit de lecture
pour le groupe propritaire et les autres utilisateurs nous utilisons la syntaxe suivante :
[delcros@mistra delcros]$ chmod go-wr linux-test
go signifie que la commande affectera le groupe propritaire et les autres utilisateurs.
wr signifie que la modification portera sur les droits dcriture ou de lecture. (on aurait
pu aussi crire la commande en mettant rw, lordre na pas dimportance).
Dernier exemple : je souhaite que le propritaire du fichier puisse excuter ce fichier :
[delcros@mistra delcros]$ chmod u+x linux-test
Ainsi le propritaire du fichier a le droit dexcuter linux-test (ce qui de toute manire
dans ce cas ci ne servira pas grand chose puisque linux-test nest ni un binaire ni un
script )
Si nous souhaitons dfinir dun seul mouvement toutes les permissions dun fichier, on
peut utiliser la syntaxe suivante (nous voulons que linux-test soit en lecture, en criture et
en excution pour le propritaire, que le groupe nait le droit que de le lire et dcrire et
que les autres utilisateurs ne puissent que le lire) :
[delcros@mistra delcros]$ chmod u=rwx,g=rw,o=r linux-test
En une seule ligne grce au signe = nous avons dfinit lensemble des droits. Il existe
une autre facon dindiquer les permissions, nous aurions pu utiliser la syntaxe suivante
pour lexemple prcdent :
chmod 764 linux-test
La syntaxe est vraiment trs diffrente
En ralit, nous venons dutiliser la notation binaire pour dfinir les droits : Petit rappel :
groupe correspond 6, et r (pour les autres utilisateurs) correspond 4. Nous avons bien
la squence 764. les chiffres doivent tre dans lordre, le premier pour le propritaire, le
deuxime pour le groupe, le troisime pour les autres utilisateurs.

Le 0 indique donc un tiret et le 1 indique que la lettre correspondant la position doit tre
inscrite. Donc pour notre exemple, rwx (pour le propritaire) correspond 7, rw (pour le

- Dfinir le propritaire et le groupe dun fichier (chown)


Prambule : cette commande ncessite dtre administrateur systme, il vous faut donc
vous loguer en root (utiliser la commande su pour vous loguer en root) :
[delcros@mistra /home]$ su root
Password :

lorsque nous avons effectu un ls -l sur le fichier linux-test, nous avons obtenu :
-rw-r-r 1 delcros delcros 9 Jul 19 19 : 03 linux-test
Le premier nom delcros est le propritaire du fichier, cest lui qui peut placer les droits
de proprit sur le fichier. Le deuxime nom delcros indique le groupe utilisateur du
fichier. Cest ladministrateur systme qui peut dcider des utilisateurs qui feront partie du
groupe (dans certains cas, ladministrateur systme peut permettre un utilisateur de
dterminer lui mme qui fera partie du groupe). Le fichier /etc/group montre les diffrents
groupes qui existent dans le systme).
Je peux dcider par exemple que le fichier linux-test nappartienne plus lutilisateur
delcros mais lutilisateur thomas :
[root@mistra delcros]# chown thomas.delcros linux-test
Vrifions :
[root@mistra delcros]# ls -l linux-test
-rwxrw-r 1 thomas delcros 9 Jul 19 19 : 03 linux-test
Le nouveau propritaire du fichier est bien thomas.
Une option de chown est connatre :
chown -R (rcursif) permet de modifier les permissions de dun rpertoire et de ses
sousrpertoires :
Il mest arriv par exemple de copier de la documentation qui se trouvait dans un
rpertoire doc dont le propritaire tait ladministrateur systme dans le rpertoire dun
utilisateur pour quil en ait la plus totale disposition.
Jai donc dune part copi tout le rpertoire et ses sous rpertoires dans le rpertoire de
lutilisateur grce la commande cp et son option -r (voir la section consacre cp)
et jai donc d aussi modifier les droits de proprits de tout ce rpertoire et de ses sous
rpertoires grce la commande chown et son option -R :
[root@mistra delcros]# chown -R delcros.delcros doc
ceci a permis de fixer en une seule fois le propritaire de plusieurs sous rpertoires et de
fichiers.

- Ajouter un utilisateur et changer le mot de passe


Utilisez la commande adduser pour ajouter un utilisateur :
Je veux par exemple crer un compte utilisateur ernest :
[root@mistra /]# adduser ernest
Le compte est cr, cest--dire quun rpertoire ernest a t cr dans le rpertoire
/home et lutilisateur ernest a t ajout dans le fichier de configuration /etc/passwd.
Il ne vous reste plus qu dterminer un mot de passe pour lutilisateur ernest laide de la
commande passwd
[root@mistra /]# passwd ernest
passwd vous demande de rentrer deux fois le mme password.
Vous pouvez maintenant quitter la session en cours (commande exit) puis vous loguer
en tant quernest, ou bien utiliser la commande su :

[root@mistra /]# su ernest


Ou encore en ouvrant une nouvelle console (linux permet douvrir plusieurs consoles) en
utilisant la combinaison de touches suivante :
Alt-F2
pour revenir sur la premire console vous devez simplement faire :
Alt-F1
(Sous lenvironnement graphique X, on utilisera Ctrl-Alt-F1, Ctrl-Alt-F2, etc )

- Dcrire un utilisateur : chfn


Cette commande vous permet dindiquer dans le fichier /etc/passwd diffrentes
informations sur un utilisateur dont son nom, son bureau, ses numeros de tlphone,
exemple :

- Supprimer un utilisateur (userdel)


La suppression dun compte utilisateur se dcompose en deux phases : 1. La suppression
de lutilisateur dans les fichiers de configuration (/etc/passwd, /etc/group )
2. La suppression du rpertoire et des fichiers de lutilisateur.
la commande userdel permet de faire soit la premire tape soit de raliser les deux dun
coup.
Pour supprimer lutilisateur ernest des fichiers de configuration du systme, utilisez la
commande suivante :
[root@mistra /]# userdel ernest
Pour supprimer dun coup lutilisateur et son rpertoire (ici /home/ernest), utilisez la
commande suivante :
[root@mistra /]# userdel -r ernest

- Affichage des dernires lignes ou des premires lignes dun fichier


La commande tail est tout simplement invitable.
Elle permet dafficher les dernires lignes dun fichier. Jusque l on pourrait se dire
quaprs tout il suffit dditer le fichier et de se dplacer la fin. Dune part cest une
mthode fastidieuse mais dautre part, loption -f va dfinitivement vous convaincre de
lutiliser : Loption -f demande tail de ne pas sarrter lorsquelle a affich les dernires
lignes du fichier et de continuer afficher la suite du fichier au fur et mesure que celui-ci
grossit jusqu ce que lutilisateur interrompe la commande avec la combinaison de
touches dinterruption Ctrl-c.
Les deux grands cas classique de lutilisation de tail avec loption -f est le suivi des
fichiers de log /var/log/secure et /var/log/messages. Le premier fichier permet de
surveiller les connexions que peuvent effectuer dautres utilisateurs sur votre machine et le

deuxime fichier permet de connatre les diffrents vnements qui se produisent sur le
systme (impression, connexion lInternet, tche de maintenance systme) :

Ici, on voit le droulement dune connexion lInternet.


la commande head ralise la mme chose que tail mais elle affiche les premires lignes du
fichier au lieu dafficher les dernires. tail et head ont une option commune qui permet
dafficher le nombre de ligne que lon souhaite :
tail -5 nom_du_fichier affichera les 5 dernires lignes du fichier
head -15 nom_du_fichier affichera les 15 premires lignes du fichier.
Par dfaut, tail et head affichent 10 lignes.

- Utilisez votre cdrom, votre lecteur de disquette etc .. (mount )


La commande mount est utilise par linux ds son dmarrage. Elle permet de monter une
systme de fichier, cest--dire de le rendre accessible. Ce montage est parfois effectu
automatiquement grce au fichier de configuration /etc/fstab. Ce fichier contient tout ce
que linux doit monter lors de son dmarrage.
Une question souvent pose dans les forums est comment puis-je lire un CD-ROM ou
une disquette. Il faut dune part crer un point de montage, puis monter le medium et
enfin savoir le dmonter si on veut pouvoir en mettre un autre.
Crer un point de montage
Crer un point de montage signifie tout simplement crer un rpertoire o lon pourra
chaque fois quon le souhaite regarder le contenu dun CD-ROM. Le plus souvent ce
rpertoire est cr dans le rpertoire /mnt. Pour ma part je lai mont dans la racine et je
lai appel tout simplement cdrom :
[root@mistra /]# mkdir /mnt/cdrom
Monter le cdrom :
La premire chose connatre est le nom du fichier spcial qui correspond votre cdrom.
Les fichiers spciaux sont ces fameux fichiers device (dipositif en francais ) que
lon trouve dans le rpertoire /dev. Cest en quelque sorte des drivers. Les lecteurs IDE
commencent par les lettres hd alors que les lecteurs scsi commence par les lettres sd.
Si vous avez deux lecteurs IDE (un disque dur et un cdrom par exemple), le disque dur
sappelera normalement hda et le cdrom hdb. Si par exemple le disque dur contient 4
partitions, la premire sappelera hda1, la deuxime hda2 , etc Donc logiquement si
vous tes dans la situation classique o vous possdez un disque dur et un cdrom, la
commande suivante vous permettra de monter le cdrom sur le point de montage
/mnt/cdrom :
[root@mistra /]# mount -t iso9660 /dev/hdb /mnt/cdrom
iso9660 : est le type de formatage du support : pour les cdrom cest le format iso9660,
pour une disquette MS-DOS, cest le format ms-dos, hpfs pour une partition OS/2 et
pour linux cest le format ext2, etc

/dev/hdb est le device du cdrom /mnt/cdrom est le point de montage.


Vous navez plus qu vous dplacer dans le rpertoire /mnt/cdrom et lister le contenu de
ce rpertoire.
Dmonter un cdrom : umount
Pour changer de CD-ROM, il ne suffit pas dappuyer sur le bouton eject du lecteur, de
changer le CD-ROM et de relister le contenu du point de montage. Il faut dune part
dmonter le CD-ROM en place pour ensuite le remplacer par un autre qui devra lui mme
tre mont de la manire qui a t explique au point 2. La commande pour dmonter le
cdrom est :
[root@mistra /]# umount /mnt/cdrom
Ne restez pas dans le rpertoire /mnt/cdrom pour le faire, soyez par exemple la racine.

- Mettre jour le cache et les liens des bibliothques (ou comment vitez
les cant load lib au dmarrage dun logiciel)
Linux fonctionne maintenant avec un systme de bibliothques dynamiques. Les logiciels
utilisant la mme bibliothque pourront accder tous les deux la mme copie place en
mmoire, ce qui permet un gain de mmoire important.
Il vous est peut-tre dj arriv davoir un problme au lancement dun logiciel avec un
message derreur qui peut revtir cette forme :
cant load libXpm.so.4.7
Il vous faudra donc rcuprer et installer la bibliothque manquante sur votre systme.
Mais une fois installe, la bibliothque devra tre signale au systme. La commande
ldconfig permettra de mettre jour les liens symboliques des bibliothques et des caches.
Vous pourrez enfin lancez votre application normalement.
[root@mistra /etc]# ldconfig -v

- Arrter le systme : la commande shutdown


Je ne vous montrerai que les deux options que jutilise sous linux :
[root@mistra /root]# shutdown -r now
Cette commande vous permet de rebooter lordinateur.
[root@mistra /root]# shutdown -h now
Cette commande vous permet darrter compltement le systme. Vous pouvez teindre
lordinateur lorsque vous verrez affich :
System halted
The system is halted

- Voil, cest fini mais comment puis-je en savoir plus sur les commandes
?
La commande man est l pour vous aider. Toutes les commandes possdent une page
de manuel qui vous est livre avec linux :

[delcros@mistra delcros]$ man cp


Et vous obtiendrez toute la documentation de cp.
Pour quitter la page de manuel, vous pouvez appuyer nimporte quel moment sur la
touche q.