Exercices en plus (TP4)
Indications
Les exercices suivants sont des exercices supplémentaires pour vous entraîner et voir d'autres utilisations des tubes et des redirections.
Filtres textuels
Les filtres textuel sont des commandes qui lisent ou peuvent lire depuis leur entrée standard et écrivent des données modifiées sur leur sortie standard.
En voici quelques-uns parmi les plus courants :
head
: affiche les premières lignes de son entrée ;tail
: affiche les dernières lignes de son entrée. Avec l’option -f (pour follow, continuer à afficher la fin du fichier quand il est mis à jour) c’est l’une des commandes préférées des administrateurs systèmes ;grep
: une des commandes les plus connues, affiche des lignes correspondant à une chaîne, ou plus généralement une expression rationnelle dans son entrée ;cut
: sélectionne des champs ou des caractères dans chaque ligne de l’entrée standard ;sort
: trie son entrée standard suivant des critères.tr
: remplace des caractères dans son entrée standard.uniq
: supprime les lignes consécutives identiques dans son entrée standard.
Exercice 1 : Frère Jacques
- Créer un fichier
fj
contenant ces lignes :avec la commandeFrère Jaques, Frère Jacques, Dormez-vous, Dormez-vous, Sonnez les matines, Sonnez les matines ! Ding ! Ding ! Dong !
echo
(le caractère<newline>
correspond à la touche entrée de votre clavier): - Testez ensuite les commandes suivantes et observez leur résultats:
$ cat fj $ head fj $ tail fj $ head -n 2 fj $ tail -n 3 fj $ grep "Dormez" fj $ grep -v "Dormez" fj $ grep "dormez" fj $ grep -i "dormez" fj $ sort fj $ uniq fj $ cut -c 1 fj $ cut -c 2 fj $ cut -c 1-3 fj $ cut -d ' ' -f 1 fj $ cut -d ' ' -f 1,2 fj
- Où sont affichés les résultats ?
- À quoi servent les options
-n
dehead
ettail
? - À quoi sert l'option
-v
degrep
? À quoi sert l'option-i
degrep
? - À quoi servent les options
-c
et-d
decut
?
Exercice 2 : Trier les fichiers
Nom de base
Le nom de base d'un fichier est le nom du fichier sans son extension. Par exemple le nom de base du fichier /usr/include/stdio.h
est stdio
.
Dans cet exercice, nous voudrions afficher sur le terminal le nom de base des 10 fichiers les plus légers (en taille en octets) parmi les fichier .h
du répertoire /usr/include
.
En utilisant les commandes wc
, sort
, cut
, head
(ou éventuellement tail
), et les redirections par tube, écrivez une commande qui affiche le nom de base des 10 fichiers les plus légers parmi les fichiers .h
du répertoire /usr/include
.
Indication
- L'option
-c
dewc
vous donne le nombre d'octets d'un fichier. - L'option
-n
desort
vous permet de trier les lignes d'un fichier par ordre numérique. - L'option
-d
detr
supprime les caractères reçus en premiers argument au lieu de les remplacer.
Si vous avez installé gcc
, vous devriez avoir :
Exercice 3 : Plus sur grep
Passer un répertoire en argument de grep
- L'option
-r
degrep
permet de passer un répertoire en argument. Et lui demande de chercher dans tous les fichiers de ce répertoire. - L'option
-l
degrep
permet de n'afficher que le nom des fichiers qui contiennent la chaîne recherchée.
En utilisant grep
et éventuellement d'autres commandes, trouvez une ligne de commande qui permet de:
- Afficher la valeur de
RAND_MAX
(c'est une constante de la librairie standard de C). - Afficher le chemin absolu des fichiers qui contiennent de la chaîne
127.0.0.1
dans les fichiers de/etc
. - Afficher uniquement le nom des fichiers qui contiennent de la chaîne
127.0.0.1
dans les fichiers de/etc
. (indice : il existe une commande qui s'appellerev
). - Affiche le chemin du répertoire personnel de l'utilisateur
games
.