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 et il est le dérivé le plus courant du Bourne Shell (sh). 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 la machine et le chemin courant mais qui peut également être configurée individuellement. Lorsque le curseur se trouve derrière 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. La figure 21.1, « Extrait d'une arborescence standard de répertoires » vous montre l'arborescence standard des répertoires sous Linux avec, sous Home, 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
répertoires (privés) des utilisateurs
fichiers de périphériques (device files) qui représentent des composants matériels
fichiers essentiels pour la configuration du système
contient des scripts de démarrage
commandes utilisateurs principales
commandes déjà requises pour le démarrage du système
commandes réservées à l'administrateur système
commandes réservées à l'administrateur système et nécessaires pour le démarrage du système
fichiers en-têtes pour le compilateur C
fichiers en-têtes pour le compilateur C++
divers fichiers de documentation
textes d'aide (pages de manuel)
codes sources des logiciels du système
sources du noyau
pour fichiers temporaires
contient tous les programmes d'application
fichiers de configuration (liés, par exemple, depuis /usr)
fichiers de traces (journalisation)
administration du système
bibliothèques partagées (pour programmes liés dynamiquement)
système de fichiers pour les processus
extensions locales indépendantes de la distribution
logiciels optionnels, systèmes de grande taille (par exemple KDE, GNOME, Netscape).
Deux fonctions importantes du Bash vous facilitent notablement le travail :
L'historique – 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.
La fonction de complétion – Elle 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 KEdit en pressant les touches Alt-F2 et en tapant kedit 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 ~. Cela signifie que 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 dates, vous obtiendrez alors, à l'aide de la commande ls Fichier_test?, l'affichage des fichiers Fichier_test_1 et Fichier_test_2. Avec ls Fichier*, vous obtiendrez en plus l'affichage de Fichier_test.
La commande ls *tes* 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 *date*, par exemple, efface dans votre répertoire test tous les fichiers dont le nom contient la chaîne de caractères date.
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 d'avancer ou de reculer d'une page.
Le nom du programme less a été choisi selon la devise Less is more. Vous pouvez utiliser less non seulement pour la lecture de fichiers textes mais aussi pour obtenir commodément l'affichage des sorties de commandes. Lisez à ce sujet la section 21.2.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 :
create crée une nouvelle archive.
table affiche le contenu d'une archive.
extract extrait les fichiers d'une archive.
verbose affiche les noms de tous les fichiers traités.
file 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.