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.
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 :
déclenche une erreur indiquant que le fichier toto n’existe pas. Si l’on ajoute
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 :
compte le nombre de lignes dans le fichier monfic et :
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é) :