Atelier Système d'exploitation: UNIX/LINUX
TP 6
Exercice 1
Sous UNIX, plusieurs caractères spéciaux à titre de :
- La barre oblique / qui indique le cheminement entre les répertoires;
- Le dollar indiquant le début d'une variable;
- L'espace est un caractère spécial, permettant de séparer les arguments de la ligne de
commande;
- Le dièse #, indiquant le début d'un commentaire;
- Le point-virgule, permettant d'écrire plusieurs commandes sur la même ligne;
ont une signification particulière pour le shell.
Si l'on veut redonner un sens normal à ces caractères, il est nécessaire de les protéger,
pour empêcher qu'ils soient interprétés par le shell. Pour cela, soit on place l"argument
entre guillemets ou apostrophes : '3*2' ou "3;2", soit on précède juste le caractère
spécial d'un backslash \ : 3\*2. A noter que le backslash est lui-même un caractère
spécial, que l'on peut protéger.
1. Affichez successivement en utilisant des guillemets avec la commande echo les mots
suivants :
(a) 3*2
...................................................................................................................................
(b) ||||
...................................................................................................................................
(c) \|/|\|/|\|./
...................................................................................................................................
(d) **??**
...................................................................................................................................
(e) prenom ; nom
...................................................................................................................................
2. Recommencez en n'utilisant que le backslash.
(a) 3*2
...................................................................................................................................
(b) ||||
...................................................................................................................................
(c) \|/|\|/|\|./
...................................................................................................................................
(d) **??**
...................................................................................................................................
(e) prenom ; nom
...................................................................................................................................
3. Créez dans le répertoire courant ( Repertoire nommé TP4 que vous créez sous votre
répertoire d'accueil) des fichiers portant les noms ci-dessus. Est-ce possible pour tous ?
1
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
4. Effacez les fichiers ci-dessus.
..................................................................................................................................
Exercice 2
La plupart des commandes utilisent trois flots d'entrée - sortie : STDIN, l'entrée standard,
habituellement les caractères entrés au clavier ; STDOUT, la sortie standard, ce qui est affiché
sur la console ; STDERR, la sortie d'erreur, qui est également affichée sur la console. Il est
possible de rediriger l'entrée standard d'une commande pour qu'elle lise un fichier en ajoutant <
fichier à la fin de la commande; et la sortie standard ou d'erreur pour qu'elles écrivent dans un
fichier en ajoutant respectivement > fichier et 2> fichier qui créent un fichier ou effacent un
fichier existant pour écrire dedans. Si l'on ne souhaite pas effacer le fichier, mais ajouter à la fin
: remplacer > par >>. Note : Il ne faut pas confondre les arguments de la ligne de commande
avec STDIN.
La commande cat utilisées sans argument à pour comportement de recopier sur STDOUT ce
qu'elle dans STDIN.
1. Utilisez cat pour créer un fichier f1 contenant cinq ou six lignes de votre choix.
...................................................................................................................................
...................................................................................................................................
2. Utilisez cat pour créer un fichier f3 contenant /etc/passwd, f1, puis encore /etc/passwd.
Essayer de le faire en une seule commande.
...................................................................................................................................
...................................................................................................................................
3. Créez un fichier contenant la liste de tous les fichiers se trouvant sous votre répertoire
principal.
...................................................................................................................................
...................................................................................................................................
4. Ajoutez au fichier précédent la sortie de la commande env.
...................................................................................................................................
...................................................................................................................................
Il existe un fichier spécial /dev/null agissant comme une "poubelle" pour les données
vers lequel on redirige tout ce dont on veut se débarrasser.
1. Exécutez cat /etc/passwd /etc/toto.
...................................................................................................................................
2. Comment faire pour que cela n'affiche rien ?
...................................................................................................................................
Exercice 3
On a la possibilité de rediriger l'entrée et la sortie standard, non plus vers un fichier,
mais vers un autre programme. Les programmes conçus pour être utilisés de cette
manière sont appelés filtres. Dans ce cadre on peut citer : more, cat et grep (permet de
rechercher du texte dans un fichier). Pour effectuer la redirection, on utilisera un pipe
noté |.
Par exemple, la ligne cat /etc/services | grep 25 | more permet d'afficher toutes les lignes
de /etc/services contenant le mot 25.
Lisez les pages de man des commandes wc, sort, cat, uniq et répondez aux questions suivantes
2
1. A quoi servent ces fonctions ?
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
2- Quel sont les enchaînements de commandes (une seule ligne) nécessaires pour effectuer les
opérations suivantes :
1. Compter le total des lignes des fichiers dans /etc
...................................................................................................................................
2. Compter le nombre de lignes contenant 25 dans /etc/services
...................................................................................................................................
3. Trier le fichier /etc/hosts
...................................................................................................................................
4. Afficher le nombre de fichiers n'appartenant pas à root dans /etc/.
...................................................................................................................................
Exercice 4
Les expressions régulières sont utilisées par plusieurs commandes très utiles pour filtrer
(reconnaître) des mots. Elles ressemblent aux expressions contenant des méta-caractères
du shell, mais n'ont pas la même syntaxe.
- Le point . permet de filtrer un seul caractère quelconque;
- Les crochets utilisent la même syntaxe que pour le shell et ont le même sens;
- L'étoile est un opérateur post fixe signifiant "autant de fois que l'on veut l'expression
que l'on trouve avant";
- Le chapeau ^ et le dollar $ permettent d'ancrer l'expression respectivement en début
ou en fin de ligne;
- Les parenthèses précédées d'un backslash pour grouper les expressions.
Exemple
^l*$ permet de reconnaître les lignes composées uniquement de l et les lignes vides. Si on
veut supprimer les listes vides, il faut faire ^ll*$
L'expression ab\(ab\)* permet de trouver les lignes contenant une suite
ababababababab. Attention
Pour que les caractères spéciaux ne soient interprétés pas par le shell, il est conseillé de
toujours mettre les expressions rationnelles entre apostrophes.
1. Quelle expression utiliser pour :
trouver une ligne contenant un groupe de a par multiple de trois.
...................................................................................................................................
trouver les nombres entiers.
...................................................................................................................................
La commande grep expr fich1 ... fichn permet d'afficher toutes les lignes des fichiers
indiqués contenant l'expression expr. grep accepte les options -v permettant d'afficher
les lignes ne comprenant pas le motif, -l qui affiche uniquement le nom des fichiers
contenant le motif et -i qui ignore les différences entre majuscule et minuscule.
1. Quels sont les fichiers dans /etc contenant le mot block.
...................................................................................................................................
2. Quels sont les fichiers de /etc/ contenant le mot [Link]
...................................................................................................................................
3
3. Quels sont les fichiers de /etc/ contenant des nombres de plus de trois chiffres.
...................................................................................................................................
4. Affichez toutes les lignes des fichiers de /etc/ contenant un a, suivi d'un nombre quelconque
de p, suivi d'un a.
...................................................................................................................................
5. Quelle expression utiliser pour trouver des lignes vides ?
...................................................................................................................................
La commande qui permet de retrouver des fichiers est find rep -name 'nom' qui permet
de retrouver tous les fichiers situés dans rep ou un sous-répertoire portant le nom nom.
Le nom peut contenir des méta-caractères identiques à ceux du shell (mais pas des
expressions régulières). Cependant, c'est à find d'interpréter les caractères et non au
shell, donc il est nécessaire de placer nom entre apostrophe.
1. Affichez tous les fichiers et sous-répertoires de votre répertoire principal.
...................................................................................................................................
2. En utilisant l'option -type (cf. le manuel), n'affichez que les fichiers. Puis recommencez
avec que les répertoires.
...................................................................................................................................
...................................................................................................................................
3. En utilisant l'option -newer, affichez tous les fichiers de votre répertoire qui sont plus
récent que le fichier TP.
...................................................................................................................................
4. Trouvez tous les fichiers datant de cette année dans /etc.
...................................................................................................................................
Exercice5:
Pour les questions suivantes, trouvez la ligne de commande permettant de faire l'opération
voulue en se référant au fichier /etc/passwd.
1. Affichez uniquement la ligne vous concernant.
...................................................................................................................................
2. Affichez uniquement les login de tous les utilisateurs triés.
...................................................................................................................................
3. Affichez les correspondances login, numéro d'utilisateur (UID), nom réel.
...................................................................................................................................
4. Affichez les utilisateurs, leur numéro de groupe et leur nom complet.
...................................................................................................................................
5. Sachant que le groupe enseignement est le numéro 30, en utilisant le résultat de la
commande précédente, affichez le nom des utilisateurs du groupe 30 et leur numéro de
groupe.
...................................................................................................................................
6. Puis n'affichez plus que le nom complet des utilisateurs du groupe 30.
...................................................................................................................................
7. Combien y'en a-t-il ?
...................................................................................................................................
8. Triez le résultat.
...................................................................................................................................
9. Est-ce [Link] y a des doublons ?
...................................................................................................................................