next up previous contents index
suivant: Les fonctions monter: Les listes de commandes précédent: Les listes de commandes   Table des matières   Index

Les listes de commandes

Une liste de commandes est une séquence d'un ou plusieurs pipes ou commandes séparés par l'un des caractères suivants :

Caractère Signification
   
; Le shell attend que l'expression précédant le caractère « ; » soit terminé pour passer à la suivante.
#13217#> @&&
#13218#>  
|| Le shell ne passe qu'au pipe suivant seulement si le premier a renvoyé une valeur non nulle comme code de retour (code « FALSE »).

Exemple 10..1 :


ls -lR | wc -l; more /usr/lib/sendmail/sendmail.cf
ls /usr/bin; cat /etc/passwd
find / -print >big.file & ls /usr/bin
[ -f /etc/passwd] && cat /etc/passwd

Chaque liste de commandes peut être regroupée de deux façons :


Syntaxe Signification
   
(liste) Exécute la liste dans un sous shell sans perturber le contexte du shell courant.
{liste ;} Exécute la liste dans le shell courant. Aucun sous shell n'est créé.

Exemple 10..2 :


L'exemple ci-après permet de recopier le contenu d'un répertoire vers un autre. Pour cela, on utilise la commande « tar(1) ». L'option « -c » permet de créer une archive, l'option « -x » permet d'extraire les informations. Lorsque l'option « -f » est précisiée sur la ligne de commande, le premier argument de la commande « tar » est le nom du fichier où l'archive doit être écrite ou lue. Le fichier spécifié ici est « - » indiquant l'entrée ou la sortie standart. Lors de la création d'une archive, la commande « tar » admet au moins un argument : le fichier à sauvegarder ou bien le nom d'un répertoire contenant le point de l'arborescence à sauvegarder.

cd /home/users/schmoll; tar -cvf - . | (cd /tmp/trf; tar -xvf -)

L'expression précédente peut se décomposer en trois étapes :
  1. Changement de répertoire.
  2. Création d'un processus dans lequel la commande « tar » doit s'exécuter. Celle-ci crée une archive contenant l'arborescence du répertoire courant (le répertoire « /home/users/schmoll ») et l'envoie sur sa sortie standard.
  3. Création d'un nouveau processus dont l'entrée standard est redirigée sur la sortie standard de la commande « tar » précédente. Ce sous processus se déplace dans l'arborescence (répertoire « /tmp/trf ») et crée un nouveau sous processus pour exécuter une autre commande « tar » lisant le contenu de l'archive à extraire sur l'entrée standard.

Figure: Enchaînement de commandes et modèle d'exécution
\begin{figure}
\setlength{\unitlength}{0.92pt}
\begin{picture}(241,74)
\thinl...
...ramebox{(}0,0){cd /home/users/schmoll; tar -cvf - .}}
\end{picture}
\end{figure}

En conclusion, le premier membre de l'expression (à gauche du symbole « | ») prend le contenu du répertoire « /home/users/schmoll » et l'envoie sur sa sortie standard via le format d'archive « tar ». Le second membre change de répertoire et restaure le contenu du répertoire courant. Cette expression se résume donc au schéma [*].


next up previous contents index
suivant: Les fonctions monter: Les listes de commandes précédent: Les listes de commandes   Table des matières   Index
baudry@esme.fr