5.7. Autres commandes utiles

Pour terminer ce petit cours d'Unix, nous allons décrire quelques-unes des autres commandes d'Unix parmi les plus utiles. Elles sont utilisées moins souvent que les commandes vues précédemment, mais vous apprendrez certainement très vite à vous en servir, car elles sont très pratiques.

5.7.1. Passage en mode superviseur

Si vous êtes prudent, vous avez sans doute créé un compte utilisateur juste après avoir installé votre système de base, et vous ne travaillez plus que dans ce compte. Cette technique est prudente, cependant, elle pose un problème évident : vous ne pouvez pas y faire votre travail d'administrateur. C'est pour cela que la commande su a été créée. Cette commande permet de changer son identité dans le système :

su [utilisateur]
utilisateur est l'utilisateur dont on veut prendre l'identité. Par défaut, si aucun utilisateur n'est spécifié, le changement d'identité se fait vers l'utilisateur root. Bien entendu, il va de soi que la commande su demande le mot de passe avant d'obtempérer...

5.7.2. Changement des droits des fichiers, du propriétaire et du groupe

La commande permettant de changer les droits d'un fichier ou d'un répertoire est la suivante :

chmod droits fichier
fichier est le fichier ou le répertoire dont on désire changer les droits, et droits est une chaîne de caractères permettant de spécifier les nouveaux droits. Cette chaîne commence par une lettre indiquant le groupe d'utilisateurs auquel le droit doit être appliqué, d'un caractère + ou - indiquant si le droit doit être ajouté ou supprimé, et d'une lettre indiquant le droit que l'on est en train de manipuler. La première lettre peut prendre les valeurs suivantes :

Les droits sont identifiés par l'un des caractères suivants :

Ainsi, la commande suivante :

chmod g+w toto

permet de donner le droit d'écriture sur le fichier toto à tous les membres du groupe auquel ce fichier appartient.

Les droits d'accès ont déjà été décrits en détail ci-dessus dans le chapitre concernant les notions générales sur Unix.

Le changement de propriétaire d'un fichier ne peut être réalisé que par l'administrateur du système. Cette opération se fait à l'aide de la commande suivante :

chown utilisateur fichier
utilisateur est le nom de l'utilisateur qui doit devenir propriétaire du fichier, et fichier est le fichier devant changer de propriétaire.

Le changement de groupe peut être réalisé par n'importe quel utilisateur, mais on ne peut donner un fichier qu'à l'un des groupes dont on est membre. Cette opération se fait à l'aide de la commande suivante :

chgrp groupe fichier
groupe est le nom du groupe qui doit être affecté au fichier, et fichier est le fichier devant changer de groupe. Bien entendu, l'administrateur peut affecter un fichier à n'importe quel groupe d'utilisateur.

5.7.3. Gestion des liens

La commande pour créer un lien est ln. Cette commande utilise la syntaxe suivante :

ln [-s] source lien
source est le nom du fichier ou du répertoire source auquel le lien doit se référer, et lien est le nom du lien. L'option -s permet de créer un lien symbolique. Par défaut, ce sont des liens physiques qui sont créés. Rappelons qu'il est impossible de créer des liens physiques sur des répertoires.

Lorsqu'on liste des fichiers, on peut demander l'affichage d'informations complémentaires sur les liens. Pour cela, il suffit d'utiliser l'option -l de la commande ls. Ainsi, la commande suivante :

ls -l lien

permet d'afficher les informations sur le lien lien, et en particulier le fichier ou le répertoire cible de ce lien.

La suppression des liens se fait exactement comme celle d'un fichier. La destination n'est pas affectée en général, sauf si le lien est un lien physique et constitue la dernière référence au fichier pointé par le lien.

Les liens symboliques n'ont pas de droits d'accès ni de propriétaires, les informations de sécurité de la cible sont utilisées lorsqu'on accède au lien.

5.7.4. Montage et démontage d'un système de fichiers

Comme il l'a été vu dans le chapitre expliquant les généralités sur Unix, les systèmes de fichiers ne sont pas accessibles directement. Ils doivent subir une opération que l'on nomme le montage. De la même manière, il faut penser à démonter les systèmes de fichiers avant d'éteindre la machine ou de retirer le support dans le cas des supports amovibles, faute de quoi les données non écrites seront définitivement perdues.

