tuteurs.ens.fr/unix/exercices/enchainer.tml

356 lines
8.9 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 &gt; blu
</pre>
<p class="continue">et</p>
<pre>
cat bla blo &gt;&gt; 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>