LINUX
Quelques commandes

© 1996-2001 Michel Luc
date de création : 02 Janvier 1997


Permission vous est accordée de faire des copies et de distribuer ces copies sous les termes de la licence GNU FDL.


 dernière mise à jour : 29 01 2005

Shell et fichier de configuration Menu: le Shell et les commandes Index Linux Glossaire des commandes

Les commandes Linux

1 Quelques vérifications.

2. Enfin quelques commandes.

3. Pour Terminer.


4. Mini glossaire des commandes




Avant propos :
Ce qui va suivre est certainement la partie la plus importante, si vous découvrez les systèmes Unix/Linux.
Alors prenez du papier et un crayon, ou mieux, imprimez cette page.
C'est une introduction à l'administration de votre système, rédigée à la façon d'un "didactitiel".
Toutes les commandes décrites sont utilisables sur une Slackware et une RedHat mais aussi sur la plupart des distributions Linux.


1-Vérifions quelques points !

vôtre distribution est installée et configurée ou presque.
 Nous allons voir quelques commandes pour, se déplacer, copier,déplacer,éditer du texte, effectuer des recherches. Il est fort possible que ces commandes présentent un certain intèret pour la configuration de XFree86. Mais avant cela...

1.1-Les comptes utilisateurs

Sous Linux nous ouvrons des comptes utilisateurs pour donner un accès personnalisé pour chaque utilisateur,cela permet de limiter les droits d'accès aux fichiers (sécurité). Lors de l'installation vous avez créé au moins un compte utilisateur, si non voir ici .
Maintenant nous allons limiter l'accès au compte root à une seule personne, l'administrateur (vous).
Pour éviter que chaque utilisateur ne vienne modifier la configuration du système, ce qui deviendrait vite ingérable. Si vous êtes le seul utilisateur cela vous permettera d'éviter la catastrophe.
En travaillant toujours en root, vous prenez des risques.

 Après le démarrage du système, passez sous le compte root :
slackware login: root
#
nb: Il ya de fortes chances que cela a été fait à l'installation de la distribution, mais bon...
Ensuite ajoutez un mot de passe pour ce compte:
# passwd
changing password for root
Enter new password: ( vous tapez vôtre mot de passe.)
Re-type password: (vous recommencez.)
Password changed
#
Maintenant quitter le compte root :
# exit
ou
# logout
slackware login:

Vous devez rentrer sous le compte de l'utilisateur (que vous avez déjà creé) en tapant son nom (login), suivi du mot de passe que vous lui avez attribué.
De la même façon que précedemment vous pouvez changer le mot de passe en tapant : # passwd


1.2-Les consoles virtuelles

Vous disposez de plusieurs consoles virtuelles sur vôtre système, qui sont accesibles par la combinaison des touches [Alt]+[F2], je vais écrire [Alt-F2] .
Sur vôtre système tout neuf, il est fort possible que vous n'ayez que 4 à 6 consoles installées, de [Alt-F1] à [Alt-F6], mais vous pouvez aller jusqu'à 12 consoles, ce n'est qu'une question de configuration.
Ces consoles sont gérées par mingetty ou getty et définies dans le fichier /etc/inittab (que vous avez vu au chapitre précédent), tty1, tty2, tty3, tty4... etc.

Et bien testons ces consoles [Alt-F2] jusqu'à [Alt-F4] :
A chaque fois vous devez rentrer sous un compte utilisateur, en entrant son 'login' et mot de passe,
et tapez une commande différente (a chaque fois) :
Première console par défaut tty1 ( [Alt-F1] ) :
# ls
console suivante, [Alt-F2]
# ls /
console suivante, [Alt-F3]
# ls /etc
console suivante, [Alt-F4]
# ls /bin
... etc.

Maintenant redescendez vos consoles une par une en partant de [Alt-F3] à [Alt-F1] .

Vous avez vu, cela peut-être utile, lorsque vous utiliserez d'autres commandes que ls .


1.3-Ce n'est pas le nom d'une compagnie pétrolière !

Vous avez eu un petit aperçu du shell, c'est avec lui que vous venez de communiquer.:
c'est comparable au 'command.com' de MSDOS et le 'prompt' que vous voyez ' # ' nous l'appellerons l'invite: Je vous parlerais du shell un peu plus en détail plus tard.

Le Shell