Heureusement, il y a la possibilité d'enregistrer les systèmes de fichiers les plus utilisés pour que le système les monte et les démonte automatiquement au démarrage et à l'arrêt du système. Cependant, cet automatisme n'est disponible que pour les systèmes de fichiers fixes, et il est nécessaire de monter soi-même les systèmes de fichiers sur disques amovibles (comme les disquettes et les CD-ROM).

L'opération permettant de monter un disque suit la syntaxe suivante :

mount [-t type] fichier base
fichier est le fichier contenant le système de fichiers à monter (en général, il s'agit d'un fichier spécial de périphérique, mais ce peut également être une image disque), et base est le point de montage, c'est-à-dire le répertoire à partir duquel le système de fichiers doit être accédé. L'option -t permet d'indiquer le type du système de fichiers, mais en général, il n'est pas nécessaire de le préciser. En effet, le noyau sait reconnaître la plupart des systèmes de fichiers automatiquement. Pour information, les systèmes de fichiers les plus utilisés sont les suivants :

Si le répertoire de montage n'est pas vide, les fichiers qui s'y trouvent sont masqués par le système de fichiers monté. Il est donc recommandé de ne monter les systèmes de fichiers que dans des répertoires vides.

La commande permettant de démonter un système de fichiers est beaucoup plus simple :

umount fichier
ou :
umount base
fichier est le fichier contenant le système de fichiers à démonter, et base est le répertoire dans lequel ce système de fichiers est monté. On peut utiliser l'un ou l'autre de ces paramètres, la commande umount se débrouillera pour retrouver l'autre automatiquement. On notera qu'il est impossible de démonter un système de fichiers qui est en cours d'utilisation par quelqu'un. En particulier, il ne faut pas être dans le répertoire servant de point de montage pour pouvoir démonter un système de fichiers, car dans ce cas on est en train de l'utiliser.

La commande mount peut prendre diverses options pour le montage des systèmes de fichiers. Par exemple, elle permet de monter des systèmes de fichiers en lecture seule, ou de monter des systèmes de fichiers placés dans des images disques. Ces options sont introduites par l'option de ligne de commande -o, et doivent être séparées les unes des autres par des virgules. Par exemple, pour monter un système de fichiers ISO9660 en lecture seule, on utilisera la ligne de commande suivante :

mount -t iso9660 -o ro fichier base
Une autre option utile pour le montage des CD-ROMs est sans doute l'option session, qui permet d'indiquer le numéro de la session à monter dans le cas des CD-ROMs multisessions. Par exemple, pour monter la deuxième session d'un CD-ROM multisession, on utilisera une ligne de commande telle que celle-ci :
mount -t iso9660 -o ro,session=2 fichier base
Vous pourrez trouver la liste des options acceptées par chaque système de fichiers dans la page de manuel de la commande mount.

Le système de fichiers EXT3 prend des options supplémentaires par rapport au système de fichiers EXT2, qui permettent de contrôler la manière dont la journalisation des opérations sur disque est réalisée. Avec EXT3, le journal peut être utilisé pour stocker toutes les opérations concernant la structure de données même du système de fichiers (c'est-à-dire ce que l'on appelle les « méta-données » du système de fichiers) et les opérations concernant les données des fichiers elles-mêmes. La différence est importante et il faut bien la comprendre. Si l'on choisit de ne journaliser que les méta-données du système de fichiers, les informations concernant les répertoires, les fichiers et les droits d'accès seront toujours dans un état cohérent. En revanche, les données stockées dans les fichiers eux-mêmes peuvent être a priori fausses à la suite d'un redémarrage impromptu. Si, en revanche, on décide de stocker également les informations concernant les données des fichiers dans le journal, le contenu des fichiers sera également garanti, au détriment d'une perte de performances notable. Le mode de fonctionnement à utiliser est spécifié à l'aide de l'option data du système de fichiers, qui doit donc être fixée lors de l'opération de montage. Cette option peut prendre l'une des trois valeurs suivantes :

Il est possible d'enregistrer les valeurs par défaut de toutes ces options dans le fichier de configuration /etc/fstab. Ce fichier contient, entre autres, le répertoire de montage, le type du système de fichiers et le fichier de périphérique à utiliser pour chaque système de fichiers. De cette manière, il est possible d'utiliser la commande mount de manière simplifiée, en ne précisant que le répertoire servant de point de montage ou le fichier spécial de périphérique. Le fichier /etc/fstab sera décrit plus en détail dans la Section 6.4.2.

Enfin, il est possible de monter un système de fichiers plusieurs fois, éventuellement avec des options différentes, dans différents points de montage.

5.7.5. Recherche de fichiers

