Table des matières
Résumé
Les interfaces utilisateur graphiques sont de plus en plus importantes pour Linux, mais l'utilisation de la souris n'est pas toujours le meilleur moyen d'effectuer des tâches journalières. La ligne de commande offre une flexibilité et une efficacité élevées. Les applications à base de texte sont particulièrement importantes pour contrôler les ordinateurs sur des liaisons réseau lentes ou si vous souhaitez exécuter des tâches en tant qu'utilisateur root sur la ligne de commande d'un terminal X. Le shell Bash est l'interpréteur de ligne de commande par défaut dans SUSE Linux.
Linux est un système multi-utilisateurs. L'accès aux fichiers est contrôlé par les autorisations des utilisateurs. Que vous utilisiez la ligne de commande ou une interface utilisateur graphique, il est utile de comprendre le concept d'autorisation. Lorsque vous utilisez la ligne de commande, un certain nombre de commandes sont importantes. L'éditeur de texte vi est souvent utilisé pour configurer un système à partir de la ligne de commande. Il est également apprécié par un grand nombre d'administrateurs système et de développeurs.
La barre des tâches KDE comprend une icône représentant un moniteur avec un coquillage. Lorsque vous cliquez sur cette icône, une fenêtre de terminal s'ouvre dans laquelle vous pouvez entrer des commandes. Konsole, le programme de terminal, exécute normalement Bash (Bourne again shell), un programme développé dans le cadre du projet GNU . Sur le bureau GNOME, cliquez sur une icône de moniteur d'ordinateur dans le tableau de bord supérieur pour démarrer un terminal qui exécute normalement Bash.
Une fois que vous avez ouvert le shell, lisez l'invite de la première ligne. L'invite comprend généralement le nom de l'utilisateur, le nom de l'hôte et le chemin actuel, mais peut être personnalisée. Lorsque le curseur se trouve après cette invite, vous pouvez directement envoyer des commandes vers votre système informatique.
Une commande se compose de plusieurs éléments. Le premier élément est toujours la commande réelle, suivie des paramètres ou des options. Les commandes sont exécutées lorsque vous appuyez sur Entrée. Avant de le faire, vous pouvez modifier facilement la ligne de commande, ajouter des options ou corriger des erreurs de frappe. L'une des commandes les plus fréquemment utilisées est ls, qu'il est possible d'utiliser avec ou sans arguments. L'entrée de la simple commande ls affiche le contenu du répertoire actuel.
Les options sont précédées d'un tiret. Par exemple, la commande ls -l
affiche le contenu du même répertoire en détail (format de liste long). À côté de chaque nom de fichier figurent la date de création du fichier, la taille du fichier en octets et de plus amples détails qui seront présentés ultérieurement. --help est une option importante qui existe pour de nombreuses commandes. En entrant ls --help
, vous affichez toutes les options de la commandels.
Il est important que la « mise entre guillemets » soit correcte. Si un nom de fichier contient un espace, ignorez l'espace en utilisant une barre oblique inverse (\) ou entourez le nom du fichier de guillemets simples ou doubles. Sinon, Bash interprète un nom tel que Mes documents comme les noms de deux fichiers ou de deux répertoires. La différence entre des guillemets simples ou doubles est la suivante : l'expansion de variable se produit avec les guillemets doubles. Les guillemets simples assurent que le shell voit littéralement la chaîne entre guillemets.
Pour utiliser efficacement le shell, il est vraiment utile d'avoir des connaissances sur les structures des fichiers et répertoires d'un système Linux. Vous pouvez envisager les répertoires comme des dossiers électroniques dans lesquels sont stockés les fichiers, les programmes et les sous-répertoires. Le dossier en haut de la hiérarchie est le répertoire racine, désigné par /. C'est l'emplacement à partir duquel vous pouvez accéder à l'ensemble des autres répertoires.
Le répertoire /home contient les répertoires dans lesquels chaque utilisateur peut stocker ses fichiers personnels. La Figure 27.1, « Extrait d'une arborescence de répertoires standard » affiche l'arborescence standard de Linux, avec les répertoires maison des exemples d'utilisateurs xyz, linux et tux. L'arborescence d'un système Linux possède une structure fonctionnelle qui suit le Filesystem Hierarchy Standard (FHS). La liste suivante offre une brève description des répertoires standard de Linux.
/
Répertoire racine, point de départ de l'arborescence
/home
Répertoires privés des utilisateurs
/dev
Périphériques qui représentent les composants matériels
/etc
Fichiers importants pour la configuration du système
/etc/init.d
Commandes de démarrage
/usr/bin
Programmes généralement accessibles
/bin
Programmes requis au début du processus de démarrage
/usr/sbin
Programmes réservés à l'administrateur système
/sbin
Programmes réservés à l'administrateur système et nécessaires au démarrage
/usr/include
Fichiers d'en-tête pour le compilateur C
/usr/include/g++
Fichiers d'en-tête pour le compilateur C++
/usr/share/doc
Divers fichiers de documentation
/usr/share/man
Pages de manuel du système
/usr/src
Code source du système logiciel
/usr/src/linux
Code source du kernel
/tmp, /var/tmp
Fichiers temporaires
/usr
Tous les programmes d'applications
/var
Fichiers de configuration (par exemple, ceux liés à /usr)
/var/log
Fichiers journaux du système
/var/adm
Données d'administration du système
/lib
Librairies partagées (pour les programmes à lien dynamique)
/proc
Système de fichiers de processus
/sys
Système de fichiers du système dans lequel toutes les informations de périphérique du kernel sont recueillies
/usr/local
Extensions locales indépendantes de la distribution
/opt
Logiciel optionnel, paquetages de programmes supplémentaires (tels que KDE, GNOME, Netscape)
Le shell comporte deux fonctions importantes qui peuvent faciliter largement votre travail :
Pour répéter une commande entrée précédemment, appuyez sur ↑ jusqu'à ce que la commande précédente apparaisse à l'invite. Pour parcourir la liste des commandes entrées précédemment, appuyez sur ↓. Pour modifier la ligne de commande, il vous suffit de déplacer le curseur jusqu'à la position souhaitée en utilisant les touches fléchées et de commencer à taper. Pour effectuer une recherche dans l'historique, appuyez sur Ctrl-R.
Complète le nom d'un fichier après la saisie de ses premières lettres jusqu'à ce qu'il puisse être identifié de manière univoque. Pour ce faire, tapez les premières lettres, puis appuyez sur Tab. S'il existe plusieurs noms de fichiers débutant par les mêmes lettres, appuyez deux fois sur Tab pour en obtenir la liste.
Maintenant que vous savez à quoi ressemble une commande, quels sont les répertoires qui existent dans SUSE Linux, et comment accélérer les choses à l'aide de Bash, vous pouvez mettre ces connaissances en pratique au moyen d'un petit exercice.
Ouvrez une console à partir du bureau de KDE ou de GNOME en cliquant sur l'icône en forme de coquillage.
Entrez la commande ls pour afficher le contenu de votre répertoire maison.
Utilisez la commande mkdir (qui signifie make directory) pour créer un nouveau sous-répertoire appelé test en entrant mkdir test.
Lancez maintenant un éditeur en appuyant sur Alt-F2 et en entrant kate Kate dans KDE gedit pour Gedit dans GNOME. Tapez quelques lettres dans l'éditeur, puis enregistrez le fichier sous Testfile dans votre dossier personnel. Linux fait la différence entre les majuscules et les minuscules. Pour cet exemple, utilisez la majuscule T.
Affichez de nouveau le contenu de votre répertoire maison. Au lieu de taper de nouveau ls, il vous suffit d'appuyer deux fois sur ↑ et la commande ls doit réapparaître à l'invite. Pour exécuter la commande, appuyez sur Entrée. Le nouveau répertoire test doit apparaître en lettres bleues et Testfile en noir. C'est ainsi qu'il est possible de différencier les répertoires dans une console.
Déplacez Testfile dans le sous-répertoire test au moyen de la commande mv. Pour aller plus vite, utilisez la fonction d'expansion : il vous suffit d'entrer mv T et d'appuyer sur Tab. Tant qu'il n'existe pas d'autre fichier débutant par cette lettre dans le répertoire, le shell développe le nom du fichier et ajoute la chaîne estfile. Sinon, ajoutez vous-même une lettre ou deux et appuyez à chaque fois sur Tab pour voir si le shell peut développer le nom. Enfin, tapez un espace puis test après le nom du fichier développé et appuyez sur Entrée pour exécuter la commande.
À ce stade, Testfile ne doit plus se trouver dans le répertoire. Pour vérifier, entrez de nouveau ls.
Pour voir si le fichier a été déplacé avec succès, accédez au répertoire test à l'aide de la commande cd test. À présent, entrez de nouveau ls. Vous devez voir apparaître Testfile dans la liste. Vous pouvez revenir à votre répertoire maison à tout moment en tapant seulement cd.
Pour effectuer une copie d'un fichier, utilisez la commande cp. Par exemple, entrez cp Testfile Testbackup pour copier Testfile dans Testbackup. De nouveau, vous pouvez utiliser la commande ls pour voir si les deux fichiers se trouvent dans le répertoire.
Lorsque vous travaillez avec des fichiers ou des répertoires, il est important de spécifier le chemin correct. Il est toutefois inutile d'entrer le chemin entier (absolu) depuis le répertoire racine jusqu'au fichier respectif. Vous pouvez partir du répertoire actuel. Accédez directement à votre répertoire maison grâce à ~. Cela signifie qu'il existe deux moyens de lister le fichier Testfile dans le répertoire test : en entrant le chemin relatif avec ls test ou en spécifiant le chemin absolu avec ls ~/test.
Pour lister le contenu des répertoires maison d'autres utilisateurs, entrez ls ~username. Dans l'exemple d'arborescence, l'un des utilisateurs exemples est tux. Dans ce cas, ls ~tux listerait le contenu du dossier personnel de tux.
Le répertoire actuel est marqué par un point (.). Le niveau supérieur suivant de l'arborescence est représenté par deux points (..). En entrant ls .., vous affichez le contenu du répertoire parent du répertoire actuel. La commande ls ../.. affiche le contenu du répertoire deux niveaux plus haut dans la hiérarchie.
Voici un autre exemple illustrant la manière dont vous pouvez vous déplacer dans les répertoires de votre système SUSE Linux.
Accédez à votre répertoire maison à l'aide de la commande cd. Créez ensuite à cet endroit un répertoire appelé test2 en tapant mkdir test2.
Accédez au nouveau répertoire en tapant cd test2 et créez à cet endroit un sous-répertoire appelé subdirectory. Pour y accéder, utilisez la fonction d'expansion : entrez cd su, puis appuyez sur Tab. Le shell développe le reste du nom du répertoire.
Essayez à présent de déplacer le fichier créé précédemment Testbackup dans le répertoire actuel (subdirectory) sans modifier de nouveau le répertoire. Pour ce faire, spécifiez le chemin relatif à ce fichier : mv ../../test/Testbackup . (notez le point à la fin). Le point figurant à la fin de cette commande est nécessaire pour indiquer au shell que le répertoire actuel est la destination vers laquelle déplacer le fichier. ../../, dans cet exemple, se réfère à votre dossier personnel.
Le shell propose encore un autre avantage, à savoir les caractères jokers pour l'expansion du nom de chemin. Il en existe trois types différents dans Bash :
Correspond précisément à un caractère arbitraire
Correspond à un nombre quelconque de caractères
Correspond à l'un des caractères du groupe spécifié à l'intérieur des crochets, qui est représenté ici par la chaîne set. Dans set vous pouvez également spécifier des classes de caractères utilisant la syntaxe [:class:], où une classe est un alnum, alpha, ascii, etc.
L'utilisation de ! ou de ^ au début du groupe ([!set]) correspond à un caractère autre que celui identifié par set.
En supposant que votre répertoire test contienne les fichiers Testfile, Testfile1, Testfile2 et datafile, la commande ls Testfile? liste les fichiers Testfile1 et Testfile2. Avec ls Test*, la liste inclut également Testfile. ls *fil* affiche tous les fichiers exemples. Enfin, vous pouvez utiliser le caractère joker set pour accéder à tous les fichiers exemples dont le dernier caractère est un nombre : ls Testfile[1-9] ou, en utilisant des classes, ls Testfile[[:digit:]].
Sur les quatre types de caractères jokers, le plus inclusif est l'astérisque. Il peut servir à copier tous les fichiers contenus dans un répertoire vers un autre ou supprimer tous les fichiers à l'aide d'une commande. La commande rm *fil*, par exemple, supprimerait tous les fichiers du répertoire actuel dont le nom comprend la chaîne fil.
Linux comprend deux petits programmes permettant d'afficher des fichiers texte directement dans le shell. Au lieu de lancer un éditeur pour lire un fichier tel que Lisezmoi.txt, il vous suffit d'entrer less Lisezmoi.txt pour afficher le texte dans la fenêtre de console. Utilisez la barre d'espace pour faire défiler une page vers le bas. Utilisez les touches Page suivante et Page précédente pour avancer ou reculer dans le texte. Pour quitter less, appuyez sur Q.
Au lieu de less, vous pouvez également utiliser l'ancien programme more. Il est toutefois moins pratique car il ne permet pas de faire défiler en arrière.
Le programme less tire son nom du précepte selon lequel moins vaut plus et peut servir également à afficher la sortie des commandes de façon appropriée. Pour comprendre son fonctionnement, consultez Section 27.1.7, « Tuyaux et redirection ».
En principe, la sortie standard du shell est votre écran ou la fenêtre de console, et l'entrée standard le clavier. Pour transférer la sortie d'une commande vers une application telle que less, vous pouvez utiliser un tuyau.
Pour afficher les fichiers dans le répertoire test, entrez la commande ls test | less. Le contenu du répertoire test s'affiche ensuite avec less. Cela est utile uniquement si la sortie normale avec ls est trop longue. Par exemple, si vous affichez le contenu du répertoire dev avec la commande ls /dev, vous ne voyez qu'une petite partie de la fenêtre. Pour voir la liste entière, tapez ls /dev | less.
Il est possible également d'enregistrer la sortie des commandes dans un fichier. Par exemple, echo "test one" > Content génère un nouveau fichier nommé Content qui contient les mots test one. Pour afficher le fichier, tapez less Content.
Vous pouvez également utiliser un fichier comme entrée d'une commande. Par exemple, tr remplace les caractères de l'entrée standard qui redirigeait à partir du fichier Content et écrit le résultat dans la sortie standard : remplacer t par x en appelant tr t x < Content. La sortie de la commande tr est envoyée à l'écran.
Si vous avez besoin d'un nouveau fichier contenant la sortie, il suffit de transmettre la sortie de tr dans un fichier. En guise de test, changez pour test et saisissez la commande tr t x < ../Content > new. Enfin, affichez new avec less new.
Tout comme la sortie standard, le message d'erreur standard est envoyé vers la console. Cependant, pour rediriger le message d'erreur standard vers un fichier appelé errors, vous devez ajouter 2> errors à la commande correspondante. La sortie et le message d'erreur standard sont tous deux enregistrés dans un fichier appelé alloutput si vous ajoutez >& alloutput. Enfin, pour ajouter la sortie d'une commande à un fichier déjà existant, la commande doit être suivie par >> au lieu de >.
Maintenant que vous avez créé plusieurs fichiers et répertoires, vous pouvez aborder le thème des archives et de la compression de données. Supposez que vous voulez avoir le répertoire test complet compacté dans un fichier que vous pouvez enregistrer sur une clé USB comme copie de sauvegarde ou envoyer par courrier électronique. Pour ce faire, utilisez la commande tar (pour tape archiver). A l'aide de la commande tar --help, affichez ensuite toutes les options de la commande tar. Les options les plus importantes sont expliquées ici :
(pour create) Crée une nouvelle archive.
(pour table) Affiche le contenu d'une archive.
(pour extract) Décompacte l'archive.
(pour verbose) Affiche tous les fichiers à l'écran pendant la création de l'archive.
(pour file) Choisit un nom de fichier pour le fichier de l'archive. Lorsque vous créez une archive, cette option doit toujours être indiquée en dernière.
Pour compacter le répertoire test avec tous ses fichiers et sous-répertoires dans une archive appelée testarchive.tar, utilisez les options -c et -f. Aux fins de test, ajoutez également -v pour suivre la progression de l'archivage, même si cette option n'est pas obligatoire. Après avoir utilisé cd pour accéder à votre répertoire maison dans lequel se trouve le répertoire test, entrez tar -cvf testarchive.tar test. Après cela, affichez le contenu du fichier d'archive à l'aide de la commande tar -tf testarchive.tar. Le répertoire test et tous ses fichiers et répertoires restent inchangés sur votre disque dur. Pour décompacter l'archive, il vous suffit d'entrer tar -xvf testarchive.tar, mais ne le faites pas encore.
Pour la compression des fichiers, le choix évident est gzip ou, pour un rapport de compression encore meilleur, bzip2.
Il suffit de saisir gzip testarchive.tar (ou bzip2 testarchive.tar, mais c'est gzip qui est utilisé dans cet exemple). Grâce à la commande ls, vous voyez à présent que le fichier testarchive.tar n'est plus là et que le fichier testarchive.tar.gz a été créé à sa place. Ce fichier est beaucoup plus petit et, par conséquent, convient beaucoup mieux au transfert par courrier électronique ou au stockage sur clé USB.
À présent, décompactez ce fichier dans le répertoire test2 créé précédemment. Pour ce faire, tapez cp testarchive.tar.gz test2 afin de copier le fichier dans ce répertoire. Accédez au répertoire à l'aide de la commande cd test2. Une archive compactée portant l'extension .tar.gz peut être dézippée à l'aide de la commande gunzip. Entrez gunzip testarchive.tar.gz,
qui a pour résultat le fichier testarchive.tar, lequel doit ensuite être extrait ou décompacté à l'aide de la commande tar -xvf testarchive.tar. Vous pouvez également dézipper et extraire une archive compactée en une seule opération avec tar -xvf testarchive.tar.gz (l'ajout de l'option -z n'est plus nécessaire). La commande ls permet de constater qu'un nouveau répertoire test a été créé avec le même contenu que votre répertoire test dans votre répertoire maison.
mtools comprend un ensemble de commandes permettant de travailler avec les systèmes de fichiers MS-DOS. Les commandes incluses dans mtools permettent de désigner la première disquette par a:, comme sous MS-DOS, et les commandes sont identiques à celles de MS-DOS, sauf qu'elles sont précédées du préfixe m :
Affiche le contenu de la disquette sur le lecteur a:
Copie les fichiers Testfile sur la disquette
Supprime Testfile sur a:
Formate la disquette dans le format MS-DOS (à l'aide de la commande fdformat)
Fait de a: votre répertoire actuel
Créé le sous-répertoire test sur la disquette
Supprime le sous-répertoire test de la disquette
Après ce cours intensif, vous devriez être habitué aux basiques du shell ou de la ligne de commande Linux. Si vous le souhaitez, vous pouvez nettoyer votre répertoire maison en supprimant les différents fichiers et répertoires test grâce aux commandes rm et rmdir. Dans Section 27.3, « Commandes Linux importantes », vous trouverez une liste des commandes les plus importantes, ainsi qu'une brève description de leurs fonctions.