Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduction
Lobjectif de ce livre est denseigner les commandes fondamentales de Linux (et donc
dUnix).
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.
commande ls -tr affichera les fichiers par date en commenant par les plus anciens pour
finir par les plus rcents.
[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.
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).
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).
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
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]$
-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 !
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.
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
Le PID est lidentificateur dun processus, cest un nombre. Chaque processus est
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..
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
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 :
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 :
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).
+ 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
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.
deuxime fichier permet de connatre les diffrents vnements qui se produisent sur le
systme (impression, connexion lInternet, tche de maintenance systme) :
- 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
- 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 :