Arborescences et flux

Signaler

Observons quelques moyens de naviguer dans l’arborescence d’un système Unix, puis voyons comment manipuler les entrées/sorties et les redirections.

I. Navigation et entrées/sorties en shell Bash

1) Naviguer dans une arborescence, les chemins

Pour aller dans son HOME en utilisant un « chemin absolu », c’est-à-dire un chemin qui part de la racine, l’utilisateur bob peut faire : cd /home/bob/

Il peut aussi utiliser le raccourci ~, et faire cd ~ ou plus simplement cd

Pour remonter dans le répertoire parent, on utilise cd .. et on désigne le répertoire courant avec un point « . ».

Ainsi, si on veut copier le fichier toto qui se trouve dans le répertoire parent vers le répertoire courant, on tape : cp ../toto .

Nous utilisons cette fois un « chemin relatif », partant de la position actuelle.

2) Entrées et sorties

Entrées

La commande read permet d’effectuer une saisie utilisateur.

PB_Bac_05230_numerique1_TT_p171-212_C06_Groupe_Schema_10

Sorties

Une commande affiche normalement son résultat sur la sortie standard stdout. On peut aussi envoyer ce résultat de commande vers un fichier.

Exemple : echo "Bonjour" > salut.txt envoie le mot « Bonjour » dans le fichier salut.txt qui est créé (ou réinitialisé s’il existait préalablement), puis si on tape ensuite echo "Tout le monde" >> salut.txt, on ajoute une nouvelle ligne au fichier existant qui contient maintenant 2 lignes.

Sortie d’erreur

Les sorties d’erreur ne s’affichent pas sur la sortie standard, il existe un troisième flux, le flux de sortie d’erreur dénommé stderr.

Par exemple, s’il n’y a pas de fichier toto dans le répertoire courant, la commande :

PB_Bac_05230_numerique1_TT_p171-212_C06_Groupe_Schema_11

déclenche une erreur indiquant que le fichier toto n’existe pas. Si l’on ajoute

PB_Bac_05230_numerique1_TT_p171-212_C06_Groupe_Schema_12

on effectue la même commande, mais on redirige vers le périphérique « null » les éventuelles sorties d’erreur pour qu’elles ne s’affichent pas.

3) Les filtres, tubes et redirections

Unix permet aussi l’utilisation de filtres comme :

 wc pour compter des lignes ou des caractères ;

sort pour trier ;

cut pour extraire des colonnes dans un fichier ;

tr pour transposer ou supprimer des caractères.

Ces filtres s’utilisent généralement avec des tubes (pipes) notés « | ».

Exemple :

PB_Bac_05230_numerique1_TT_p171-212_C06_Groupe_Schema_7

compte le nombre de lignes dans le fichier monfic et :

PB_Bac_05230_numerique1_TT_p171-212_C06_Groupe_Schema_8

trie les lignes du fichier monfic selon l’ordre lexicographique puis place le résultat correspondant dans le fichier fictrie.

II. Scripts Bash

Une suite de commandes permet à l’administrateur d’automatiser certaines tâches, on parle alors de « script », stocké dans un fichier d’extensions .sh. Les arguments du script peuvent être invoqués avec 1, 2, etc., leur nombre avec # et leur liste avec *.

Voici par exemple un script efface.sh qui, au lieu d’effacer le fichier qu’on passe en argument, le déplace dans un dossier « poubelle » à la racine du HOME de l’utilisateur (la première ligne indique l’interpréteur utilisé) :

PB_Bac_05230_numerique1_TT_p171-212_C06_Groupe_Schema_9