Ajout des corrigés de presque tous les exercies système (il en reste 3)
This commit is contained in:
parent
e0d48b0917
commit
4fe62cbfe8
2 changed files with 133 additions and 18 deletions
|
@ -334,9 +334,17 @@ crochets par leur valeur; par exemple
|
|||
|
||||
|
||||
<pre>
|
||||
<span class="prompt">chaland ~ $</span>params bla ble bli blo blu
|
||||
<span class="prompt">chaland ~ $</span> params bla ble bli blo blu
|
||||
La commande params a 5 paramètre(s), que voici : bla ble bli blo blu
|
||||
</pre></li>
|
||||
</pre>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
echo "La commande $0 a $# paramètre(s), que voici| : $@"
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -345,7 +353,13 @@ La commande params a 5 param
|
|||
|
||||
Créez une commande qui, lorsqu'elle est appelée, renvoie le nombre
|
||||
d'arguments qui lui ont été fournis, ainsi que le premier de ces
|
||||
arguments.</a></strong></li>
|
||||
arguments.</a></strong>
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
echo "J'ai reçu $# arguments"
|
||||
echo "Le premier d'iceux est $1"
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
<li><strong> <a name="shell6">
|
||||
|
@ -357,19 +371,46 @@ sur une machine donn
|
|||
<span class="prompt">drakkar ~ $</span> combien galion
|
||||
Il y a 5 personne(s) loguées sur galion en ce moment.
|
||||
<span class="prompt">drakkar ~ $</span>
|
||||
</pre></li>
|
||||
</pre>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
N=`who | wc -l | sed -e "s/ *//"`
|
||||
MACHINE=`whoami`
|
||||
echo "Il y a $N personne(s) logués sur $MACHINE en ce moment"
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
<li><strong> <a name="shell7">
|
||||
On veut remplacer
|
||||
le suffixe <tt>.htm</tt> d'un ensemble de fichiers en
|
||||
<tt>.html</tt>.</a></strong></li>
|
||||
<tt>.html</tt>.</a></strong>
|
||||
<p>
|
||||
Le script suivant lancé avec "**/*.htm" comme paramètre devrait
|
||||
fonctionner :
|
||||
</p>
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
for i in $@;
|
||||
do
|
||||
mv $i `echo $i | sed -e "s/htm$/html/"`
|
||||
done;
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li><strong> <a name="shell8">
|
||||
Un ensemble de
|
||||
noms de fichiers sont en majuscules. On veut tout basculer en minuscules.</a></strong></li>
|
||||
<li><strong> <a name="shell8"> Un ensemble de noms de fichiers sont en
|
||||
majuscules. On veut tout basculer en minuscules.</a></strong>
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
for i in $@;
|
||||
do
|
||||
mv $i `echo $i | tr '[:upper:]' '[:lower:]'`
|
||||
done;
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
@ -383,7 +424,21 @@ indice toto tata titi toto tutu
|
|||
|
||||
<p>
|
||||
renvoie l'indice de <tt>toto</tt> dans la liste <tt>tata titi toto
|
||||
tutu</tt>, c'est-à-dire 3.</p></li>
|
||||
tutu</tt>, c'est-à-dire 3.</p>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
ARG=$1
|
||||
shift
|
||||
N=0
|
||||
|
||||
for i in $@;
|
||||
do
|
||||
N=`expr $N + 1`
|
||||
[ x$ARG = x$i ] && echo $N
|
||||
done;
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
<li><strong> <a name="shell10">
|
||||
|
@ -400,6 +455,22 @@ Dans ce fichier, vous avez
|
|||
12 contiennent deux de ces lettres au moins.
|
||||
Il y a aussi 10 mots ne contenant aucune voyelle.
|
||||
</pre>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
|
||||
RST=`grep "[rst]" $1 | wc -l`
|
||||
DEUX=`grep "[rst].*[rst]" $1 | wc -l`
|
||||
CONS=`grep -v "[aeiou]" $1 | wc -l`
|
||||
|
||||
(echo "Dans ce fichier, vous avez| :";
|
||||
echo "$RST mots contenant «r», «s» ou «t» et parmi eux,";
|
||||
echo "$DEUX contiennent deux de ces lettres au moins.";
|
||||
echo "Il y a aussi $CONS mots ne contenant aucune voyelle.") |
|
||||
sed -e "2,3s/^ *//
|
||||
\$s/i */i /"
|
||||
</pre>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
@ -411,15 +482,49 @@ feu) dans la premi
|
|||
<p>
|
||||
On veut aussi que le résultat soit placé dans un fichier, et que le résultat
|
||||
soit classé : toutes les lignes qui contiennent «air», puis toutes celles qui
|
||||
contiennent «eau», etc. </p></li>
|
||||
contiennent «eau», etc. </p>
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
|
||||
FICHIER=resultat
|
||||
MOTS="terre air eau feu"
|
||||
|
||||
[ -w $FICHIER ] && echo "Le fichier $FICHIER existe déjà" && exit 1
|
||||
|
||||
for i in $MOTS;
|
||||
do
|
||||
echo "Lignes contenant $i" >> $FICHIER
|
||||
grep $i zola*.txt >> $FICHIER
|
||||
echo >> $FICHIER
|
||||
done;
|
||||
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li><strong> <a name="shell12">
|
||||
|
||||
Chercher le mot «mine» dans les chapitres 3, 4 et 5 de la première partie de
|
||||
<em>Germinal</em>, et obtenir un fichier dans lequel figure le nombre
|
||||
d'occurences du mot dans les fichiers, avec le numéro des lignes.</a></strong></li>
|
||||
Chercher le mot «mine» dans les chapitres 3, 4 et 5 de la première partie
|
||||
de <em>Germinal</em>, et obtenir un fichier dans lequel figure le nombre
|
||||
d'occurences du mot dans les fichiers, avec le numéro des
|
||||
lignes.</a></strong>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
|
||||
FICHIER=resultat
|
||||
|
||||
[ -w $FICHIER ] && echo "Le fichier $FICHIER existe déjà" && exit 1
|
||||
|
||||
for i in zola[345].txt;
|
||||
do
|
||||
echo "Dans le fichier $i, voici les lignes contenant «mine»" >> $FICHIER
|
||||
NB=`grep -n mine $i | tee -a $FICHIER | wc -l`
|
||||
(echo "$NB lignes";echo ) >> $FICHIER
|
||||
done;
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
@ -436,7 +541,18 @@ coupe fic 4 8
|
|||
<p class="continue">
|
||||
affichera les lignes 4 à 8 du fichier <tt>fic</tt>. Affichez des messages
|
||||
en cas d'erreur (nombre de paramètres incorrect, fichier inexistant, etc).
|
||||
</p></li>
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
|
||||
[ $# != "3" ] && echo "Nombre de paramètres incorrects" && exit 1
|
||||
[ ! -r $1 ] && echo "Fichier $1 inexistant" && exit 1
|
||||
|
||||
cat $1 | sed -n -e "$2,$3p"
|
||||
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
@ -463,7 +579,6 @@ Note
|
|||
pour reconstruire l'arborescence, on utilise <tt>tar zxvf fichier</tt>.
|
||||
</p></li>
|
||||
|
||||
|
||||
<li><strong> <a name="shell15">
|
||||
|
||||
La commande suivante affiche le path complet de tous les fichiers finissant
|
||||
|
@ -492,7 +607,7 @@ d
|
|||
|
||||
<li><strong> <a name="shell16">
|
||||
|
||||
Écrire un sript permettant d'appliquer divers filtres sur un fichier. Ce
|
||||
Écrire un script permettant d'appliquer divers filtres sur un fichier. Ce
|
||||
script est lancé avec un argument, qui doit être un nom de fichier appelé
|
||||
fichier de travail; dans le cas contraire, on afficher un message d'erreur.
|
||||
On attend ensuite une commande en mode interactif, qui peut
|
||||
|
|
|
@ -191,7 +191,7 @@ crochets par leur valeur; par exemple
|
|||
|
||||
|
||||
<pre>
|
||||
<span class="prompt">chaland ~ $</span>params bla ble bli blo blu
|
||||
<span class="prompt">chaland ~ $</span> params bla ble bli blo blu
|
||||
La commande params a 5 paramètre(s), que voici : bla ble bli blo blu
|
||||
</pre></li>
|
||||
|
||||
|
@ -349,7 +349,7 @@ d
|
|||
|
||||
<li> <a href="solutions/systeme-sol.html#shell16">&icone.solution;
|
||||
</a>
|
||||
Écrire un sript permettant d'appliquer divers filtres sur un fichier. Ce
|
||||
Écrire un script permettant d'appliquer divers filtres sur un fichier. Ce
|
||||
script est lancé avec un argument, qui doit être un nom de fichier appelé
|
||||
fichier de travail; dans le cas contraire, on afficher un message d'erreur.
|
||||
On attend ensuite une commande en mode interactif, qui peut être :
|
||||
|
|
Loading…
Add table
Reference in a new issue