Table des matières
Résumé
Les interfaces utilisateurs graphiques prennent actuellement une place de plus en plus importante sous Linux. Il n'est cependant pas toujours possible de mener à bien toutes les tâches quotidiennes par quelques clics de souris. La ligne de commande, qui entre ici en jeu, offre une très grande flexibilité et se révèle particulièrement efficace. La première partie de ce chapitre constitue une introduction à l'utilisation du shell bash. Elle sera suivie d'une explication du concept des droits des utilisateurs sous Linux et d'une liste des commandes les plus importantes. Pour terminer, nous vous présenterons l'éditeur de texte vi.
Les programmes en mode texte présentent une importance particulière pour les machines Linux d'un modèle déjà ancien qui ne disposent pas de suffisamment de ressources pour les systèmes d'affichage plutôt exigeants au niveau matériel. Utilisez, dans ce cas, l'une des six consoles virtuelles dont vous disposez en mode texte. Pour basculer entre les consoles, pressez les combinaisons de touches Alt-F1 jusqu'à Alt-F6. La septième console est réservée à X.
Dans la barre des tâches de KDE, vous pouvez voir un icône représentant un moniteur et une coquille (shell). Si vous cliquez avec la souris sur cet icône, il s'ouvre une fenêtre de console dans laquelle vous pouvez entrer des commandes. Par défaut, il s'agit d'un Bash (Bourne again shell). Ce Bash a été développé dans le cadre du projet GNU. Après avoir ouvert le Bash, vous voyez dans la première ligne l'« invite » qui est normalement constituée par le nom de l'utilisateur, le nom de l'hôte et le chemin courant mais qui peut également être configurée individuellement. Lorsque le curseur se trouve après cette invite, vous pouvez envoyer directement des commandes à votre système.
Les commandes sont composées de différents éléments. Tout d'abord le nom de la commande proprement dite et ensuite les paramètres ou options. Toute commande ne sera exécutée que lorsque vous aurez pressé la touche Retour. Vous pouvez donc auparavant éditer sans problème la ligne de commande, c'est à dire ajouter encore une option, ou corriger des fautes de frappe. L'une des commandes les plus courantes est ls qui peut être utilisée seule ou suivie d'arguments. Si vous tapez seulement ls dans la console, vous obtiendrez l'affichage du contenu du répertoire dans lequel vous vous trouvez.
Les options sont précédées d'un tiret. Si vous tapez ls
-l, vous obtiendrez l'affichage du contenu du même
répertoire mais cette fois sous une forme plus détaillée. Vous verrez non
seulement les noms des fichiers mais aussi la date à laquelle ils ont été
créés, leur taille en octets ainsi que d'autres informations sur lesquelles
nous reviendrons plus tard. L'une des options les plus importantes pour de
très nombreuses commandes est l'option --help. Si vous
tapez, par exemple, ls --help, toutes
les options relatives à la commande ls seront affichées.
Avec ls, vous pouvez aussi afficher le contenu d'autres
répertoires en ajoutant à la commande le nom du répertoire concerné comme
paramètre. Tapez, par exemple, ls -l
Desktop pour voir le contenu du sous-répertoire
Desktop.
Pour pouvoir travailler efficacement avec le shell, il est nécessaire de
connaître la structure des fichiers et des répertoires sous Linux. Les
répertoires sont des classeurs qui contiennent des fichiers, des programmes
ou des sous-répertoires. Le répertoire racine est situé tout en haut de la
hiérarchie et on y accède avec /. À partir de
là, on accède à tous les autres répertoires.
Le répertoire /home contient tous les répertoires dans
lesquels chaque utilisateur stocke ces fichiers personnels.
Figure 19.1, « Extrait d'une arborescence standard de répertoires » vous montre l'arborescence
standard des répertoires sous Linux avec les répertoires
personnels des utilisateurs exemples
yxz,
linux et
tux. L'arborescence des
répertoires de votre système Linux est structurée d'une manière
fonctionnelle (Filesystemstandard). Dans la liste suivante, vous pouvez voir
une brève description des répertoires standards sous Linux.
/répertoire racine (root directory), début de l'arborescence de répertoires
/homerépertoires (privés) des utilisateurs
/devfichiers de périphériques (device files) qui représentent des composants matériels
/etcfichiers essentiels pour la configuration du système
/etc/init.dcontient des scripts de démarrage
/usr/bincommandes utilisateurs principales
/bincommandes déjà requises pour le démarrage du système
/usr/sbincommandes réservées à l'administrateur système
/sbincommandes réservées à l'administrateur système et nécessaires pour le démarrage du système
/usr/includefichiers en-têtes pour le compilateur C
/usr/include/g++fichiers en-têtes pour le compilateur C++
/usr/share/docdivers fichiers de documentation
/usr/share/mantextes d'aide (pages de manuel)
/usr/srccodes sources des logiciels du système
/usr/src/linuxsources du noyau
/tmp, /var/tmppour fichiers temporaires
/usrcontient tous les programmes d'application
/var
fichiers de configuration (comme ceux, par exemple, liés depuis
/usr)
/var/logfichiers de traces (journalisation)
/var/admadministration du système
/libbibliothèques partagées (pour programmes liés dynamiquement)
/procsystème de fichiers pour les processus
/syssystème de fichiers du « système » où toutes les informations pour le noyau relatives au périphérique sont rassemblées
/usr/localextensions locales indépendantes de la distribution
/optlogiciels optionnels, systèmes de grande taille (par exemple KDE, GNOME, Netscape).
Deux fonctions importantes du Bash vous facilitent notablement le travail :
Si vous voulez invoquer une commande que vous avez déjà tapée, pressez la touche ↑ aussi longtemps qu'il sera nécessaire pour que cette commande soit affichée. Pour avancer, pressez la touche ↓. Pour éditer la ligne de commande, déplacez le curseur vers l'endroit voulu et faites la modification nécessaire. Utilisez Ctrl-R pour effectuer une recherche dans l'historique.
Cette fonction complète un nom de fichier dont vous n'avez tapé que les premières lettres, à condition que ce fichier puisse être identifié sans équivoque à l'aide des premières lettre que vous avez tapé. Il vous suffit pour cela de presser la touche Tab. S'il existe plusieurs fichiers dont les noms commencent par les même lettres, vous pourrez obtenir une liste de sélection en pressant deux fois la touche Tab.
Vous savez maintenant à quoi ressemble une commande, quels répertoires existent sous SUSE LINUX et de quelle manière vous pouvez vous faciliter le travail sous le Bash. Nous allons à présent vous donner un petit exemple qui vous permettra de mettre tout de suite vos connaissances en pratique :
Ouvrez une console dans KDE en cliquant sur l'icône correspondant.
Saisissez ls. Vous voyez maintenant le contenu de votre répertoire personnel.
Avec mkdir
(make directory), créez un nouveau
sous-répertoire intitulé test en tapant la commande
mkdir test.
Lancez l'éditeur Kate en pressant les touches
Alt-F2
et en tapant
Kate dans le champ de saisie. Ceci ouvre une fenêtre d'édition. Tapez
quelques caractères et enregistrez le fichier sous le nom de
Fichier_test avec un F majuscule
(Linux tient compte de la casse des lettres).
Faites afficher de nouveau le contenu de votre répertoire personnel. Au
lieu de taper encore une fois ls, pressez deux fois la
touche ↑. Vous voyez maintenant apparaître
ls à l'invite et il ne vous reste plus qu'à presser
la touche Return pour faire exécuter la commande. Les
répertoires étant toujours représentés en bleu et les fichiers en
noir, vous voyez le nom du nouveau répertoire
test affiché en bleu et celui du
fichier de test en noir.
Nous allons maintenant déplacer notre fichier de test
Fichier_test dans le sous-répertoire
test à l'aide de la commande mv
(move). Pour simplifier les choses, nous
utilisons la fonction de complétion. Tapez mv F et
pressez la touche Tab. Si le répertoire ne contient pas
d'autres fichiers dont le nom commence par la même lettre, le shell
complétera la chaîne de caractères avec
ichier_test. Dans le cas contraire, il vous faudra
saisir d'autres lettres puis presser à nouveau la touche
Tab. Ajoutez un espace après la chaîne de caractères
remplacée, tapez test et pressez encore une fois la
touche Return pour que le déplacement soit effectué.
Si vous tapez maintenant la commande ls, le fichier de
test Fichier_test ne sera plus affiché.
Pour vous assurer que le fichier a bien été déplacé, passez dans le
répertoire test à l'aide de la commande cd
test ; tapez ensuite ls. Le fichier de
test Fichier_test devrait maintenant être
affiché. La commande cd (change
directory) vous ramène toujours dans votre répertoire
personnel.
Dans le cas où vous auriez besoin d'une copie du fichier, utilisez la
commande cp (copy) et
tapez cp Fichier_test Sauvegarde_test pour faire
copier le fichier de test Fichier_test dans
Sauvegarde_test. La commande ls
affiche à présent les deux fichiers.
Pour le traitement de fichiers ou de répertoires, il est nécessaire de
spécifier le nom exact du chemin d'accès. Vous n'êtes cependant pas obligé
de spécifier le chemin complet (absolu) depuis le répertoire racine jusqu'au fichier concerné mais
pouvez aussi partir de votre répertoire courant. Vous pouvez en outre accéder directement à votre répertoire
personnel avec ~. Ainsi, vous avez plusieurs
possibilités de lister le fichier Fichier_test dans le
répertoire test : de manière relative avec
ls test ou absolue avec ls ~/test.
Si vous voulez voir le répertoire personnel d'un autre utilisateur, vous
pouvez le faire afficher avec la commande ls ~ suivie du
nom de l'utilisateur. Dans la structure de répertoires déjà mentionnée,
tux serait le nom d'un utilisateur
exemple. La commande ls ~tux afficherait par conséquent
le contenu du répertoire personnel de l'utilisateur
tux.
Vous pouvez représenter votre répertoire courant par un point et les chemins de niveau plus élevé par deux points. Vous pourrez donc, avec la commande ls .., faire afficher le contenu du répertoire parent de votre répertoire courant. Et la commande ls ../.. affichera le contenu du répertoire situé deux échelons plus haut dans la hiérarchie.
Voici un nouvel exemple qui va vous montrer comment vous déplacer dans la structure des répertoires de votre système SuSE Linux.
Passez dans votre répertoire personnel avec la commande
cd. Créez un autre sous-répertoire du nom de
test2 à l'aide de la commande mkdir
test2.
Passez dans test2 à l'aide de la commande
cd test2 et créez un répertoire du nom de
Sous-répertoire. Pour le changement de répertoire,
utilisez la fonction de complétion. Tapez simplement cd
So et pressez ensuite la touche Tab pour que
la chaîne de caractères soit complétée.
Vous êtes maintenant dans Sous-répertoire et vous
devez, sans changer de répertoire, déplacer vers le répertoire courant
le fichier Sauvegarde_test qui vient d'être créé.
Pour cela, vous devez spécifier le chemin relatif du fichier dont vous
avez besoin. N'oubliez pas le point à la fin de la commande mv
../../test/Sauvegarde_test . ; il indique que le fichier
doit être déplacé vers le répertoire courant. Avec deux points, vous
passez à l'échelon immédiatement supérieur de la hiérarchie des
répertoires, c'est à dire, dans notre exemple, à votre répertoire
personnel.
Le shell offre encore d'autres avantages représentés par les quatre « caractères jokers » appelés aussi wildcards :
Remplace exactement un caractère quel qu'il soit.
Remplace n'importe quelle chaîne de caractères.
Remplace exactement un caractère faisant partie du groupe de caractères placé entre crochets (chaîne de caractères set).
Remplace exactement un caractère quel qu'il soit à l'exception des caractères spécifiés dans set.
Si votre répertoire test contient les fichiers
Fichier_test, Fichier_test_1,
Fichier_test_2 et Donnees_test,
vous obtennez alors, à l'aide de la commande ls
Fichier_test?, l'affichage des fichiers
Fichier_test_1 et Fichier_test_2.
Avec Fichier_test*, vous obtiendrez en plus l'affichage de
Fichier_test.
La commande ls *test* affiche tous vos fichiers exemples
et avec le joker set, vous pouvez accéder aux
fichiers dont le nom se termine par un chiffre : ls
Fichier_test[1-9].
Le plus puissant est toujours le joker * qui vous permet, par exemple, de
copier les fichiers d'un répertoire dans un autre répertoire de votre choix
ou de les effacer complètement. La commande rm *Donn*,
par exemple, efface dans votre répertoire test tous les
fichiers dont le nom contient la chaîne de caractères Donn.
Il existe deux petits programmes qui permettent de visualiser des fichiers
textes directement dans le shell sans qu'il soit nécessaire de lancer
d'abord un éditeur. Si vous voulez lire, par exemple, un fichier
Readme.txt, tapez simplement la commande less
Readme.txt. Le texte sera affiché dans la fenêtre de console.
Avec la barre d'espace, vous pouvez toujours avancer d'une page mais vous
pouvez bien sûr aussi utiliser les touches Page
précédente et Page suivante pour vous déplacer
dans le texte vers l'avant ou vers l'arrière. Pour quitter le programme
less appuyez sur la touche Q.
Outre less, vous pouvez aussi utiliser le programme plus ancien more qui est toutefois un peu moins confortable car il ne permet pas de faire défiler les pages en arrière..
Le nom du programme less a été choisi selon la devise less is more. Vous pouvez l'utiliser aussi pour obtenir commodément l'affichage des sorties de commandes. Lisez à ce sujet Section 19.1.7, « Redirections ».
Normalement, la sortie standard dans le shell est votre écran ou la fenêtre de console et l'entrée standard se fait par le clavier. Si vous voulez transmettre la sortie d'une commande à un programme tel que less, vous devrez utiliser un pipeline.
Pour faire afficher les fichiers contenus dans le répertoire
test, tapez la commande ls test |
less. Le caractère |
s'obtient, sur le clavier français, en pressant simultanément les touches
Alt Gr et 6. Vous voyez maintenant, sur la
console, le contenu du répertoire test affiché par
less. Mais ceci ne présente d'intérêt que si la
sortie normale de ls n'est plus suffisamment claire.
Faites afficher, par exemple, le répertoire dev avec
ls /dev. Vous ne voyez dans la fenêtre qu'une petite
partie de son contenu tandis qu'avec ls /dev | less, vous
pouvez faire lister tous les fichiers.
Si vous voulez enregistrer la sortie de commandes dans un fichier, la
commande mentionnée dans l'exemple ci-dessus aurait cet aspect :
ls test > Contenu. Vous avez ensuite un nouveau
fichier du nom de Contenu qui contient les fichiers et
répertoires de test. À l'aide de less
Contenu, vous pouvez visualiser ce fichier.
Vous pouvez aussi faire l'inverse et utiliser un fichier pour une entrée de commande. Faites classer, par exemple, les lignes de texte de votre fichier de test (Fichier_test) par ordre alphabétique avec sort < Fichier_test. La sortie de la commande sort se fera à l'écran. Vous voyez maintenant le texte que vous avez écrit classé en fonction des premières lettres de chaque ligne. Ceci peut se révéler utile si vous désirez, par exemple, faire un classement dans une liste de noms en désordre.
Si vous voulez avoir un nouveau fichier qui contient la liste classé, il
vous faudra rediriger la sortie de la commande sort dans
un fichier. Si vous voulez faire un exercice pratique, créez dans un
éditeur une liste de noms en désordre et enregistrez-la sous le nom
liste dans le répertoire test.
Passez maintenant dans le répertoire test et invoquez
la commande sort < liste > liste_classée. Faites
ensuite afficher la nouvelle liste avec less.
La sortie d'erreur standard est aussi dirigée vers l'écran. Si vous
désirez la rediriger dans un fichier appelé Erreur,
ajoutez 2> Erreur à la commande. Si vous ajoutez
>& Sortie à une commande, la sortie standard et la
sortie d'erreur seront redirigées dans le fichier
Sortie. Si vous utilisez le symbole
>> à la place du symbole >,
la sortie sera ajoutée à la fin d'un fichier existant.
Maintenant que vous avez déjà créé quelques fichiers et répertoires,
nous allons nous pencher sur la question de l'archivage et de la compression
des données. Supposons que vous vouliez archiver tout le contenu du
répertoire test dans un fichier afin de pouvoir le
sauvegarder sur une disquette ou l'envoyer par courrier électronique. Pour
cela, vous devez utiliser la commande tar
tape archiver. Avec tar
--help, vous pouvez faire afficher toutes les options de
tar dont nous allons décrire ici les plus
importantes :
-ccreate crée une nouvelle archive.
-ttable affiche le contenu d'une archive.
-xextract extrait les fichiers d'une archive.
-vverbose affiche les noms de tous les fichiers traités.
-ffile permet de choisir un nom de fichier pour l'archive. Lors de l'archivage, cette option doit toujours être spécifiée en dernier.
Pour compresser maintenant le répertoire test avec tous
ses fichiers et sous-répertoires dans une archive du nom de
test.tar, vous avez absolument besoin des options
-c et -f. Pour pouvoir suivre la
progression du processus d'archivage, spécifiez aussi l'option
-v qui ne serait pas nécessaire dans un autre cas. Passez
d'abord, à l'aide de la commande cd dans votre répertoire
personnel où se trouve le répertoire test.Le nom de la
commande est maintenant : tar -cvf test.tar test.
Faites ensuite afficher le contenu du fichier archive avec :
tar -tf test.tar. Notez que le répertoire
test, avec tous ses fichiers et sous-répertoires,
demeure inchangé sur votre disque dur. Pour pouvoir décompresser
complètement l'archive, vous devez taper : tar -xvf
test.tar. Mais ce n'est pas encore le moment. Nous allons tout
d'abord compresser le fichier archive pour gagner de la place en mémoire.
Il est recommandé d'utiliser pour cela le programme
gzip bien connu. Tapez maintenant :
gzip test.tar. Et si vous tapez aussi
ls, vous verrez que le fichier
test.tar a disparu et a été remplacé par un fichier
test.tar.gz. Ce fichier est beaucoup plus petit et il
est donc plus facile de l'envoyer par courrier électronique ou de
l'enregistrer sur une disquette.
Vous devez maintenant décompresser l'archive dans le répertoire
test2. Copiez pour cela le fichier archive dans le
répertoire test2 avec cp test.tar.gz
test2 et changez de répertoire avec cd test2.
Pour dézipper le fichier archive compressé ayant l'extension
.tar.gz, on utilise la commande
gunzip et vous devrez donc taper gunzip
test.tar.gz. À présent, vous avez de nouveau un fichier
test.tar et il ne vous reste plus qu'à détarer
(désarchiver) l'archive avec tar -xvf test.tar. Pour le
dézippage des archives compressées, vous pouvez aussi ajouter l'option -z à
la commande et décompresser l'archive avec tar -xvzf
test.tar.gz. Après avoir tapé la commande ls,
vous pourrez voir que vous avez maintenant, dans votre répertoire personnel,
un nouveau répertoire test dont le contenu est
similaire à celui de votre ancien répertoire test.
Les mtools sont un jeu de commandes permettant de
manipuler les systèmes de fichiers MS-DOS. Ceci est intéressant pour pouvoir
travailler avec des lecteurs de disquettes. Tout comme sous MS-DOS, vous
pouvez accéder au lecteur sous la lettre a:. Les
commandes sont similaires à celles utilisées sous MS-DOS mais sont précédées
d'un m :
affiche le contenu de la disquette dans le lecteur
a.
copie le fichier Fichier_test sur la disquette.
supprime Fichier_test de a:.
formate les disquettes en format MS-DOS (avec la commande fdformat).
a: devient votre répertoire courant.
génère le sous-répertoire test sur la disquette.
efface le sous-répertoire test sur la disquette.
Après avoir lu cette introduction, vous possédez les bases essentielles nécessaires pour pouvoir travailler avec le shell. Vous devriez maintenant effacer les fichiers et répertoires que vous avez créés lors de vos test à l'aide des commandes rm et rmdir afin que votre répertoire personnel ne soit pas inutilement encombré. Vous trouverez à la fin de ce chapitre une liste des principales commandes avec leur brève description.