Vous l'avez remarqué, linux utilise « / » et non pas « \ », mais il fait aussi la différence entre minuscule et MAJUSCULE, par exemple nom est different de Nom.
Il n'y a pas de règle pour les noms de fichier, ils peuvent contenir 255 caractères (au moins) de touts types, sauf " / " qui correspond au répertoire.
Convention d'écriture: Lorsque vous voyez /droopy/niche/ niche est un répertoire, et pour /droopy/niche niche est un fichier, cela m'évite d'écrire   le répertoire /droopy/niche.

Jusque là rien de compliqué ?

Linux appelle home ($HOME étant la variable) le répertoire personnel de chaque utilisateur, par exemple le répertoire home de droopy est /home/droopy/ et sécrit $HOME ou ~/, essayez la commande :
# echo $HOME
Le répertoire /root/ n'est pas le répertoire racine, mais le répertoire personnel ($HOME) de l'administrateur système 'root'.
Le répertoire racine de la partition linux étant '/'.
Et suivant le shell utilisé vous verez vôtre répertoire personnel (home) noté différemment :
Pour le shell /bin/bash vous avez vôtre home ecrit de cette façon " ~/ " qui remplace /home/droopy/, à partir de n'importe quel réperoire, si vous voulez lister le contenu de votre répertoire $HOME, tapez la commande :
# ls ~/
  ls équivaut à la commande dir.
Ce qui pour le compte droopy remplace   ls /home/droopy et pour le compte root  ls /root .
La commande cd vous place directement dans votre répertoire personnel, $HOME.
Pour aller dans votre répertoire $HOME : # cd
Pour retourner à la racine du disque (partition Linux) : # cd /
Pour savoir dans quel répertoire vous vous trouvez : # pwd


2-Enfin quelques commandes.

La plupart des commandes acceptent l'option --help pour afficher une aide comme # ls --help, mais vous pouvez aussi consulter les pages de manuel (si vous les avez installées manpages.tgz du package Ap3 ou Ap4 ainsi que groff.tgz de Ap2..) en tapant man suivi du nom de la commande : # man ls


2.1-Vous savez quoi ? Non !... Demandez-le à droopy.

Important avant de commencer nos essais nous allons créer un répertoire de test :
Allez sous le compte root, "NON SURTOUT PAS" je plaisante.
Le compte root est réservé à l'administration du système et pour éviter de détruire votre système, "TRAVAILLEZ TOUJOURS SOUS un compte UTILISATEUR".
Vous allez donc vous loger sous votre compte utilisateur et créer le répertoire droopy (ou un autre nom ?) :
slackware login: moi
password: mon_mot_de_passe
# cd / (et pas cd/ )

Mais comme vous n'avez pas l'autorisation d'écrire sur la racine ( / ), vous allez prendre les droits de 'root' pour effectuer la création d'un répertoire, cela se dit 'suid' :
# su
et entrez le mot de passe de root puis tapez
# mkdir droopy
maintenant accordez les droits sur ce répertoire à l'utilisateur, ici je suppose qu'il se nomme 'moi' :
# chown moi.moi droopy
Nous verrons plus en détail les droits et permissions dans le chapitre suivant.
Redevenez utilisateur et quittez le shell root :
# exit
Puis placez vous sous /droopy/
# cd /droopy
#

Bon, vous savez maintenant, comment faire pour se loger sous un compte utilisateur ou root:
Maintenant j'écrirais seulement : Allez sous le compte.... sans décrire l'opération. OK !
Bien sur vôtre invite va ressembler à quelque chose comme 'slackware:/droopy# ' que je vais écrire ' # '. OK !

Nous somme donc dans notre répertoire d'essais ( /droopy/ ).
ET nous avons déjà vu ls pour lister le contenu d'un répertoire :Les arguments -l (affichage détaillé), -u (tri par date), -X (tri par extension), -r (tri dans l'ordre inverse), peuvent être combinés dans la commande, tel que :
# ls -lu /etc/rc.d
# ls -lur /etc/rc.d

Oh la la !...vous ne comprenez peut-être pas tout ce que vous voyez ?... Cela viendra, vous aurez l'occasion de comprendre ce qui s'affiche là lors de l'explication des droits d'accès et des liens symboliques et physiques.

Je ne vais pas commenter les commandes, vous aurez le résultat affiché sur votre écran, c'est le meilleur commentaire.

Surtout maintenant vous ne quittez plus /droopy/ .

Pour copier un fichier, essayez :
# cp /etc/termcap nouveau
# cp /etc/shells .
# cp shells shell.nouveau
# cp nouveau shell.ancien
# ls
La commande cp peut donc aussi renommer la copie d'un fichier !