Il vous sera sans doute nécessaire de rechercher des fichiers selon un critère donné dans toute une arborescence de répertoires. Pour cela, vous utiliserez la commande find. Cette commande est très puissante, mais dispose d'une syntaxe assez compliquée :

find répertoire -name nom -print
répertoire est le répertoire à partir duquel la recherche doit commencer et nom est le nom du fichier à rechercher. Ce nom peut contenir des caractères génériques du shell, mais dans ce cas doit être placé entre guillemets afin d'éviter que ce dernier ne les interprète.

find accepte d'autres options de recherche que le nom (partie « -name » de la ligne de commande), et peut effectuer d'autres actions que l'affichage du chemin des fichiers trouvés (partie « -print »). Consultez les pages de manuel pour plus d'informations à ce sujet.

5.7.6. Recherche d'un texte dans un fichier

La recherche d'une chaîne de caractères dans un ou plusieurs fichiers peut se faire à l'aide de la commande grep. Cette commande prend en premier paramètre le texte à rechercher, puis la liste des fichiers dans lequel ce texte doit être trouvé :

grep texte fichiers

Le texte peut être placé entre guillemets si nécessaire (en particulier, s'il contient des espaces ou des caractères interprétés par le shell, comme * et ?). grep accepte un grand nombre d'options, qui ne seront pas décrites ici. Consulter les pages de manuel pour plus d'information à ce sujet.

5.7.7. Remplacement de texte dans les fichiers

Le remplacement de texte dans un fichier peut être effectué de manière automatique, c'est-à-dire sans avoir à ouvrir le fichier dans un éditeur, grâce à la commande sed (abréviation de l'anglais « Stream Editor »). Cette commande est en fait un utilitaire de manipulation de flux de données, qui permet d'effectuer des traitements plus généraux que le simple remplacement de texte, mais c'est malgré tout pour cette opération qu'elle reste la plus utilisée.

sed peut travailler à la volée sur un flux de données textuelles, que ce flux provienne de l'entrée standard ou d'un fichier. Par défaut, il écrit le résultat de son travail sur le flux de sortie standard. Les opérations qu'il doit effectuer sur le flux de données peuvent être spécifiées de différentes manières, soit en fournissant un fichier script à l'aide de l'option -f, soit directement sur la ligne de commande, avec l'option -e. La syntaxe utilisée pour appeler sed est donc typiquement la suivante :

sed -e "commandes" fichier > résultat
ou :
sed -f script fichier > résultat
fichier est le fichier sur lequel sed doit travailler, et résultat est le fichier devant recevoir le flux de données modifiées. Notez que cette commande utilise une redirection du flux de sortie standard dans un fichier. Ce type de redirection sera décrit en détail dans la Section 5.9.2.

sed peut effectuer un grand nombre de commandes différentes et est réellement un outil très puissant. Cependant, nous ne verrons ici que la commande qui permet d'effectuer un remplacement de texte. Cette commande utilise la syntaxe suivante :

s/texte/remplacement/options
texte est le texte à rechercher, remplacement est le texte de remplacement, et options est un jeu d'options exprimant la manière dont le remplacement doit être fait. Les options sont spécifiées à l'aide de simple caractères, les plus utiles étant sans doute g, qui permet d'effectuer un remplacement global (au lieu de ne remplacer que la première occurrence du texte rencontrée dans chaque ligne), et I, qui permet d'effectuer une recherche sans tenir compte de la casse des caractères.

Par exemple, la ligne de commande suivante :

sed -e "s/bonjour/bonsoir/g" test.txt > modif.txt

permet de remplacer toutes les occurrences de la chaîne de caractères « bonjour » par la chaîne de caractères « bonsoir » dans le texte du fichier test.txt, et d'enregistrer le résultat dans le fichier modif.txt.

Note : Il ne faut pas utiliser le même nom de fichier pour le fichier source et le fichier de résultat. En effet, sed lit le fichier source à la volée, et effectuer une redirection sur ce fichier pendant son traitement provoquerait la perte irrémédiable de son contenu. Pour résoudre ce problème, on pourra utiliser un nom de fichier temporaire, et écraser le fichier original par ce fichier une fois la commande sed exécutée.

5.7.8. Compression et décompression des fichiers

Linux fournit un grand nombre de programmes de compression de fichiers. Le meilleur est sans doute bzip2, et le plus compatible sans doute compress. Cependant, le plus utilisé et le plus courant, surtout pour la distribution des sources, reste incontestablement gzip. Nous allons décrire brièvement comment comprimer et décomprimer des fichiers avec gzip et bzip2 dans ce paragraphe.

