2005-05-31 13:33:37 +02:00
|
|
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
|
<!DOCTYPE html
|
|
|
|
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|
|
|
|
"tuteurs://DTD/tml.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<title>Entrée/sortie</title>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h1>Entrée, sortie, redirection</h1>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h2><a name="redirections">Entrée et sortie</a></h2>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h3>Que sont l'entrée et la sortie d'une commande ?</h3>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Un programme consiste à traiter des données, et à renvoyer des données
|
|
|
|
|
transformées : il transforme des informations, et c'est pourquoi
|
2005-05-31 13:33:37 +02:00
|
|
|
|
l'on parle d'<em>informatique</em>.</p>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p> Prenons un programme <code>hachoir</code>, par exemple : on y
|
2005-05-31 13:33:37 +02:00
|
|
|
|
fait entrer des choses, elles sortent sous une autre forme, et dans
|
2009-09-20 12:27:14 +02:00
|
|
|
|
l'intervalle, elles subissent des transformations régulières. Par
|
|
|
|
|
exemple, on fait entrer une vache, il en ressort du steak haché ;
|
|
|
|
|
on y fait entrer des carottes, il en ressort des carottes rapées.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Deux concepts permettent de modéliser cette transformation
|
|
|
|
|
d'informations : les concepts d'entrée et de
|
|
|
|
|
sortie. L'<strong>entrée</strong>, c'est la vache ou les carottes ;
|
|
|
|
|
la <strong>sortie</strong>, c'est le steak haché ou les carottes
|
|
|
|
|
rapées.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Sortie standard et sortie d'erreur</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Mais cette première distinction entre entrée et sortie ne suffit pas,
|
|
|
|
|
car la sortie d'un programme, c'est-à-dire les messages qu'il renvoie,
|
|
|
|
|
sont de deux ordres : il y a les <em>messages normaux</em> relevant
|
|
|
|
|
de la transformation d'informations (par exemple le steak haché ou les
|
|
|
|
|
carottes rapées), mais il y a aussi des <em>messages d'erreur</em>.</p>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p> Par exemple, si vous mettez, sur le tapis roulant qui mène au
|
2005-05-31 13:33:37 +02:00
|
|
|
|
hachoir, un objet trop gros pour y rentrer, le hachoir, s'il est bien
|
2009-09-20 12:27:14 +02:00
|
|
|
|
conçu, devra vous prévenir qu'il n'arrive pas à hacher un objet si
|
2005-05-31 13:33:37 +02:00
|
|
|
|
gros. Et ce message, quoiqu'il sorte aussi bien du hachoir que le steak
|
2009-09-20 12:27:14 +02:00
|
|
|
|
haché, ne doit pas être traité de la même façon à sa sortie, et n'est
|
|
|
|
|
pas suivi des mêmes conséquences. C'est pourquoi l'on distingue la
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<strong>sortie standard</strong> et la <strong>sortie d'erreur</strong>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h3>Comportement par défaut</h3>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Pour résumer, chaque commande a donc :</p>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<ul>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li> une <em>entrée standard</em>, </li>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<li> une <em>sortie standard</em> et </li>
|
|
|
|
|
<li> une <em>sortie d'erreur</em>.</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p> Par défaut, l'entrée standard est le clavier, la sortie standard est
|
|
|
|
|
l'écran, et la sortie d'erreur est aussi l'écran.</p>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p> C'est sur le clavier que vous tapez ; ce que vous tapez et ce
|
|
|
|
|
que renvoient les programmes s'inscrit à l'écran ; les messages
|
|
|
|
|
d'erreur renvoyés par les programmes s'affichent à l'écran.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h2>Les redirections</h2>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Mais il ne s'agit là que du comportement par défaut, et pas d'un
|
|
|
|
|
comportement obligatoire. Vous pouvez tout à fait orienter différemment
|
2005-05-31 13:33:37 +02:00
|
|
|
|
vos programmes.</p>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p> Par exemple, si vous donnez une vache comme entrée au hachoir, vous
|
|
|
|
|
pouvez orienter la sortie vers une imprimante (au lieu de l'écran,
|
|
|
|
|
proposé par défaut), et vous imprimerez ainsi du steak haché. </p>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Ou encore, vous pouvez donner un plant de carottes comme entrée au
|
|
|
|
|
programme <code>cueillette</code>, et envoyer la sortie (c'est-à-dire
|
2005-05-31 13:33:37 +02:00
|
|
|
|
les carottes cueillies) au programme <code>hachoir</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Nous allons étudier successivement :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li> comment rediriger la sortie d'une commande vers un
|
2009-09-20 12:27:14 +02:00
|
|
|
|
fichier ;</li>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li> comment ajouter la sortie d'une commande à la fin d'un
|
|
|
|
|
fichier ;</li>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li> comment utiliser un fichier comme entrée d'une commande ;</li>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li> comment utiliser la sortie d'une commande comme entrée d'une
|
2005-05-31 13:33:37 +02:00
|
|
|
|
autre.</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Ces différentes configurations esquissent la grammaire d'une utilisation
|
|
|
|
|
très performante des fonctionnalités du shell ; <strong>vous saurez
|
|
|
|
|
en effet comment brancher un fichier sur l'entrée ou sur la sortie d'une
|
|
|
|
|
commande, et comment brancher la sortie d'une commande sur l'entrée
|
2005-05-31 13:33:37 +02:00
|
|
|
|
d'une autre</strong>. Il n'y a pas d'autre combinaison possible.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h3>Rediriger la sortie dans un fichier : <code>></code></h3>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
On peut <em> rediriger</em> la sortie standard d'une commande vers un
|
2009-09-20 12:27:14 +02:00
|
|
|
|
fichier (caractère « <code>></code> »). Le résultat de la
|
|
|
|
|
commande sera placé dans le fichier au lieu de s'afficher sur l'écran.
|
|
|
|
|
Exemple :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre><span class="prompt">chaland ~ $</span> ls -l > foo</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Le résultat de <code>ls -l</code> ne s'affiche pas à l'écran, mais il est placé
|
2005-05-31 13:33:37 +02:00
|
|
|
|
dans le fichier <code>foo</code>. On peut alors taper
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre><span class="prompt">chaland ~ $</span> less foo</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
(ou <code>more foo</code>)
|
|
|
|
|
pour lire le fichier page par page.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h3>Ajouter la sortie à un fichier : <code>>></code></h3>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p> On veut parfois ajouter la sortie d'un programme à un fichier, sans
|
|
|
|
|
effacer ce qui précède. Or, par défaut, si l'on tape plusieurs fois
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre><span class="prompt">chaland ~ $</span> ls -l > foo</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
à chaque fois, le contenu antérieur du fichier <code>foo</code> est
|
|
|
|
|
écrasé par le contenu ultérieur.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Pour éviter cela, il existe l'outil de redirection >>. Ainsi, si
|
2005-05-31 13:33:37 +02:00
|
|
|
|
vous tapez plusieurs fois
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre><span class="prompt">chaland ~ $</span> ls -l >> foo</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
le fichier <code>foo</code> contiendra <em>à la suite</em> tout ce que
|
|
|
|
|
vous a renvoyé la commande.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h3>Rediriger l'entrée : <code><</code></h3>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
On peut aussi rediriger l'entrée standard d'une commande (caractère
|
|
|
|
|
« <code><</code> »). La commande lira alors le fichier au
|
|
|
|
|
lieu du clavier. Exemple :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre><span class="prompt">chaland ~ $</span> elm leroy < foo</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
envoie par mail à Xavier Leroy le résultat de la commande <code>ls -l</code> de
|
|
|
|
|
tout à l'heure.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
On peut aussi taper <code>more < foo</code> qui est équivalent à
|
|
|
|
|
<code>more foo</code> car <code>more</code> sans argument lit son entrée
|
2005-05-31 13:33:37 +02:00
|
|
|
|
standard et l'affiche page par page sur le terminal.
|
|
|
|
|
</p>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h3>Connecter la sortie d'une commande sur l'entrée d'une autre :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<code>|</code></h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Il devient rapidement ennuyeux de taper :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre><span class="prompt">chaland ~ $</span> ls -l > foo
|
|
|
|
|
<span class="prompt">chaland ~ $</span> less < foo
|
|
|
|
|
<span class="prompt">chaland ~ $</span> rm foo</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
On peut se passer du fichier intermédiaire (<code>foo</code> dans notre
|
|
|
|
|
exemple) grâce à un <em>pipe</em> (caractère
|
|
|
|
|
« <code>|</code> »). Un pipe connecte directement la sortie
|
|
|
|
|
standard d'une commande sur l'entrée standard d'une autre commande.
|
|
|
|
|
Exemple : pour afficher page par page la liste des fichiers du
|
|
|
|
|
répertoire courant, faire
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre><span class="prompt">chaland ~ $</span> ls -l | less</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Le pipe, ou tube, est d'un usage très courant, et rend beaucoup de
|
2005-05-31 13:33:37 +02:00
|
|
|
|
services.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h2>Succès et erreur</h2>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
On a parfois besoin de savoir si une commande a réussi ou non avant d'en
|
2005-05-31 13:33:37 +02:00
|
|
|
|
lancer une autre. Les indicateurs <code>&&</code> et
|
|
|
|
|
<code>||</code> permettent, respectivement, de lancer une commande si
|
2009-09-20 12:27:14 +02:00
|
|
|
|
(et seulement si) la précédente a réussi ou échoué.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Par exemple, si j'ai un fichier <code>foo</code>, j'obtiens :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">chaland ~ $</span> ls foo && echo "J'ai un fichier foo."
|
|
|
|
|
foo
|
|
|
|
|
J'ai un fichier foo.
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Si je n'ai pas de fichier <code>foo</code>, le message ne s'affiche
|
2009-09-20 12:27:14 +02:00
|
|
|
|
pas. En revanche, si je tape alors :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">chaland ~ $</span> ls foo || echo "Je n'ai pas de fichier foo."
|
|
|
|
|
ls: foo: No such file or directory
|
|
|
|
|
Je n'ai pas de fichier foo.
|
|
|
|
|
</pre>
|
|
|
|
|
|
2005-09-08 01:00:03 +02:00
|
|
|
|
<p>
|
|
|
|
|
Pour en savoir plus sur les structures de test, consultez la page sur
|
2009-09-20 12:27:14 +02:00
|
|
|
|
les <a href="test.html">tests et calculs arithmétiques</a>.
|
2005-09-08 01:00:03 +02:00
|
|
|
|
</p>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Redirection des sorties standard et d'erreur</h2>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Il est parfois utile de rediriger la sortie standard et la sortie
|
2009-09-20 12:27:14 +02:00
|
|
|
|
d'erreur vers un même endroit. Pour cela, on utilise le motif
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<code>2>&1</code> avant la redirection.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<table class="tableau">
|
|
|
|
|
<tr>
|
|
|
|
|
<th> Fonction </th>
|
|
|
|
|
<th> Bourne shell (sh, bash) </th>
|
|
|
|
|
<th> Z-shell (zsh) </th>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<td>Redirige la sortie d'erreur (2) et la sortie standard (1) sur l'entrée
|
2005-05-31 13:33:37 +02:00
|
|
|
|
de la commande suivante</td>
|
|
|
|
|
<td><code>2>&1 |</code></td>
|
|
|
|
|
<td><code> |&</code></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>Redirige la sortie d'erreur et la sortie standard dans un fichier</td>
|
|
|
|
|
<td><code>2>&1 ></code></td>
|
|
|
|
|
<td><code> >&</code></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>Redirige la sortie d'erreur et la sortie
|
2009-09-20 12:27:14 +02:00
|
|
|
|
standard à la fin d'un fichier existant</td>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<td><code>2>&1 >></code></td>
|
|
|
|
|
<td><code>>>&</code></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<h3>Remarques</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Normalement, une redirection avec <code>></code> sur un fichier qui
|
2009-09-20 12:27:14 +02:00
|
|
|
|
existe déjà efface le contenu du fichier avant d'y placer le résultat de la
|
2005-05-31 13:33:37 +02:00
|
|
|
|
commande. Les shells ont des options pour demander confirmation, ou
|
|
|
|
|
refuser d'effacer le fichier.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Une ligne de commandes contenant des <code>|</code> s'appelle un pipe-line.
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Quelques commandes souvent utilisées dans les pipe-lines sont:
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
<li><a href="&url.tuteurs;unix/fichiers.html#less">more</a> (ou
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<code>less</code>, bien plus évolué) à la fin du pipe-line, affiche le
|
|
|
|
|
résultat page par page, pour laisser le temps de le lire. </li>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
|
|
|
|
|
<li><a href="&url.tuteurs;unix/divers.html#wc">wc</a> compte le nombre
|
2009-09-20 12:27:14 +02:00
|
|
|
|
de caractères, de mots et de lignes de son entrée. </li>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
|
|
|
|
|
<li><a href="&url.tuteurs;unix/chercher.html#grep">grep</a> cherche dans
|
2009-09-20 12:27:14 +02:00
|
|
|
|
son entre les lignes contenant un mot donné, et les écrit sur sa sortie.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</li>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
|
|
|
|
|
<li><a href="&url.tuteurs;unix/exercices/enchainer.html#syst">sort</a>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
lit toutes les lignes de son entrée, les trie, et les écrit dans l'ordre
|
|
|
|
|
sur sa sortie. Par défaut l'ordre est alphabétique. </li>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a href="&url.tuteurs;unix/fichiers.html#head">tail</a> écrit sur sa
|
|
|
|
|
sortie les dernières lignes de son entrée. </li>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a href="&url.tuteurs;unix/fichiers.html#head">head</a> écrit sur sa
|
|
|
|
|
sortie les premières lignes de son entrée. </li>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
|
|
|
|
|
<li><a href="&url.tuteurs;unix/fichiers.html#cat">cat</a> copie
|
|
|
|
|
plusieurs fichiers sur sa sortie. </li>
|
|
|
|
|
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<li><code>fold</code> coupe les lignes de son
|
2009-09-20 12:27:14 +02:00
|
|
|
|
entrée à 80 caractères et écrit le résultat sur sa sortie.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</li>
|
2005-07-05 09:18:06 +02:00
|
|
|
|
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h3>Exemples</h3>
|
|
|
|
|
|
|
|
|
|
<pre>cat glop buz > toto</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Concatène les fichiers <code>glop</code> et <code>buz</code> et place le
|
|
|
|
|
résultat dans <code>toto</code>.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>wc -w /usr/dict/words</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Affiche le nombre de mots du dictionnaire Unix.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>grep gag /usr/dict/words | tail</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Affiche les 10 derniers mots du dictionnaire qui contiennent la chaîne
|
2005-05-31 13:33:37 +02:00
|
|
|
|
<code>gag</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h2>Récapitulatif</h2>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
La panoplie complète des redirections est la suivante :
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><code>></code> : change la sortie standard de la commande pour la placer
|
2005-05-31 13:33:37 +02:00
|
|
|
|
dans un fichier.
|
|
|
|
|
</li>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><code><</code> : change l'entrée standard de la commande pour la prendre
|
2005-05-31 13:33:37 +02:00
|
|
|
|
dans un fichier.
|
|
|
|
|
</li>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><code>|</code> : branche la sortie standard de la commande de gauche sur
|
|
|
|
|
l'entrée standard de la commande de droite.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</li>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><code>>></code> : change la sortie standard pour l'ajouter à la fin
|
2005-05-31 13:33:37 +02:00
|
|
|
|
d'un fichier existant.
|
|
|
|
|
</li>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><code>||</code> : exécuter la commande suivante si la première a
|
|
|
|
|
échoué.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</li>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><code>&&</code> : n'exécuter la commande suivante que si la
|
|
|
|
|
première a réussi.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p>Vous êtes maintenant en mesure de faire ces <a
|
2005-05-31 13:33:37 +02:00
|
|
|
|
href="&url.tuteurs;unix/exercices/">exercices</a> pour vous
|
2009-09-20 12:27:14 +02:00
|
|
|
|
entraîner. Ou bien vous pouvez revenir à la <a href="index.html">page
|
|
|
|
|
centrale sur le shell</a>, d'où vous pourrez vous orienter vers d'autres
|
2005-09-08 01:00:03 +02:00
|
|
|
|
parties du cours.</p>
|
2005-05-31 13:33:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="metainformation">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez.
|
|
|
|
|
Modifications : Nicolas George, Baptiste Mélès.
|
|
|
|
|
Dernière modification le <date value="$Date: 2007-07-17 10:03:41 $" />.
|
2005-05-31 13:33:37 +02:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|