Si vous n'avez rien oublié, /droopy/ doit contenir les fichiers, nouveau  shell.nouveau  shell.ancien  shells
Si non recommencez, les espaces et les points... c'est important. !
Le point indique le répertoire courant.
  Essayez : # find . -name "shell*" (nous y reviendrons)

Il est possible d'utiliser des caractères génériques ' * ' et ' ? ' , essayez avec :
# ls
# rm shell.*
# ls
Ok ! il ne reste plus que nouveau et shells, donc la commande rm supprime les fichiers

Pour supprimer des répertoires vides, utilisez la commande rmdir :
# mkdir niche
# ls
# rmdir niche
# ls

Pour déplacer ou renommer un fichier essayez la commande mv :
# ls n*
# mv nouveau ancien
# ls
# mv ancien /nouveau
Cela ne fonctionne pas, vous obtenez un message d'erreur: C'est normal vous n'avez pas les droits d'écriture sur la racine !
Essayez plutôt ceci :
# mv ancien ~/nouveau
# ls
# ls ~/
Attention on le supprime :
# rm ~/nouveau
# ls ~/
Alors ça marche ?   c'est valable aussi pour les répertoires.
Si les répertoires ne sont pas vides, utilisez l'option -r :
# rm -r niche
# mv -r niche cabanne
# cp -r niche cabanne

Si votre fichier ~/.bashrc contient "alias rm=`rm -i`", vous obtiendrez un message vous demandant confirmation.
Pour ne pas obtenir ce massage il suffit d'utiliser l'option -f (force), attention n'utilisez cette option que si vous êtes certain de ce que vous faites.
Peut s'utiliser avec: rm -f , mv -f , cp -f , rm -rf ... etc.

Bien ! Et les fichiers cachés ?...
Les fichiers cachés ont un point devant leur nom, pour les lister il suffit de passer l'option -a dans la commande ls, essayez :
# cp shells .shell
# ls -l
# ls -a
# ls -la

Tout baigne, c'est cool... !   Même principe pour les répertoires cachés.

Encore un mot sur la commande ls, si vous n'avez pas l'affichage en couleur ou si l'affichage ne vous indique pas les répertoires (sans utiliser -F ), regardez la version de ls : # ls --version (si GNU fileutils est inferieur a 3.12.) vous avez probablement aussi un noyau antérieur au 1.2.13. ?
Vérifiez la version du noyau avec # uname -r ou # uname -a
Si c'est vôtre cas : Vous avez installé une ancienne distribution, certainement avec des binaires au format a.out : voir Additif.
Si vous utilisez une RedHat et un noyau 2.0.x, pour avoir ls en couleur, vous devez ajouter dans votre fichier ~/.bashrc les lignes suivantes:

# LS en Couleurs
eval `/usr/bin/dircolors $HOME/.dir_colors -b`
#
export LS_OPTIONS='-F -T 0 --color=tty'
#

alias ls='ls --color=tty -F -b -T 0'
Après avoir copié le fichier DIR_COLORS dans votre répertoire $HOME :
# cp /etc/DIR_COLORS  ~/.dir_colors

Bon, n'utilisez pas non plus des arguments groupés avec ls sans les avoir tester un par un.
Par exemple -1 qui affiche sur une seule colonne utilisé avec -l n'a pas de sens, essayez :
# ls -la1
# ls -1al

Bon ! On passe à la suite ?


2.2-Cat more et sort pour droopy !

Maintenant, nous allons travailler (un peu ) sur l'affichage et l'édition des fichiers.
On y va direct !
# cat /etc/inittab
puis
# more /etc/inittab
more peut s'utiliser aussi comme cela :
# ls -l /etc ¦ more

La commande grep peut aussi rendre service.
Par exemple si je veux savoir quels sont les packages RPMs installés qui contiennent le mot kernel :
# rpm -qa | grep kernel
ou si je veux connaitre la ligne qui monte mon CDRom dans /etc/fstab, j'utilise :
# grep cd /etc/fstab
Si vous n'avez pas de CDRom remplacez cd par hd et essayez.

