Chapitre 3. Introduction à la ligne de commande

Table des matières
3.1. Utilitaires de manipulation de fichiers
3.1.1. mkdir, touch : création de répertoires et fichiers vides
3.1.2. rm : supprimer des fichiers ou des répertoires
3.1.3. mv : déplacer ou changer le nom des fichiers
3.1.4. cp : copier des fichiers et des répertoires
3.2. Manipulation des attributs de fichiers
3.2.1. chown, chgrp : changer l'utilisateur et le groupe propriétaires d'un ou plusieurs fichiers
3.2.2. chmod : changer les permissions sur des fichiers et des répertoires
3.3. Motifs d'englobement du shell
3.4. Redirections et tubes
3.4.1. Encore un mot au sujet des processus
3.4.2. Redirections
3.4.3. Tubes
3.5. Le complètement (completion) dans les lignes de commande
3.5.1. Un exemple
3.5.2. Autres méthodes de complètement
3.6. Lancement et manipulation de processus en arrière-plan
3.7. Le mot de la fin

Dans le chapitre « Concepts de base d'Unix  » du Guide de l'utilisateur, 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 : il en existe en fait des milliers 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.

3.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.

3.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
      ...]
    

Une seule option est en fait 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 lamentablement, 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, mkdirmkdir renverra un message d'erreur.

Voici quelques exemples :

  • mkdir toto crée un répertoire du nom de toto dans le répertoire courant.

  • mkdir -p images/divers docs crée 1) un répertoire divers dans le répertoire images après avoir créé ce dernier s'il n'existait pas (-p); 2) un répertoire docs dans le répertoire courant.

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 de ses effets de bord 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.

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

rm (ReMove) remplace les commandes del et deltree de DOS, et plus encore. Sa syntaxe est :

rm [options] <fichier|répertoire> [fichier|répertoire...]

Parmi les options, on trouve :

  • -r ou -R : supprime récursivement. Cette option est obligatoire pour supprimer un répertoire, même vide. Toutefois, il existe aussi la commande rmdir pour effacer des répertoires vides.

  • -i : demande une confirmation avant chaque effacement. Prenez note que, par défaut et pour des raisons de sécurité, la commande rm dans Linux-Mandrake est un alias de rm -i (comme le sont également les commandes cp et mv). Si vous désirez les effacer, vous pouvez éditer le ficher .bashrc et ajoutez la ligne suivante : unalias rm cp mv.

  • -f : le contraire de -i, cette option force la suppression des fichiers ou répertoires, même si l'utilisateur n'a pas l'autorisation d'écriture sur les fichiers[2].

Quelques exemples :

  • rm -i images/*.jpg fichier1 : supprime 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, en demandant une confirmation 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/, en plus de tous les fichiers du répertoire courant dont le nom commence par file.

Avertissement

Un fichier effacé avec rm est effacé 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.

3.1.3. mv : déplacer ou changer le nom des fichiers

La syntaxe de la commande mv est la suivante :

mv [options] <fichier|rép.> [fichier|rép...] <destination>

Quelques options :

  • -f : force l'opération -. Aucun avertissement en cas d'écrasement d'un fichier au cours de l'opération.

  • -i : le contraire  : demande une confirmation à l'utilisateur avant d'écraser un fichier existant.

  • -v : mode verbeux qui rapporte tous les changements.

Quelques exemples :

  • mv -i /tmp/pics/*.png . : déplace tous les fichiers du répertoire /tmp/pics/ dont le nom se termine par .png vers le répertoire courant (.), en demandant une confirmation avant d'écraser un fichier existant.

  • mv toto titi : renomme le fichier toto en titi.

  • mv -vf fichier* images/ trash/ : déplace, sans demander de confirmation, tous les fichiers dans le répertoire courant dont le nom commence par fichier, ainsi que tout le répertoire images/ vers le répertoire trash/, et mentionne tous les changements effectués.

3.1.4. cp : copier des fichiers et des répertoires

cp remplace les commandes copy et xcopy de DOS et contient d'autres options. Sa syntaxe est la suivante :

cp [options] <fichier|rép.> [fichier|rép...] <destination>

Il existe une myriade d'options. Voici les plus utilisées :

  • -R : copie récursivement; obligatoire pour copier un répertoire, même vide.

  • -i : demande une confirmation avant d'écraser des fichiers.

  • -f : le contraire de -i : remplace tous les fichiers existants sans demander de confirmation.

  • -v : mode verbeux qui mentionne toutes les actions effectuées par cp.

Quelques exemples :

  • cp -i /tmp/images/* images/ : copie tous les fichiers du répertoire /tmp/images dans le répertoire images/ du répertoire courant, en demandant une confirmation avant d'écraser un fichier.

  • cp -vR docs/ /shared/mp3s/* mystuff/ : copie tout le répertoire docs du répertoire courant plus tous les fichiers du répertoire /shared/mp3s dans le répertoire mystuff situé dans le répertoire courant.

  • cp toto titi : copie le fichier toto sous le nom de titi dans le répertoire courant.

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'i-nœ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 dane un répertoire pour en effacer des fichiers, même s'il n'en est pas le propriétaire.


Tux sur Étoile de MandrakeSoft Linux est une marque déposée de Linus Torvalds. Toutes les autres marques et copyrights sont la propriété de leurs auteurs respectifs.
Sauf mention contraire, tout le contenu de ces pages et toutes les images sont Copyright MandrakeSoft S.A. et MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/