356 lines
8.9 KiB
XML
356 lines
8.9 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||
<!DOCTYPE html
|
||
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
||
"tuteurs://DTD/tml.dtd">
|
||
<html>
|
||
<head>
|
||
<title>Pipes</title>
|
||
</head>
|
||
<body>
|
||
|
||
|
||
<h1><em>Pipes</em>, jokers et redirections</h1>
|
||
|
||
|
||
<h2><a name="cat">La commande <tt>cat</tt></a></h2>
|
||
|
||
|
||
<p>On n'a pas traité de la commande <tt>cat</tt> dans la page consacrée aux
|
||
commandes de base, parce que <tt>cat</tt> s'utilise le plus souvent avec des
|
||
redirections.</p>
|
||
|
||
<ol>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#cat1">&icone.solution;
|
||
</a>
|
||
Comment visualiser deux fichiers l'un après l'autre à l'aide de la commande
|
||
<tt>cat</tt> ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#cat2">&icone.solution;
|
||
</a>
|
||
Comment faire une copie d'un fichier sans utiliser <tt>cp</tt> ni ouvrir
|
||
d'éditeur de texte ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#cat3">&icone.solution;
|
||
</a>
|
||
Utiliser <tt>cat</tt> pour écrire un peu de texte et mettre le résultat
|
||
dans un fichier <tt>notes</tt>.</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#cat4">&icone.solution;
|
||
</a>
|
||
Quelle différence y a-t-il entre
|
||
<pre>
|
||
cat bla blo > blu
|
||
</pre>
|
||
<p class="continue">et</p>
|
||
<pre>
|
||
cat bla blo >> blu
|
||
</pre>
|
||
|
||
<p>
|
||
Que se passe-t-il, pour chaque ligne, selon que le fichier <tt>blu</tt>
|
||
existe ou n'existe pas ?</p> </li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#cat5">&icone.solution;
|
||
</a>
|
||
Comment obtenir un fichier <tt>blo</tt> qui corresponde à un fichier
|
||
<tt>bla</tt> dont les lignes seraient désormais numérotées ?</li>
|
||
|
||
</ol>
|
||
|
||
<h2> <a name="jokers">Jokers et expressions régulières</a> </h2>
|
||
|
||
<ol>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#jokers1">&icone.solution;
|
||
</a>
|
||
Vous avez chez vous des fichiers appelés <tt>essai1</tt>, <tt>essai2</tt>,
|
||
<tt>essai3</tt> et <tt>essai4</tt>. Comment les effacer en une seule ligne
|
||
de commande ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#jokers2">&icone.solution;
|
||
</a>
|
||
Dans mon répertoire d'accueil, j'ai un certain nombre de fichiers avec un
|
||
suffixe <tt>.c</tt>. Je désire les regrouper dans un répertoire que
|
||
j'appelerai <tt>C/</tt>. Quelles sont les commandes que je dois
|
||
taper ?</li>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#jokers3">&icone.solution;
|
||
</a>
|
||
Vous désirez regrouper dans un répertoire <tt>Rangement</tt> les fichiers
|
||
dont le nom contient un caractère minuscule suivi d'un caractère majuscule.
|
||
Quelle(s) est/sont la/les commande(s) à donner ?</li>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#jokers4">&icone.solution;
|
||
</a>
|
||
Même chose avec les fichiers dont le nom contient trois voyelles à la
|
||
suite.</li>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#jokers5">&icone.solution;
|
||
</a>
|
||
En utilisant <tt>ls</tt> et <tt>grep</tt>, affichez la liste des fichiers
|
||
dans <tt>/bin</tt> dont le nom :
|
||
|
||
<ul>
|
||
|
||
<li> Commence par «a» et dont la deuxième lettre est «s» ou «t»;</li>
|
||
|
||
<li> Contient «un» et se termine par «t»;</li>
|
||
|
||
<li> Contient «gre» ou «st».</li>
|
||
|
||
<li> Contient exactement deux lettres «m»;</li>
|
||
|
||
<li> Contient au moins deux lettres «m»;</li>
|
||
|
||
<li> Contient au moins quatre caractères et aucun chiffre;</li>
|
||
|
||
<li> Est constitué de deux lettres exactement;</li>
|
||
|
||
<li> Commence et finit par un chiffre.</li>
|
||
|
||
</ul></li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#jokers6">&icone.solution;
|
||
</a>
|
||
Comment éliminer les lignes vides dans un fichier ? Comment éliminer
|
||
les lignes ne contenant que des blancs ?</li>
|
||
|
||
</ol>
|
||
|
||
|
||
|
||
|
||
<h2><a name="germinal">Exercices sur <em>Germinal</em></a></h2>
|
||
|
||
|
||
<ol>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#germinal1">&icone.solution;
|
||
</a> Combien de
|
||
fois le mot «mine» apparaît dans chaque chapitre de la première partie de
|
||
<em>Germinal</em> ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#germinal2">&icone.solution;
|
||
</a>Combien y
|
||
a-t-il de lignes blanches dans <tt>zola1.txt</tt> ?</li>
|
||
|
||
</ol>
|
||
|
||
|
||
<h2><a name="headtail"><tt>head</tt> et <tt>tail</tt></a></h2>
|
||
|
||
|
||
<ol>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#headtail1">&icone.solution;
|
||
</a> Affichez
|
||
les 15 premières lignes du fichier <tt>/etc/hosts</tt>, les 15 dernières
|
||
lignes, toutes les lignes à partir de la quinzième, les lignes 15 à 20.
|
||
|
||
<div class="attention">
|
||
<h1>&icone.attention; Attention &icone.attention;</h1>
|
||
Placez-vous sur clipper pour faire cet exercice. En effet, les
|
||
<tt>/etc/hosts</tt> des autres machines sont beaucoup plus petits (en
|
||
particulier peuvent faire moins de 15 lignes).
|
||
</div></li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#headtail2">&icone.solution;
|
||
</a> Récupérer
|
||
les lignes 5 à 9 d'un fichier de 12 lignes.</li>
|
||
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#headtail4">&icone.solution;
|
||
</a> Comment
|
||
afficher la cinquième ligne d'un fichier ?</li>
|
||
|
||
</ol>
|
||
|
||
|
||
|
||
<h2><a name="syst">Filtres et redirections</a></h2>
|
||
|
||
|
||
<ol>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst1">&icone.solution;
|
||
</a>
|
||
Créez un fichier dont chaque ligne commence par un chiffre, suivi d'un
|
||
slash (<tt>/</tt>), puis d'un ou plusieurs mots.
|
||
|
||
<ol>
|
||
|
||
<li> Affichez les lignes de ce fichier triées en ordre croissant, suivant
|
||
le nombre placé en début de ligne;</li>
|
||
|
||
<li> Éliminez de chaque ligne le chiffre et le caractère «<tt>/</tt>»;</li>
|
||
|
||
<li> Triez ces lignes par ordre alphabétique inverse.</li>
|
||
|
||
</ol></li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst2">&icone.solution;
|
||
</a> Combien de
|
||
fichiers de configuration avez-vous ?</li>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst3">&icone.solution;
|
||
</a> Combien de
|
||
répertoires de configuration avez-vous ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst4">&icone.solution;
|
||
</a>
|
||
Comment mettre dans un fichier la liste de tous les fichiers de
|
||
l'arborescence à partir du répertoire courant ?</li>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst5">&icone.solution;
|
||
</a> Créez un
|
||
fichier <tt>liste</tt> contenant la liste de tous vos fichiers, avec leur
|
||
taille, leurs droits, etc.</li>
|
||
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst6">&icone.solution;
|
||
</a>
|
||
Comment afficher uniquement les fichiers du répertoire courant qui sont des
|
||
liens symboliques ?</li>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst7">&icone.solution;
|
||
</a> Combien de
|
||
lignes contiennent le mot «<em>file</em>» dans la page de man de
|
||
<tt>syst</tt> ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst8">&icone.solution;
|
||
</a> Quels sont les
|
||
dix plus gros fichiers de <tt>/usr/bin/</tt> ?</li>
|
||
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#syst9">&icone.solution;
|
||
</a>
|
||
Pour chaque ligne du fichier <tt>/etc/hosts</tt>, affichez :
|
||
|
||
<ul>
|
||
|
||
<li> Le cinquième caractère;</li>
|
||
|
||
<li> Les caractères 5 à 10, et le treizième;</li>
|
||
|
||
<li> Tous les caractères à partir du quinzième.</li>
|
||
|
||
</ul></li>
|
||
|
||
</ol>
|
||
|
||
|
||
|
||
|
||
<h2><a name="yp">Exercices sur les pages jaunes</a></h2>
|
||
|
||
|
||
|
||
<ol>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#yp2">&icone.solution;
|
||
</a>Combien de
|
||
personnes de la promotion 1996 ont un login commençant par «l» ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#yp3">&icone.solution;
|
||
</a>Est-ce que des
|
||
gens des promotions de la décennie 1980 ont encore un compte sur clipper ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#yp4">&icone.solution;
|
||
</a>Combien y a-t-il
|
||
de comptes d'élèves, magistériens, etc (appartenant à une promotion) sur
|
||
clipper ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#yp5">&icone.solution;
|
||
</a>Classer les
|
||
comptes de ces utilisateurs par numéro d'UID.</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#yp6">&icone.solution;
|
||
</a>
|
||
Affichez le login des personnes ayant <tt>zsh</tt> comme shell de login.</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#yp7">&icone.solution;
|
||
</a>
|
||
Affichez le nom et le prénom des personnes ayant un compte sur
|
||
<tt>clipper</tt>, et dont le nom de famille contient au moins 2 voyelles
|
||
côte à côte. Compter ces personnes.</li>
|
||
|
||
|
||
|
||
|
||
</ol>
|
||
|
||
|
||
|
||
<h2><a name="divers">Divers</a></h2>
|
||
|
||
<ol>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#divers1">&icone.solution;
|
||
</a>
|
||
Comment conserver les informations concernant le disque dans un
|
||
fichier ?</li>
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#divers3">&icone.solution;
|
||
</a>
|
||
Comment connaître la dernière date de connexion au système d'un utilisateur
|
||
de login <tt>martin</tt> ?</li>
|
||
|
||
<!-- <p>
|
||
<li> <a href="solutions/enchainer-sol.html#divers4">&icone.solution;
|
||
</a>
|
||
Créez chez vous un fichier contenant des mots (sur le modèle d'un carnet de
|
||
vocabulaire), un par ligne, avec des répétitions; par exemple :
|
||
|
||
<pre>
|
||
Pomme
|
||
Poire
|
||
Cassis
|
||
Pomme
|
||
Fraise
|
||
Orange
|
||
Citron
|
||
</pre>
|
||
|
||
Utilisez la commande <tt>uniq</tt> :
|
||
|
||
<ul>
|
||
<li> Pour éliminer les lignes redondantes (dans notre exemple, la ligne
|
||
«Pomme» en double exemplaire);</li>
|
||
|
||
<li> Pour donner le nombre d'occurrences de chaque ligne;</li>
|
||
|
||
<li> Pour ne faire apparaître que le ou les mots redondants avec le nombre
|
||
d'occurrences; ici, ce sera : <br>
|
||
|
||
<tt> 2 Pomme </tt>
|
||
|
||
|
||
</ul>
|
||
!-->
|
||
|
||
<li> <a href="solutions/enchainer-sol.html#divers5">&icone.solution;
|
||
</a>
|
||
Affichez le type des fichiers <tt>/etc/passwd</tt>,
|
||
<tt>/usr/include/stdio.h</tt>, <tt>/bin/ls</tt> et de votre répertoire de
|
||
travail.</li>
|
||
|
||
</ol>
|
||
|
||
<div class="metainformation">
|
||
Auteur : Anonyme, Joël Riou. Dernière modification le 2002-12-08.
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|
||
|
||
|