Chapitre 2. Introduction à la ligne de commande

Table des matières
2.1. Utilitaires de manipulation de fichiers
2.1.1. mkdir, touch : création de répertoires et fichiers vides
2.1.2. rm : supprimer des fichiers ou des répertoires
2.1.3. mv : déplacer ou renommer des fichiers
2.1.4. cp : copier des fichiers et des répertoires
2.2. Manipulation des attributs de fichiers
2.2.1. chown, chgrp : changer l'utilisateur et le groupe propriétaire d'un ou plusieurs fichiers
2.2.2. chmod : changer les permissions sur des fichiers et des répertoires
2.3. Motifs d'englobement du shell
2.4. Redirections et tubes
2.4.1. Encore un mot au sujet des processus
2.4.2. Redirections
2.4.3. Tubes
2.5. Le complètement (completion) dans les lignes de commande
2.5.1. Un exemple
2.5.2. Autres méthodes de complètement
2.6. Lancement et manipulation de processus en arrière-plan
2.7. Le mot de la fin

Dans le chapitre Concepts de base des systèmes UNIX, nous avons vu comment lancer un shell et ses principes de base, mais nous ne l'avons pas fait fonctionner. C'est ce que nous nous proposons de faire dans ce chapitre.

Le principal avantage du shell est le nombre d'utilitaires existants : des milliers sont disponibles et chacun d'entre eux a une tâche bien définie. Nous n'en examinerons ici qu'un petit nombre. L'une des grandes forces d'UNIX est la possibilité de combiner ces utilitaires, comme nous le verrons plus loin.

2.1. Utilitaires de manipulation de fichiers

La manipulation de fichiers signifie ici « copier  », « déplacer  » et « effacer  » des fichiers. Le changement de leurs attributs (propriétaire, permissions associées) sera examiné par la suite.

2.1.1. mkdir, touch : création de répertoires et fichiers vides

mkdir (MaKe DIRectory) est utilisé pour créer des répertoires. Sa syntaxe est simple :

mkdir [options] <répertoire> [répertoire ...]

En fait, une seule option est vraiment intéressante  : l'option -p. Si cette option est passée en argument, elle implique deux comportements :

  1. mkdir créera les répertoires parents s'il n'existaient pas avant. Sans cette option, mkdir échouerait, se plaignant que les répertoires parents n'existent pas ;

  2. mkdir terminera silencieusement si le répertoire que vous désirez créer existe déjà. De même, si vous ne spécifiez pas l'option -p, mkdir renverra un message d'erreur, se plaignant cette fois-ci que le répertoire à créer existe déjà.

Voici quelques exemples :

Initialement, la commande touch n'a pas pour but de créer des fichiers mais de mettre à jour les dates d'accès et de modification[1].

Toutefois, l'un des effets de bord de touch est de créer les fichiers mentionnés comme des fichiers de taille 0 s'ils n'existaient pas déjà. La syntaxe est :

touch [options] fichier [fichier...]

Il faut donc lancer la commande :

touch fichier1 images/fichier2

ce qui créera un fichier de taille 0 appelé fichier1 dans le répertoire courant et un fichier de taille 0 appelé fichier2 dans le répertoire images.

2.1.2. rm : supprimer des fichiers ou des répertoires

rm (ReMove) remplace les commandes del et deltree de DOS, et rajoute des options supplémentaires. Sa syntaxe est :
rm [options] <fichier|répertoire> [fichier|répertoire...]
Parmi les options, on trouve :

Quelques exemples :

  • rm -i images/*.jpg fichier1 : suppression de tous les fichiers dont le nom se termine par .jpg dans le répertoire images, ainsi que le fichier fichier1 dans le répertoire courant. Une confirmation est demandée pour chacun des fichiers. Répondez o ou y pour confirmer, n pour annuler.

  • rm -Rf images/divers/ file* : suppression sans demande de confirmation de tout le répertoire divers/ dans le répertoire images/. De plus, tous les fichiers du répertoire courant dont le nom commence par file sont également effacés.

Avertissement

Un fichier effacé avec rm l'est de façon irréversible : il n'y a alors aucun moyen de récupérer ce fichier ! N'hésitez donc pas à utiliser l'option -i afin d'éviter d'effacer des données par erreur.

Notes

[1]

Il y a trois mesures de temps distinctes pour chaque fichier sous UNIX : la date du dernier accès au fichier (atime), c'est-à-dire la date de la dernière ouverture du fichier en lecture ou en écriture ; la date de la dernière modification des attributs de l'inœud (mtime) ; et enfin la date de la dernière modification du contenu du fichier (ctime).

[2]

Pour un utilisateur, il est suffisant de pouvoir écrire dans un répertoire pour en effacer des fichiers, même s'il n'en est pas le propriétaire.