<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1></h1>
<nav>
<ul>
<li><a href="/output/README.html">Accueil</a></li>
<li><a href="/output/unix/README.html">UNIX</a></li>
<li><a href="/output/bases/README.html">Bases</a></li>
<li><a href="/output/commandes/README.html">Commandes</a></li>
<li><a href="/output/shell/README.html">Shell</a></li>
<li><a href="/output/sed/README.html">Sed</a></li>
<li><a href="/output/make/README.html">Make</a></li>
</ul>
</nav>
</header>
<div class="content">
<h1 id="redirections-et-pipes">Redirections et Pipes</h1>
<h2 id="redirections">Redirections</h2>
<h3 id="accès-en-lecture-par-redirection-de-lentrée">Accès en lecture par redirection de l'entrée</h3>
<figure>
<img src="image%20manquante" alt="entrée et sortie standard d'une commande Unix" /><figcaption>entrée et sortie standard d'une commande Unix</figcaption>
</figure>
<h3 id="entrées-sorties-standard">Entrées sorties standard</h3>
<p>Toute commande Unix peut utiliser :</p>
<ul>
<li>l'entrée standard (stdin)</li>
<li>la sortie standard (stdout)</li>
</ul>
<p>Valeurs implicites (pour un poste de travail) :</p>
<ul>
<li>stdin : le clavier</li>
<li>stdout : l'écran</li>
</ul>
<h3 id="redirection-de-lentrée-standard-vers-un-fichier">Redirection de l'entrée standard vers un fichier</h3>
<figure>
<img src="image%20manquante" alt="redirection de l'entrée standard d'une commande unix" /><figcaption>redirection de l'entrée standard d'une commande unix</figcaption>
</figure>
<p>Soit :</p>
<ul>
<li><code>aUnixCommand</code> = un programme Unix de type filtre</li>
<li><code>myFile</code> = un fichier</li>
</ul>
<p>La commande shell suivante : <code>aUnixCommand < myFile</code></p>
<p>appliquera le programme <code>aUnixCommand</code> au fichier <code>myFile</code> et affichera le résultat sur l'écran.</p>
<h2 id="redirections-et-quelques-commandes-unix">Redirections et quelques commandes Unix</h2>
<h3 id="cat">cat</h3>
<p>Utilisée sans paramètres, recopie le fichier en entrée sur la sortie standard :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">cat</span> <span class="op"><</span> Formation/TP1/exo.txt</code></pre></div>
<p>recopie sur l'écran le fichier <code>Formation/TP1/exo.txt</code>.</p>
<h3 id="cat---avec-paramètres">cat - avec paramètres</h3>
<p>La commande <code>cat</code> peut s'utiliser avec une liste de fichiers en paramètres.<br />
Ainsi :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">cat</span> Formation/TP1/exo1.txt Formation/TP1/exo2.txt</code></pre></div>
<p>"concatène" les fichiers sur stdout.</p>
<blockquote>
<p>À NOTER : avec un seul fichier les commandes :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">cat</span> Formation/TP1/exo.txt</code></pre></div>
<p>et</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">cat</span> <span class="op"><</span> Formation/TP1/exo.txt</code></pre></div>
<p>peuvent être considérées comme équivalentes.</p>
</blockquote>
<h3 id="sort">sort</h3>
<p>Trie les lignes d'un fichier dans l'ordre lexicographique ASCII.</p>
<p>Exemple :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">sort</span> <span class="op"><</span> Formation/TP1/table.txt</code></pre></div>
<h3 id="grep">grep</h3>
<p>Sélectionne les lignes qui contiennent une expression donnée en paramètre.<br />
Syntaxe simplifiée :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">grep</span> expression <span class="op"><</span> file</code></pre></div>
<p>Exemple :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">grep</span> 152X <span class="op"><</span> Formation/TP1/issn.txt</code></pre></div>
<h3 id="head">head</h3>
<p>Syntaxe simplifiée :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">head</span> [ -number ] <span class="op"><</span> file</code></pre></div>
<ul>
<li>sans paramètre, sélectionne les 10 premières lignes</li>
<li>avec paramètre, sélectionne le nombre de lignes désignées par le paramètre</li>
</ul>
<p>Exemple :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">head</span> -5 <span class="op"><</span> Formation/TP1/file.xml</code></pre></div>
<h2 id="redirection-de-la-sortie-standard-vers-un-fichier">Redirection de la sortie standard vers un fichier</h2>
<p>La sortie standard peut à son tour être redirigée vers un fichier.<br />
2 possibilités :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">commande</span> <span class="op">></span> fichier</code></pre></div>
<p>le résultat de la commande va servir à créer ou à remplacer (par écrasement) le contenu du fichier donné.</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">commande</span> <span class="op">>></span> fichier</code></pre></div>
<p>le résultat de la commande va servir à créer (la première fois) ou à rallonger le contenu du fichier donné (concaténation).</p>
<h2 id="combinaison-simple-des-redirections">Combinaison simple des redirections</h2>
<p>Entrée et sortie standard peuvent être rédirigées simultanément.<br />
Ainsi :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">cat</span> <span class="op"><</span> fA <span class="op">></span> fB</code></pre></div>
<p>copie le contenu du fichier <code>fA</code> pour créer le fichier <code>fB</code>.</p>
<h2 id="combinaison-de-fitres-en-cascade---le-pipe">Combinaison de fitres en cascade - le pipe</h2>
<p>(image manquante)pipe de deux commandes unix</p>
<p>Le mécanisme appelé <em>pipe</em> permet d'enchaîner des commandes en affectant la sortie de l'une à l'entrée de la suivante. Sa forme générale est :</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">c0</span> <span class="op"><</span> fA <span class="kw">|</span> <span class="ex">c1</span> <span class="kw">|</span> <span class="ex">c2</span> <span class="kw">|</span> <span class="ex">...</span> <span class="kw">|</span> <span class="ex">cn</span> <span class="op">></span> fB</code></pre></div>
<p>Le fichier <code>fA</code> est lu et traité par la commande <code>c0</code>, le résultat est alors traité par <code>c1</code>, et ainsi de suite jusqu'à la commande <code>cn</code> pour laquelle le résultat est écrit dans le fichier <code>fB</code>.</p>
<p><a href="../unix/linux.html">Précédent</a> - <a href="./commandes-basiques.html">Suivant</a></p>
</div>
<footer>
<p>© CNRS 2023</p>
</footer>
</body>
</html>