La compression d'un fichier se fait de manière élémentaire :

gzip fichier
fichier est le fichier à comprimer. Après avoir effectué son travail, gzip renomme le fichier comprimé en « fichier.gz ». La compression d'un fichier avec bzip2 utilise exactement la même syntaxe, à ceci près qu'il faut remplacer gzip par bzip2. De plus, le nom du fichier comprimé porte l'extension .bz2 au lieu de .gz. Le fichier obtenu est donc nommé « fichier.bz2 ».

La décompression d'un fichier se fait à l'aide de la commande suivante :

gunzip fichier.gz
ou
bunzip2 fichier.bz2
selon qu'il a été comprimé avec gzip ou bzip2. Après décompression, l'extension complémentaire .gz ou .bz2 est supprimée du nom de fichier.

5.7.9. Archivage de fichiers

L'archivage de fichiers se fait classiquement sous Unix avec le programme tar (abréviation de l'anglais « Tape ARchiver »). Ce programme permet simplement de regrouper tous les fichiers qu'il doit archiver dans un seul fichier structuré en blocs. Il a été initialement écrit pour permettre des archivages sur bandes ou sur tout autre périphérique de stockage de masse, mais il est également utilisé pour créer des fichiers archives contenant toute une arborescence.

La syntaxe de tar est très simple :

tar options archive [fichiers]
options sont les options qui indiquent l'opération à effectuer et comment elle doit être réalisée, archive est le nom de l'archive qui doit être créée ou le nom du fichier de périphérique du périphérique d'archivage, et fichiers est la liste des fichiers à archiver.

Les options de tar que vous utiliserez le plus souvent sont les suivantes :

Par exemple, pour archiver le contenu du répertoire courant dans le fichier archive.tar, vous utiliserez la ligne de commande suivante :

tar cvf archive.tar *

De plus, pour extraire le contenu de l'archive archive.tar, vous utiliserez la commande suivante :

tar xvf archive.tar

Note : L'option z permet d'effectuer une compression des données archivées ou une décompression des données restaurées à la volée. tar utilise gzip et gunzip pour la compression et la décompression. De même, l'option y permet de comprimer l'archive à la volée avec bzip2. Cette option est mois courante et varie selon les versions de tar utilisées.

Si l'on utilise un signe négatif ('-') à la place du nom de l'archive, tar enverra le résultat de la compression vers la sortie standard. Cela peut être utilisé pour des opérations avancées. Un exemple sera donné dans la Section 5.9.2.

5.7.10. Gestion des paquetages

La plupart des distributions actuelles utilisent le format de fichier « rpm » (« Redhat Package Manager ») pour leurs paquetages. Ce format de fichier a été introduit par la distribution Redhat, mais a été licencié sous la licence GNU, ce qui a permis aux autres distributions de l'utiliser. Ces fichiers encapsulent tous les fichiers des paquetages, ainsi que des informations permettant de gérer les dépendances entre les paquetages, leurs versions, la manière de les installer dans le système, de les supprimer ou de les mettre à jour facilement.

Les fichiers rpm peuvent être manipulés à l'aide du programme rpm. Il est probable que le programme d'installation de votre distribution vous évite d'avoir à manipuler cet outil vous-même. Cependant, les principales commandes de rpm seront décrites ici, afin que vous puissiez l'utiliser en cas de besoin.

Le programme rpm utilise une syntaxe très classique :

rpm options [paquetage]

Les options indiquent les opérations à effectuer. La première option est bien entendu l'option -i, qui permet l'installation d'un paquetage :

rpm -i paquetage

La mise à jour d'un paquetage déjà installé se fait à l'aide de l'option -U :

rpm -U paquetage

La suppression d'un paquetage se fait à l'aide de l'option -e :

rpm -e paquetage

La commande permettant d'obtenir les informations (auteur, description, version) sur un paquetage contenu dans un fichier rpm est la suivante :

rpm -qi -p paquetage

Enfin, la commande pour lister tous les fichiers d'un paquetage contenu dans un fichier rpm est la suivante :

rpm -ql -p paquetage

Cette commande affiche les chemins complets, ce qui permet de savoir dans quel répertoire chaque fichier sera installé.

Il existe beaucoup d'autres options disponibles. Cependant, leur description dépasserait le cadre de ce document. Vous pouvez toujours consulter la page de manuel rpm si vous désirez plus d'informations.