La commande sort :
Pour trier par ordre alphabétique, l'affichage d' un répertoire, et/ou envoyer le tri dans une liste:
Nous allons éditer une liste, la trier et la copier dans un fichier :
Nous utiliserons donc un éditeur de texte :
Vous avez le choix, emacs, vi, vim, joe, jove.... je vous conseille pour commencer de prendre jed :
jed est contenu dans le package jed.tgz (Ap1 ou Ap4 pour Slackware) ou Jed et XJed pour RPM, si vous n'avez pas jed utilisez en un autre (mais consultez l'aide).
OK !
Premièrement écrire le fichier contenant une liste de noms (que je nomme 'fichier.de.nom').
Pour céer un fichier, vous pouvez utiliser la commande touch ou lancer l'éditeur avec le nom de fichier en paramètre :
# touch fichier.de.nom
ou
# jed fichier.de.nom
  et entrez une liste de mots (un par ligne, ce qui vous vient à l'esprit).
Quittez jed en faisant [Ctrl]+[X] et [Ctrl]+[C] cela s'écrit ^X ^C, sauvegardez en répondant Y .
'fichier.de.nom' contient une liste de mots que nous allons trier.
on jette un oeil sur le contenu de la liste :
# cat fichier.de.nom
la même chose mais triée :
# sort < fichier.de.nom
maintenant on redirige la sortie vers le fichier 'liste.de.nom' :
# sort < fichier.de.nom > liste.de.nom
on regarde le résultat
# cat liste.de.nom

C'est simple et cela peut servir : Vous venez de comprendre le principe des filtres... Plus tard !.

Pour trier dans l'ordre décroissant mettre sort -r .
Pour ajouter le contenu de /etc/rc.d/ dans le fichier liste.de.nom, faire :
# ls /etc/rc.d > > liste.de.nom
Pour remplacer le contenu de liste.de.nom par le contenu de /etc/rc.d/ (écraser) faire :
# ls /etc/rc.d > liste.de.nom
... Grrrrrr...? Il est posible que vous n'ayez de répertoire /etc/rc.d/, pour le savoir faites donc :
# ls /etc ¦ more
....Si c'est vôtre cas, vous remplacez rc.d par rc*... mais oui cela va bientôt vous servir !

Un dernier... !
Supposons (ça veindra ) que vous vouliez recompiler vôtre noyau pour...
mais avant vous voulez connaitre exactemant ce qui a été chargé au lancement ?
Les messages ce sont bien affichés à l'initialisation mais vous n'avez pas pu tout lire !
La commande dmesg permet de réafficher ces messages...?... Oui bien sur vous avez raison !
Alors ?
# dmesg > messages
Vous pouvez consultez messages avec : # more messages ou # jed messages...
Essayez aussi less à la place de more (tapez q pour quitter).

Encore un autre ?...mais c'est vraiement le dernier !
Vous voulez (pour les mêmes raisons d'affichage) consulter l'aide d'une commande en la sauvegardant dans un fichier :
# ls --help > aide-de-ls
C'est mieux si elle est imprimée :
# lpr aide-de-ls
si cela n'imprime pas, c'est que le démon n'a pas été lancé (nous verrons cela avec les fichiers de configuration).

Ah ! Oui, j'oubliais la commande find : Très rapidement.
# find . -name "shells"
 Ensuite on quitte /droopy/
# cd / (si si, on va à la racine)
# find . -name "shells" (si vous avez plusieurs disques: Patience..!)

... Cette fois c'est fini.


2.3-Conclusion

Vous avez vu, c'est facile de manipuler des fichiers :Déplacer, copier,effacer, mais sans conséquence sur le système ! Sous le compte root vous auriez pu effacer n'importe quel fichier! Terrrrrrible &ccedi;a! Ce qui introduit la notion des droits d'accès aux fichiers. Cela s'appelle les 'permissions', nous aborderons le sujet bientôt.
Après une brève introduction sur les différents fichiers de configuration, en passant par les scripts, nous installerons XFree86.

N' oubliez pas de consulter les HOWTOs et le GUIDE-DU-ROOTARD .
Regardez également les pages de manuels (c'est en anglais ?).
Vous pouvez récupérer les manuels en français :"man-fr-0.x.tgz", voir dans la page des liens. ou dans la page manuel en Français.


3-Pour Finir par où l'on a commencé

Pour terminer correctement et faire un arret propre du système :
Je ne vous conseille pas [Ctrl-Alt-Del] sur certaines anciennes distributions cette combinaison n'est pas associer à un 'shutdown', et dans le cas contraire cela relance illico l'ordinateur ? Donc mieux vaut utiliser shutdown ou halt pour un arret immediat et propre.
De préférence utilisez shutdown, lisez attentivement son aide (en ligne), je vous éclaire,
  exemple: Vous communiquez avec votre système préféré, tous les jours de 22 h à 02 h (du mat.) Alors ? Il est 2 heures du matin !
...Vous tapez donc # shutdown -r 22:00 pour que votre machine redémarre à 22 heures.
Pour arreter la machine avec : #shutdown -h now
Et exit ou logout pour fermer un compte.
ATTENTION ! ne JAMAIS arreter la machine avec l'interrupteur de mise sous tension ou la relancer avec le bouton reset !!! Linux ne pourrait pas démonter les partitions et stoper proprement les différents processus : Alors là bonjour les fichiers !

Nous terminerons avec les comptes utilisateurs :
Les informations concernant chaque utilisateur se trouvent dans le fichier /etc/passwd . Nous savons que pour créer un compte on utilise la commande adduser, useradd, mkuser ou newuser ?(c'est fonction de votre distribution et de sa version).
Pour supprimer un compte on utilisera deluser ou userdel (peut-etre?), pour avoir l'info : man users (may be ?): il est possible que vous n'ayez pas cette commande ??! Il vous faudra supprimer manuellement les comptes du fichier /etc/passwd.

Pour empêcher l'accès à un utilisateur sans détruire son compte, il est possible de :
Editer le ficher /etc/passwd et simplement ajouter l'astérisque * devant son mot de passe.
Cela donne pour l'utilisateur droopy :

  login ¦   password   ¦UID ¦GID ¦   Full name   ¦   home      ¦  shell

  droopy: *EiJdjgW9kZ1h: 102: 100: droopy LECHIEN: /home/droopy: /bin/bash
J'ai mis des espaces pour la lisibilité (Il n'y en a pas).
login = nom de l'utilisateur
password = mot de passe (codé) de l'utilisateur
UID = identificateur de l'utilisateur
GID = identificateur du groupe auquel appartient l'utilisateur
Full name = nom complet (réel) de l'utilisateur
home = répertoire personnel de l'utilisateur (£HOME)
shell = shell utilisé par l'utilisateur

Un petit plus : mise en pratique pour vous distraire ? ;-)

Changer le nom de la machine.
sur mon système j'ai darkstar login: et je veux avoir droopy login:
Le hostname est le nom de la machine, donc droopy, et full hostname est le nom de la machine plus le nom du domaine, il peut ressembler à droopy.niche.fr
Je vous énnumère ce qu'il faut faire, à vous de trouver comment le faire (aide et manuel).

Vérifier si le fichier /etc/HOSTNAME existe : regarder son contenu : lancer la commande hostname .
C'était juste pour voir ! (mais notez ce qui s'affiche)
La commande hostsname est executée depuis l'un des scripts d'initialisation du système : probalement rc.M ou un autre... rc.local... on cherche lequel, dans /etc/ ou /etc/rc.d/ .
Ce script doit avoir deux lignes (qui doivent etre actives ?) du genre :

if [ ! -r /etc/HOSTNAME] ; then
echo " darkstar.frop.org " > /etc/HOSTNAME

C'est quoi ça ?
Ça vérifie HOSTNAME ... et... sinon ça...
La commande echo ne fait qu'afficher à l'écran, mais ce signe > ?
Et oui ça redirige la sortie vers...? Donc = nom par défaut.
Ça y est, vous voyez ?

Eh bien vous allez changer cela !..

nb: Si votre réseau est configuré, c'est déjà fait: NE CHANGEZ RIEN !

Commencez par faire une copie des fichiers /etc/hosts et /etc/HOSTNAME .
... C'est comme vous voulez mais il faut en faire un double dans leur répertoire et avec un nom différent, si !
... si vous ajoutez une extension au nom, ne mettez pas 'old', c'est très utilisé mais plutot 'sav', votre prénom ou vos initiales.
Puis vous modifier le fichier /etc/HOSTNAME avec par exemple droopy.niche.fr (... vous allez vraiment mettre ça ??!).
Ensuite avec la commande hostname :
# hostname droopy (ou autre chose....?)
# hostname (ça c'est de la démonstration !)
Allez regarder dans le script qui lance hostname, à quoi ressemble sa ligne de commande.

Dernière chose (utile) : ajouter la ligne suivante,dans le fichier /etc/hosts :

127.0.0.1 droopy localhost
(cela s'appelle le loopback)

Voilà il n'y a plus qu'à rebooter pour voir le résultat !




Droopy

Vous savez quoi ? Il est temps de se quitter

La prochaine page décrira les principales commandes du shell utilisées sous Linux.

Si vous relevez, erreurs, points obscurs, ou si vous avez une proposition :
Vos commentaires sont les bienvenus admin@cern91.net

Salut et bon Linux.


Les fichiers de configuration haut de page Glossaire des commandes
Copyleft  Michel Luc cern91@tuxfamily.org Document sous licence FDL