Introduction au système d'exploitation Unix
-- mise à jour du 10 octobre 1998
[ Table ]
Chapitre 5.
Interpréteur de commandes « shell »
5.1 Ligne de commande « command line »
5.1.1 Corriger les fautes de frappe
5.1.2 Caractères spéciaux
5.2 Variables d'environnement
5.3 Variables locales
5.4 « alias »
5.5 Fichiers de configuration
5.6 Fichiers scripts
5.7 Sortie standard (« standard output ») et
entrée standard (« standard input »)
5.7.1 Redirection de la sortie standard et de
l'entrée standard
5.8 Tubes (« pipes »)
5. Interpréteur de commandes « shell"
Ce chapitre présente un programme très important pour
l'utilisation de Unix, l'interpréteur de commandes. Ce programme
possède une grande fonctionnalité qui est abordée tout au
long du chapitre.
L'interface entre l'usager et le système d'exploitation se fait
habituellement à l'aide de l'interpréteur de commandes « shell ».
L'interpréteur de commandes s'occupe, entre autres, de faire les
demandes de service (appels système) au système d'exploitation
pour l'usager. Pour Unix, c'est un programme comme les autres dont le code
exécutable est situé dans un fichier. Le nom de ce fichier est
aussi (habituellement) le nom de l'interpréteur de commandes.
Plusieurs « shell » existent aujourd'hui et les plus connus sont sh (« Bourne
shell ») et sa version améliorée bash (« Bourne again shell »), csh
(« C shell »), tcsh (« Tenex C shell »), ainsi que ksh (« korn shell »). Ce manuel
donnera l'équivalence (lorsqu'il y aura une différence) des
particularités pour bash, tcsh et ksh dans les notions couvertes.
Le « shell » de l'usager qui est lancé par défaut (« login shell »)
est celui qui est écrit dans le dernier champ du fichier /etc/passwd.
C'est lui que l'on retrouve lorsqu'on ouvre une session de travail. Puisque
c'est un prgramme comme les autres, l'usager peut exécuter un autre
shell en donnant le nom de celui-ci sur la ligne de commande.
5.1 Ligne de commande « command line »
La ligne de commande est ce qui est envoyé à
l'interpréteur de commandes en réponse à la touche ENTER.
Cette ligne est composée du nom de la commande qui peut être le
nom d'un fichier exécutable ou une commande du « shell » (« shell built-in
command »), et d'arguments, s'il y a lieu. La syntaxe est la suivante:
command [argument1] [argument2] [argument3]...[argumentN]
ENTER
Les crochets indiquent que les arguments sont optionnels.[1]
Ici donc, les crochets représentent
des éléments facultatifs (des programmes exécutables ou
des commandes pourraient exiger certains arguments). La commande et ses arguments
sont séparés entre eux par une ou plusieurs espaces ou
tabulations.
Par exemple, la ligne de commande « ls -l pfe/ » (sans les guillemets) contient
une commande et deux arguments. Un argument qui commence par le
caractère « - » est appelé une option (par convention). Une option
est souvent utile pour contôler le comportement ou l'action d'un
programme.
Un invite de commande « prompt » signale à l'usager que le « shell » est
prêt à recevoir la prochaine commande. L'invite de commande est
modifiable de plusieurs façons, ce qui permet à l'usager de le
rendre conforme à ses goûts personnels. Dans l'exemple du
chapitre « Comptes et accès », l'invite de commande était:
psycho[5:16pm]: ~ >
Dans ce « prompt », il y a le nom de l'ordinateur, l'heure entre crochets, le
caractère « : », le répertoire de travail courant (le symbole «
~ » représente le répertoire privé de l'usager) et
enfin le
caractère « > » qui sert de séparateur visuel (c'est
également le cas pour les crochets et le caractère « : »). La
ligne de commande débute à la fin du « prompt » (après le
« > » dans notre cas) et se termine avec le caractère de retour de
chariot c.-à-d. ENTER.
5.1.1 Corriger les fautes de frappe
Selon la configuration du terminal utilisé, les touches servant
à corriger la ligne de commande peuvent varier. L'usager peut voir ou
changer cette configuration avec la commande « stty » (voir plus loin la section
« Commandes de bases »). Voici la liste des touches d'édition de la ligne
de commande souvent utilisées par défaut.
CTRL-h ou DELETE ou BACKSPACE : effacer le dernier caractère.
CTRL-w : effacer le dernier mot (série de caractères sans
espaces).
CRTL-u : effacer le ligne au complet.
CTRL-f : avancer le curseur sur la ligne de commande.
CTRL-b : reculer le curseur sur la ligne de commande.
5.1.2 Caractères spéciaux
Les caractères suivants ont une signification particulière pour
l'interpréteur de commandes. Pour cela, ils ne devraient pas être
utilisés dans le nom d'un fichier, par exemple, à moins que
l'utilisateur ne soit pleinement conscient de ce qu'il fait. Ces
caractères servent à générer des noms de fichiers
ou de répertoires qui sont présents dans le répertoire de
travail ou dans celui désigné. L'interpréteur est
responsable de la substitution de ces caractères avant d'envoyer la
ligne de commande au système d'exploitation. Ces caractères
permettent à l'usager de référencer rapidement un groupe
de fichiers sans avoir à les entrer, un après l'autre, au
clavier. Ils permettent aussi de référencer des fichiers sans
avoir à se souvenir de l'épellation exacte.
Pour les caractères spéciaux qui sont introduis par la suite,
veillez considérer les fichiers suivants qui se trouvent dans un
répertoire quelconque:
memo memo2.frank monmemo
|
memo1 memo.heidi tonmemo
|
memo.pat memoBRAX sonmemo
|
memoa miamemo mem
|
memos .mem .m
|
Le caractère « ? »
L'interpréteur de commande remplace ce symbole par exactement un
caractère sauf le caractère « . » (point) s'il est situé au
début du nom (fichier invisible).
Dans le répertoire ci-haut la chaîne de caractères
« memo? » serait remplacée uniquement par:
La chaîne de caractères « memo?RAX » serait
remplacée uniquement par:
memoBRAX
La chaîne de caractères « memo?frank » serait
remplacée uniquement par:
memo.frank
La chaîne de caractères « ?m » ne serait
remplacée par aucun nom de fichier.
La chaîne de caractères (ne pas faire, danger) « .? »
serait remplacée par:
.m
mais aussi par .. qui pointe vers le répertoire
précédent. Donc cette chaîne n'est pas conseillée parce qu'elle
pourrait avoir des conséquences graves surtout si vous êtes
propriétaire du répertoire précédent. L'auteur donne plus
loin une manière de référencer les fichiers invisibles
sans problèmes.
Le caractère « * »
L'interpréteur de commande remplace ce symbole par aucun, un ou
plusieurs caractères. Comme dans le cas de « ? », il ne le remplace pas
le caractère « . » (point) s'il est situé au début d'un nom
de fichier (fichier invisible). Dans notre exemple, le caractère «
* » serait remplacée par tous les fichiers du répertoire sauf les
fichiers « .m » et « .memo ».
La chaîne de caractères « memo* » serait
remplacée par tous les fichiers dont le nom commencent exactement par
"memo", y compris le fichier « memo ».
La chaîne de caractères « memo??* » serait
remplacée uniquement par:
|
memo.pat
|
memo2.frank
|
memoBRAX
|
memo.heidi
|
Cette chaîne ne référence pas les fichiers qui ont moins de
deux caractères après la chaîne « memo ».
La chaîne de caractères « mia* » serait
remplacée uniquement par:
miamemo
Les caractères « [ ] »
Ce symbole est plus restrictif que « ? » car il demande à
l'interpréteur de le remplacer par exactement un seul des
caractères spécifiés entres les crochets.
La chaîne de caractères « memo[12.]* » serait
remplacée uniquement par:
|
memo1
|
memo2.frank
|
memo.pat
|
memo.heidi
|
La chaîne de caractères « memo[1-9]* » ([1-9] signifit
de 1 jusqu'à 9 inclusivement) serait remplacée uniquement par:
La chaîne de caractères « memo[a-zA-Z]* » serait
remplacée uniquement par:
La chaîne de caractères « [a-z]onmemo » serait
remplacée uniquement par:
La chaîne de caractères « .[a-z]* » (ATTENTION, ne pas
inclure « . » dans l'ensemble) serait remplacée uniquement par:
À ce point, le lecteur est prêt à comprendre la
manière de référencer tous les fichiers d'un
répertoire sauf « . » et « .. ». Pour cela, il faut utiliser l'une ou
l'autre des combinaisons de deux chaînes de caractères suivantes:
.[!.]* .[^.]*
|
(bash et ksh) (bash et tcsh)
|
L'usager doit utiliser la bonne chaîne de caractères selon
l'interpréteur qu'il utilise sinon des comportements
non-désirés pourraient se produire. La première
chaîne élimine « . » et « .. » mais ne référence pas des
fichiers comme « ..fichier ». La deuxième chaîne
référence tous les fichiers dont le nom ne commence pas un «
. » (point). L'usager qui n'a pas le choix et qui a des fichiers qui commencent
par deux points consécutifs, peut remplacer la première
chaîne de caractères par « .??* » à condition de ne pas avoir
de fichiers comme « .f » ou « .1 ».
Le caractère « \ »
Ce caractère indique à l'interpréteur de commande ne pas
interpréter le prochain caractère comme un caractère
spécial. Ceci est pratique quand on doit envoyer un des
caractères spéciaux à un programme. Évidemment,
avant d'envoyer la ligne de commande au système d'exploitation, le
« shell » éliminera ce caractère. Par exemple,
|
|
la chaîne \* \[ \| \< \?memo\*
|
sera interprétée comme * [ | < ?memo*
|
Le caractère « " »
Ce caractère a la même fonction que le caractère \. La
seule différence est que ce double apostrophe doit être
utilisé par paire et qu'il peut être utilisé pour une
chaîne de caractères de longueur variable. Donc,
|
|
la chaîne "?" "&" "fichier?*test" "drole[m]ent"
|
sera interprétée
comme ? & fichier?*test drole[m]ent
|
Le caractère « ; »
Ce caractère permet de séparer des lignes de commande que l'on
veut envoyer en même temps à l'interpréteur de commande.
La syntaxe est:
commande1 [arguements1] ; commande2 [arguments2] ;...
Le caractère « > »
Redirige la sortie standard d'un programme dans un fichier (voir plus loin la
section « Redirection ») au lieu de l'écran.
Le caractère « < »
Redirige l'entrée standard d'un programme à partir d'un fichier
(voir plus loin la section « Redirection ») au lieu du clavier.
Les caractères « >> »
Redirigent la sortie standard d'un programme dans un fichier (voir plus loin la
section « Redirection ») au lieu de l'écran. Cependant, cette fois-ci le
fichier sera augmenté des données (concaténation) sortant
du programme au lieu d'être écrasé (s'il existe).
Le caractère « | »
C'est le symbole du tube (« pipe ») qui sera vu dans la
section « tube ».
Le caractère « & »
Ce caractère indique à l'interpréteur de faire
l'exécution de la commande qui précède en
arrière-plan (« background »). Ce concept sera abordé dans le
chapitre « Processus et contrôle ».
Le caractère « $ »
Ce caractère indique à l'interpréteur que le mot qui suit
est le nom d'une variable d'environnement et qu'il faut utiliser son contenu
(voir l'exemple de la commande « echo » dans la section « commandes
de base »).
Le caractère « ~ »
Ce caractère référence un répertoire privé
quelconque. Lorsqu'il est suivit d'une espace ou du caractère
"/", il signifit le répertoire privé de l'usager
courant. S'il est suivant d'autres caractères imprimables, il
référence le répertoire privé d'un autre usager.
Par exemple,« ~heidi » signifie le répertoire
privé de l'usager heidi.
5.2 Variables d'environnement
Une liste de variables qui sont dites d'environnement sont gérées
par l'interpréteur de commandes. Ces variables peuvent être lues
par d'autres programmes exécutées par l'usager ou utilisées
par le « shell » lui-même. Ces variables peuvent être utiles pour
changer certaines valeurs par défaut ou modifier le comportement d'un
programme sans avoir à spécifier la même option à
chaque fois, etc.
Par exemple, supposons que l'usager veut lire les bases de messages (« news »,
voir le chapitre « Usenet ») situées sur le serveur STEP dont l'adresse
est « step.polymtl.ca ». L'usager utilise le programme « rtin » (rtin n'est pas
l'unique programme pour lire les bases de messages) pour accéder
à ces messages. Par défaut, le programme en question
accède au « news » du serveur dont le nom est écrit dans le fichier
/etc/nntpserver à moins qu'une autre adresse ne soit
spécifiée par le biais de la variable d'environnement NNTPSERVER.
Donc, avant de donner la commande « rtin » à l'interpréteur de
commandes, il entrera au clavier la commande (selon le « shell »
utilisé):
setenv NNTPSERVER step.polymtl.ca (tcsh)
ou
export NNTPSERVER=step.polymtl.ca (bash et ksh)
Remarquez l'absence d'espaces sur les côtés du caractère
« = ».
Ensuite, il pourra entrer la commande « rtin » pour lire les bases de messages du
serveur STEP. La syntaxe générale des commandes pour modifier
les variables d'environnement est:
setenv nom_de_la_variable valeur (tcsh)
ou
export nom_de_la_variable=valeur (bash et ksh)
Pour effacer une variable les commandes sont:
unsetenv nom_de_la_variable (tcsh)
ou
unset nom_de_la_variable (bash et ksh)
Les variables d'environnement demeurent actives pour toute le dureé d'une
session de travail. Par défaut, certaines variables d'environnement
sont initialisées pour l'utilisateur à l'ouverture d'une session.
Pour voir le contenu et le nom de ces variables on peut faire les commandes:
setenv (tcsh)
ou
printenv (ksh, tcsh)
ou
env (tous les « shells », utilitaire)
Voici une courte liste de variables d'environnement populaires sous Unix.
PATH
Identifie la liste des répertoires à chercher, en ordre, pour
trouver le fichier exécutable donné sur la ligne de commande. Ces
répertoires sont examinés un à la suite de l'autre et la
recherche se termine lorsque le fichier est trouvé ou que la liste des
répertoires contenue dans la variable est terminée. La seule
exception est quand la commande en question est une commande spéciale de
l'interpréteur (« shell built-in command »). À ce moment, le
contenu de la variable PATH n'est évidemment pas examiné.
MANPATH
Liste des répertoires de recherche pour l'utilitaire « man ». Ce
programme sera examiné dans le chapitre « comment obtenir de l'aide ».
SHELL
Son contenu indique l'interpréteur de commande présentement
utilisé.
HOME
Nom du répertoire privé de l'usager.
MAIL
Nom du fichier avec son chemin dans lequel le courrier de l'usager est
placé.
TERM
Type du terminal. La liste des terminaux supportés par le
système et leurs possibilités se retrouve dans le fichier
/etc/termcap.
OSTYPE
Nom du système d'exploitation qui roule sur l'ordinateur.
USER
Nom du détenteur du compte associé à la présente
session.
HOST
Nom de l'ordinateur sur lequel les commandes sont exécutées.
PWD
Chemin du réperoitre de travail courant réel (sans liens
symboliques).
Le nom des variables d'environnement et leur contenu ne sont pas
réglementés par Unix. Un usager peut écrire un programme
qui utilise la variable MA_VARIABLE_A_MOI dont le contenu n'est pas important
au point de vue de l'interpréteur de commande. Ceci veut aussi dire que
l'usager ne sera pas averti par un message d'erreur s'il fait une faute de
frappe quand il veut changer le contenu d'une variable. La nouvelle variable
sera créée mais n'aura sans doute aucune signification (à
moins d'un hasard) pour les programmes qui seront utilisés par la suite.
5.3 Variables locales
L'interpréteur de commande possède des variables locales qui
gèrent certaines de ses fonctions (ou comportement) ou qui contiennent
certains renseignements utiles. Ces variables ne sont pas accessibles par
d'autres programmes car elles sont locales à l'interpréteur. Ces
variables sont spécifiques à l'interpréteur utilisé
et ne seront pas élaborées dans ce manuel. Pour voir le nom et
le contenu des variables locales, il faut donner la commande « set ». Pour en
savoir plus sur les variables locales, l'utilisateur peut examiner diverses
documentations comme les « man pages » (voir le chapitre « Comment obtenir de
l'aide ») concernant le « shell » qu'il utilise. En ce qui concerne bash et ksh,
les variables d'environnement sont des variables locales qui sont
exportées avec la commande « export ». Ceci revient à dire que
toutes leurs variables d'environnement sont aussi des variables locales mais
que le contraire n'est pas vrai. Pour créer des variables sous bash et
ksh qui demeureront locales, la commande est:
nom=valeur (bash et ksh)
Par la suite, cette variable peut être exportée avec la
commande:
export nom (bash et ksh)
En ce qui concerne tcsh, la commande pour créer des variables locales
est:
set nom=valeur (tcsh)
Pour effacer des variables locales, la commande est:
unset nom (pour tous les « shells »)
5.4 « alias »
Tous les interpréteurs (sauf sh) possèdent cette commande qui
permet la substitution d'une chaîne de caractères par une autre.
Cette commande est pratique pour éviter l'écriture de longues
commandes qui incluent plusieurs arguments ou si l'usager veut toujours
utiliser une option particulière sans avoir à la
spécifier à chaque fois. La commande « alias », sans argument,
permet de voir ceux qui sont déjà créés (certains
le sont par défaut). Pour créer des alias, les syntaxes sont:
alias chaine1 chaine2 (tcsh)
alias chaine1=chaine2 (bash et ksh)
Remarquer l'absence d'espaces sur les côtés du caractère
« = ».
Ensuite il suffit d'entrer le première chaîne de caractères
(sur la ligne de commande, par exemple) et l'interpréteur de commandes
la susbtituera par la deuxième. La commande pour enlever des alias
créés auparavant est « unalias » qui prend en argument la
chaîne de caractères impliquée (chaine1 dans l'exemple de
syntaxe précédente). Cependant, pour indiquer à
l'interpréteur de ne pas faire la substitution de la chaîne de
caractères, il suffit de placer le caractère « \ » devant le nom
(\chaîne1 dans la syntaxe précédente).
5.5 Fichiers de configuration
Des fichiers de configuration existent pour tous les « shells ». Ces fichiers
permettent de les configurer automatiquement au début d'une session de
travail (ou au lancement d'un nouveau « shell » à partir de la ligne de
commande) sans répétition de plusieurs commandes afin de rendre
le « shell » conforme aux goûts de l'usager. Ces fichiers doivent se
trouver dans le répertoire privé du détenteur du compte.
Il y a aussi des fichiers de configuration globaux qui sont
référencés par les « shells », et ce, peu importe les
fichiers de configuration personnels des usagers. Les noms de ces fichiers
sont:
bash
au démarrage (dans cette ordre):
/etc/profile (lors de l'ouverture de la session -- global)
.bash_profile (lors de l'ouverture de la session
.profile (lors de l'ouverture de la session, si aucun .bash_profile n'est présent)
.bashrc (ou pour les « shells » non-interactifs sauf celui par défaut)
.bash_login (selon la version)
$ENV (toujours)
à la fin:
.bash_logout (si c'était le « shell » par défaut)
tcsh
au démarrage (dans cette ordre):
/etc/csh.cshrc (toujours global)
/etc/csh.login (lors de l'ouverture de la session -- global)
.tcshrc (toujours)
.cshrc (s'il n'y a pas de .tcshrc)
.login (lors de l'ouverture de la session)
à la fin:
.logout (si c'était le « shell » par défaut)
ksh
au démarrage (dans cette ordre):
/etc/profile (lors de l'ouverture de la session -- global)
.profile (lors de l'ouverture de la session)
$ENV (toujours, à moins d'utiliser l'option « -p »)
à la fin:
Toute commande ou fichier spécifié par la commande:
trap « commande » 0
$ENV veut dire le contenu de cette variable. Le contenu doit être le nom
d'un fichier.
Voici un exemple de fichier de configuration personnel:
##################### fichier --->>>> .tcshrc
############################
#### variables locales
set autolist
set history=30
set savehist = 30
if ($?prompt) then
set prompt="%n%U[%@]%u:%B %~>%b"
endif
#### variables d'environnement
setenv PATH /usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/openwin/bin:. setenv
NNTPSERVER 132.207.4.15
setenv LESSCHARSET latin1
#### commandes
umask 077 # mask de permissions sur les fichiers
créés source .config # a condition que le fichier
».config » existe date >> login.log
#### aliases
alias ls ls-F
alias h history
alias vt setenv TERM vt100
alias dir ls -al
alias .. 'cd ..'
alias step 'rlogin -l laforge step.polymtl.ca'
###################### fin du fichier .tcshrc ###########################
Si l'usager fait des modifications dans un fichier de configuration, il doit
exécuter la commande « source » pour que le « shell » puisse les prendre en
considération immédiatement. Cette commande prend comme argument
le nom du fichier de configuration. La syntaxe est la suivante:
source fichier_de_config (bash, tcsh et ksh
[2])
Exemples.
source .tcshrc (tcsh)
source .bash_profile (bash)
source .profile (ksh)
5.6 Fichiers scripts
Un fichier script est un fichier qui contient des commandes qui sont
exécutées par le « shell »[3]. Ces
commandes peuvent être les mêmes que celles qu'on entre à la
ligne de commande. En plus, ces fichiers contiennent souvent des instructions
de contrôle comme les boucles, les instructions conditionnelles, etc. La
syntaxe utilisée par ces instructions dépend du « shell »
utilisé et c'est pourquoi le manuel ne donnera pas la théorie
à ce sujet. Les fichiers de configuration sont aussi des fichiers
scripts. On peut également entrer des instructions de contrôle
sur la ligne de commande. À titre d'exemple, voici un fichier script
quelconque.
Figure 5.1 Fichier script quelconque.
Dans le fichier de la figure 5.1, on peut voir sur la première ligne le
symbole « #! ». Ce symbole indique à l'interpréteur de
commandes que le programme qui suit sur la même ligne doit être
utilisé pour effectuer les commandes qui sont écrites dans le reste
du fichier. Le programme en question n'est pas toujours un
«shell». On peut utiliser tout logiciel qui comprend les commandes
qui suivent dans le fichier.
5.7 Sortie standard (« standard output ») et
entrée standard (« standard input »)
La sortie standard d'un programme ou d'un utilitaire est l'endroit où
les informations sont envoyées. Un programme en exécution qui
envoie des chaînes de caractères à sa sortie standard, n'a
aucune idée de la destination réelle. La destination peut
être l'écran du terminal (par défaut) où redirigée
dans un fichier quelconque. Dans la même optique, l'entrée
standard est la provenance des informations qui peut être le clavier du
terminal (par défault) ou un fichier.
5.7.1 Redirection de la sortie standard et de l'entrée standard
Le symbole « > » indique à l'interpréteur de rédiriger la
sortie standard d'un programme vers un fichier. La syntaxe est la suivante:
programme [arguments] > fichier
Si le fichier n'existe pas, il sera créé. S'il existe, l'ancien
contenu sera détruit.
Le symbole « >> » permet aussi de rediriger la sortie standard dans un
fichier mais sans que celui-ci ne soit écrasé, s'il existe. Les
informations envoyées seront tout simplement ajoutées au contenu
actuel du fichier.
Le symbole « < » indique à l'interpréteur de lire
l'entrée standard d'un programme à partir d'un fichier. La
syntaxe est la suivante:
programme [arguments] < fichier
Exemple.
laforge[3:52pm]: ~>cat exemple
bonjour
122
voiture
avion
Dormir pour toujours
laforge[3:52pm]: ~>sort -r exemple > temp
laforge[3:52pm]: ~>cat temp
voiture
bonjour
avion
Dormir pour toujours
122
laforge[3:52pm]: ~>cat exemple >> temp
laforge[3:52pm]: ~>cat temp
voiture
bonjour
avion
Dormir pour toujours
122
bonjour
122
voiture
avion
Dormir pour toujours
laforge[3:52pm]: ~>mail heidi < temp
laforge[3:52pm]: ~> _
Les commandes utilisées dans l'exemple sont expliquées dans le
chapitre « Commmandes de base ». La denière commande envoie le contenu du
fichier temp à heidi par courrier électronique.
5.8 Tubes (« pipes »)
Le symbole « | » représente un tube (« pipe »). Un tube indique à
l'interpréteur de rédiriger la sortie standard d'un programme
directement à l'entré standard d'un autre. La syntaxe est la
suivante:
programme_a [arguments] | programme_b [arguments]
Cette ligne de commande a le même effet que les trois suivantes:
programme_a [arguments] > fichier_temporaire
programme_b [arguments] < fichier_temporaire
rm fichier_temporaire
La ligne de commande peut contenir plusieurs tubes dont la sortie standard est
redirigée vers l'entrée standard du programme suivant. Un
programme situé entre deux tubes est appelé un filtre. La
manière d'utiliser une cascade de tubes est la suivante:
prog1 [arg1] | prog2 [arg2] | prog3 [arg3] |...| progN [argN]
Dans ce cas, les programmes prog2 à progN-1 sont appelés des
filtres puisqu'ils modifient les données qui leur sont envoyées du
programme précedent, avant de les transmettre au prochain.
Il est à noter que les tubes peuvent être utilisés en
combinaison avec des redirections de sorties ou d'entrées standards.
Exemples.
cat fichier_exemple | sort -r | lpr
ls -lR |awk ´{print $5,$9}´|sort -nr (à
essayer!)
ps -aux | grep heidi
programme [arguments] | more
Le dernier exemple est très pratique pour contrôler le
défilement trop rapide des informations envoyées à
l'écran par un programme quelconque.
Chapitre 5. Interpréteur de commandes « shell »
[ Table | Début de page ]
[1] Ceci dépend de la commande
effectuée.
[2] Avec certaines versions de ksh, la commande
« source » doit être remplacé par « . » (un
point).
[3] Ou un autre programme.