TP 2 Système

Transcription

TP 2 Système
TP 3 Système
C. Pain-Barre
INFO - IUT Aix-en-Provence
i
version du 24/10/2011
Démarrer les PC sous Linux.
Les exercices sont à faire sur allegro via une connexion SSH.
Exercice 1
Rappels sur les redirections
1. Aller dans le répertoire ~cpb/public/unix
2. Faire afficher le fichier sorties.cxx. Il contient le code source C++ d’un programme écrivant un message sur chacune des sorties (standard et d’erreur). Il a été compilé pour donner l’exécutable sorties
présent dans ce répertoire.
3. Copier sorties dans votre répertoire tpunix et s’y placer
4. Exécuter sorties, ce qui devrait afficher les messages suivants :
Ce texte a été écrit sur la sortie standard
Ce texte a été écrit sur la sortie d’erreur
5. Dessiner les entrées-sorties des commandes suivantes et en déduire leur résultat avant de les exécuter pour
vérifier :
a. ./sorties > XXXX
b. ./sorties >& XXXX (ou ./sorties > XXXX 2>&1)
c. ./sorties >> XXXX 2>&1
d. ./sorties > /dev/null
(regarder ensuite le contenu de /dev/null avec cat)
e. ./sorties 2> /dev/null
6. Exécuter sorties en la rendant muette, c’est à dire en faisant disparaître tous ses messages
7. Supprimer XXXX
Exercice 2
Premiers pas avec les tubes (et les redirections) : combinaisons de ls, less et cat
1. Faire afficher le contenu détaillé du répertoire /users/etud. Le résultat est trop long pour tenir sur la
fenêtre.
2. Dessiner les entrées-sorties de la chaîne de traitement suivante :
ls -l /users/etud | less
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
TP 3 Système
Version du 24/10/2011
2/13
Elle combine la commande précédente avec less, afin de paginer sa sortie. L’exécuter et naviguer dans
la pagination de less avec Espace pour la page suivante, b pour la précédente, et q pour quitter. Au
passage, observer les différents droits positionnés sur les répertoires d’accueil des étudiants.
-
À ce stade, la commande less peut prêter à confusion : son entrée est redirigée sur la sortie
de ls, mais elle reste capable de lire les frappes du clavier, c’est à dire du terminal. Ceci
parce que less est une commande "intelligente" qui doit se soucier de sa sortie (pour la
pagination) mais aussi de son entrée pour pouvoir être contrôlée. Ici, puisque son entrée
n’est pas le terminal (mais ls), elle ouvre une autre entrée depuis le terminal pour lire les
frappes du clavier.
3. Dessiner les entrées-sorties de la chaîne de traitement suivante :
./sorties | cat
en déduire ce qu’elle fait et l’exécuter plusieurs fois pour vérifier le résultat. Il peut arriver que les messages soient mélangés. . . Il est clair que l’utilisation de cat dans cette commande n’a un intérêt que pédagogigue. . .
4. Dessiner les entrées-sorties de la chaîne de traitement suivante :
./sorties 2>&1 | cat
en déduire ce qu’elle fait et l’exécuter pour vérifier le résultat.
5. Dessiner les entrées-sorties de la chaîne de traitement suivante :
./sorties | cat > fictube1
en déduire ce qu’elle fait et l’exécuter puis afficher fictube1 pour vérifier le résultat.
6. Dessiner les entrées-sorties de la chaîne de traitement suivante :
./sorties | cat 2> fictube2
en déduire ce qu’elle fait et l’exécuter puis afficher fictube2 pour vérifier le résultat.
7. Dessiner les entrées-sorties de la chaîne de traitement suivante :
./sorties 2> /dev/null | cat > fictube3
en déduire ce qu’elle fait et l’exécuter puis afficher fictube3 pour vérifier le résultat.
8. La commande ls -la /users/etud/* tente d’afficher le contenu détaillé du répertoire d’accueil des
étudiants du département. S’assurer de bien avoir compris pourquoi, puis l’exécuter. Elle affiche le contenu
de certains répertoires et des messages d’erreur pour d’autres. Là encore, s’assurer de bien avoir compris
pourquoi.
9. Dessiner les entrées-sorties de la chaîne de traitement suivante :
ls -la /users/etud/* | less
puis l’exécuter. Naviguer dans la pagination de less. Constater que le résultat est assez cahotique, notamment deux exécutions successives ne s’affichent généralement pas de la même façon. Ceci parce que les
messages d’erreurs se mélangent à la pagination de less (elle utilise des séquences de caractères spéciales
permettant d’effacer l’écran et positionner le curseur). D’ailleurs, en naviguant d’une page à l’autre en
avant et en arrière, les messages d’erreur finissent par disparaître complètement.
10. Reprendre la commande précédente afin de paginer aussi les messages d’erreur.
11. Reprendre la commande précédente mais cette fois se débarrasser des messages d’erreur (ils ne doivent
plus apparaître nulle part), et ne paginer que les messages normaux.
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
3/13
Version du 24/10/2011
TP 3 Système
12. Reprendre la commande précédente en ajoutant la commande cat dans la chaîne de traitement, tout en
obtenant exactement le même résultat. En effet, cat ne servira à rien. . .
Exercice 3
Communication inter-terminaux avec tty et les redirections/tubes.
Sous Unix, tout est fichier ! Notamment, écrire dans un tube ou dans un (fichier spécial) terminal revient au
même qu’écrire dans un fichier ordinaire. De même, lire dans un tube ou dans un (fichier spécial) terminal revient
au même que lire dans un fichier ordinaire. Dans le code d’un programme, on n’a pas en tenir compte 1 . C’est le
shell (et le système) qui rend cela transparent pour les programmes.
1. Ouvrir une nouvelle fenêtre gnome-terminal à partir du PC. On l’appellera term2. La précédente fenêtre
terminal avec la connexion SSH sur allegro s’appellera term1.
2. Depuis term2, se connecter à allegro par SSH.
3. Sur term1 et term2, taper tty pour connaître le terminal utilisé par leur shell.
4. Les terminaux indiqués correspondent à des fichiers spéciaux du répertoire /dev/pts. Ces fichiers portent
un numéro en guise de nom. Depuis term1, vérifier vos droits sur ces fichiers et remarquer qu’il vous
appartiennent et que vous avez les droits de lecture et d’écriture. Vous pouvez aussi afficher le contenu
détaillé de /dev/pts pour voir tous les terminaux actuellement ouverts sur allegro.
5. Depuis term2, utiliser echo pour écrire le texte bonjour sur term1.
Aide : il suffit de rediriger la sortie de echo dans le fichier terminal utilisé par term1.
6. Depuis term2, écrire une commande qui fait afficher dans term1 le contenu du fichier /etc/passwd.
7. Depuis term2, écrire une commande qui affiche et pagine dans term1 les informations détaillées sur le
contenu du répertoire /users/etud. Noter que less doit se contrôler par le clavier sur term2 mais doit
paginer sur term1.
8. Communiquer à votre voisin la référence du terminal utilisé dans term1 et lui demander d’écrire un message (avec echo) sur ce terminal (fichier). Il ne devrait pas y parvenir.
9. Ajouter les droits d’écriture aux autres sur le terminal utilisé dans term1. Demander à nouveau à votre
voisin d’écrire un message sur ce terminal. Cette fois, il le peut.
10. Enlever le droit d’écriture aux autres sur le terminal utilisé dans term1.
11. Vérifier à nouveau les droits sur vos terminaux. Si le droit d’écriture est accordé aux membres du groupe,
alors les utilisateurs peuvent écrire un message sur le terminal correspondant en utilisant les commandes
write ou wall 2 . Dans ce cas, taper la commande :
mesg n
sur chaque terminal concerné et vérifier à nouveau les droits. Nous verrons ultérieurement comment exécuter mesg n au démarrage du shell.
i
Laisser le droit d’écriture sur le terminal au groupe (et aux autres) n’est gênant que sur allegro.
Les Debian des PC interdisant les connexions à distance, les autres utilisateurs ne peuvent pas
écrire sur les terminaux des PC.
1. Mais on a déjà vu qu’une commande comme less s’en soucie, mais à juste titre. C’est aussi le cas de ls pour savoir comment
formatter sa sortie : sur un terminal, elle peut afficher les fichiers en colonnes et en couleur (les changements de couleur sont réalisés
par des séquences de caractères spéciales), ce qu’elle ne fera pas si sa sortie n’est pas un terminal.
2. On étudiera plus tard les mécanismes permettant à write et wall de fonctionner.
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
TP 3 Système
Version du 24/10/2011
4/13
Exercice 4
Utilisation de wc
1. Se placer dans votre répertoire tpunix
2. Avec wc, faire afficher le nombre de lignes, mots et octets de votre fichier cigale.txt
3. Faire afficher uniquement la taille de la plus grande ligne de cigale.txt
4. Faire afficher le nombre de lignes de cigale.txt, sans son nom. C’est à dire que seul 21 doit être affiché.
Aide : wc affiche le nom des fichiers qu’elle reçoit en arguments mais si elle n’a pas d’argument, elle traite
l’entrée standard et n’affiche que les comptages.
5. Faire afficher le nombre de lignes de chaque fichier d’extension .txt, ainsi qu’une totalisation
6. En combinant avec cat, faire uniquement afficher le nombre total de lignes des fichiers d’extension .txt.
Aide : cat doit fournir à wc le contenu de l’ensemble des fichiers d’extension .txt, afin qu’elle en compte
le nombre de lignes.
7. Faire afficher le nombre de terminaux ouverts sur allegro.
Aide : les terminaux ouverts sont les fichiers (spéciaux) contenus dans le répertoire /dev/pts. La commande ls sans option affiche une ligne par fichier si sa sortie n’est pas un terminal (l’écran). Attention, en
utilisant l’option -l de ls, on aurait en plus au début une ligne total. . .
Exercice 5
Utilisation de head et tail
i
À vous de choisir s’il faut utiliser head et/ou tail, selon ce qui est demandé.
1. Si ce n’est pas déjà fait, se placer dans votre répertoire tpunix et y copier le fichier ~cpb/public/
unix/des_lignes.txt
2. Utiliser cat pour afficher ce fichier
3. Faire afficher la première ligne de des_lignes.txt
4. Utiliser un nombre négatif en argument de l’option -n pour faire afficher des_lignes.txt mais pas ses
deux dernières lignes
5. Faire afficher les deux dernières lignes de des_lignes.txt
6. Utiliser un nombre positif en argument de l’option -n pour faire afficher des_lignes.txt mais pas ses
cinq premières lignes
7. Faire afficher les deux premières lignes de tous vos fichiers d’extension .txt (de tpunix), sans en-tête
8. Créer un fichier extremes (attention, sans extension .txt), qui contient la première ligne de tous les
fichiers d’extension .txt et, à la suite, leur dernière ligne, le tout sans en-tête. Pour cela, il faut utiliser 2
commandes.
9. Faire afficher uniquement la ligne total produite par ls -l
10. Faire afficher uniquement les lignes 5, 6 et 7 de des_lignes.txt
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
5/13
Version du 24/10/2011
TP 3 Système
Exercice 6
Utilisation de cut (dans une chaîne de traitement)
1. Traitement de champs :
a. Afficher le fichier /etc/passwd. Celui-ci contient une ligne par utilisateur, chacune comportant sept
champs séparés par un : (deux-points) et ayant la forme suivante :
nom:motdepasse:uid:gid:infos:répertoire:shell
b. Ne faire afficher de ce fichier que les champs nom et uid
c. Modifier la commande précédente pour que le nom et le numéro soient séparés par un espace
2. Traitement de caractères :
a. Afficher les informations détaillées du répertoire de travail (tpunix)
b. En combinant ls et cut, faire uniquement afficher la taille et le nom des entrées (fichiers/répertoires) de
tpunix, séparés par un espace, à raison d’une ligne par entrée.
Aide : vous pouvez utiliser le petit programme ~cpb/public/bin/colonnes qui affiche des numéros de colonnes à hauteur d’un nombre spécifié (par défaut 80) inférieur à 100.
c. Tant qu’on y est, supprimer la première ligne (vide), qui correspond à la ligne total.
3. Traitements divers :
a. Agrandir au maximum la fenêtre de votre terminal
b. Afficher le fichier ~cpb/public/unix/a_decouper.txt. Les premières lignes indiquent les numéros de colonnes. Si on l’affiche en utilisant l’option -n de cat, chaque ligne débute par son numéro.
c. Ne faire afficher que l’intérieur du cadre.
Exercice 7
Gestion des impressions : commandes lpstat, lpr, lpq et lprm
S’assurer que l’imprimante de la salle de TP soit éteinte (on n’imprimera pas effectivement) puis :
1. Si ce n’est pas déjà le cas, se placer dans tpunix
2. Taper la commande :
lpstat -r
afin de vérifier que le serveur d’impression CUPS est actif. L’affichage doit être « l’ordonnanceur tourne
», ou « le programmateur s’exécute », ou quelque chose du genre.
3. Taper la commande :
lpstat -a
afin de vérifier l’état des files d’attente d’impression de toutes les imprimantes gérées. Le nom (des files
d’attente) des imprimantes figure en début de ligne.
4. Taper la commande :
lpr -Pimprimante cigale.txt
où, imprimante est le nom (de l’imprimante) de votre salle (A, B, C, D ou E). Cette commande demande
l’impression du fichier cigale.txt sur l’imprimante de la salle de TP.
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
TP 3 Système
Version du 24/10/2011
6/13
5. Taper la commande :
lpq -Pimprimante
afin d’afficher la liste des travaux d’impression en attente pour cette imprimante. Repérer la ligne informant
sur le travail d’impression qui vous concerne ainsi que le numéro de la tâche d’impression inscrit dans la
colonne Tâche (ou Job-ib).
6. Supprimer cette tâche d’impression en tapant la commande :
lprm -Pimprimante job-id
où job-id est le numéro de votre travail d’impression. lprm n’affiche rien si la suppression réussi. Mais on
peut vérifier avec lpq.
7. Sans fichier en argument, lpr imprime ce qu’elle lit sur son entrée standard. Elle peut donc figurer en fin
de chaîne de traitement. Taper la commande :
ls -l | lpr -Pimprimante
qui imprime le contenu détaillé du répertoire de travail sur l’imprimante imprimante.
8. Utiliser lpq pour déterminer le numéro de votre tâche d’impression (on la supprimera plus loin).
9. On peut aussi lancer l’impression de plusieurs fichiers en une tâche, et ajouter des options d’impression.
Taper la commande :
lpr -Pimprimante -o job-sheets=standard -o number-up=2 cigale.txt racine.txt
pour imprimer une page de garde (sur laquelle figure le nom d’utilisateur) suivie des fichiers cigale.txt
et racine.txt, avec une réduction de 2 pages par feuille. Le tout ne constitue qu’une seule tâche.
10. Utiliser lpq pour déterminer le numéro de cette nouvelle tâche d’impression.
11. Supprimer toutes vos tâches d’impression avec lprm.
M
Avant de quitter une salle TP, toujours vérifier avec lpq qu’aucune de vos demandes
d’impression n’est en attente.
Exercice 8
mail et le courrier électronique.
1. Se placer dans votre répertoire d’accueil
2. Créer le fichier (caché) de configuration de mail nommé .mailrc et contenant la ligne : set nohold
3. (Pour les redoublants) Si vous possédez un fichier .forward, le supprimer.
4. Taper la commande :
mail nnnppp voisin
Pour envoyer un mail à vous (nnnppp) et votre voisin.
Préciser un sujet à la suite de Subject: puis taper quelques lignes de texte (il n’est pas possible de
revenir à une ligne précédente). Terminer le message par une ligne ne contenant qu’un point.
5. Taper la commande mail (seule) pour consulter votre courrier électronique. Une liste de messages s’affiche
et mail signale qu’elle attend une commande en affichant le prompt ? .
6. Taper le numéro d’un message. S’il tient sur une page il est affiché et le prompt revient. Sinon, il est
paginé : taper Entrée pour passer à la page suivante ou q pour quitter la pagination.
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
7/13
Version du 24/10/2011
TP 3 Système
7. Supprimer un message en tapant d suivi de son numéro.
8. Quitter mail avec la commande interne q
9. Taper la commande :
mail -f ~/mbox
pour consulter les courriers sauvés dans la boîte à lettres mbox de votre répertoire d’accueil. Elle devrait
contenir ce qui n’a pas été supprimé.
10. Supprimer les messages restant puis quitter mail avec la commande q
Exercice 9
mail et les redirections
Comme pour lpr, on peut rediriger l’entrée de mail qui peut figurer dans une chaîne de traitement :
1. Taper la commande :
mail -s ’le fichier cigale’ adresse etumel < ~/tp/tpunix/cigale.txt
afin de vous envoyer un message à votre adresse mail de l’université (adresse etumel) ayant comme sujet « le fichier cigale » et contenant, comme corps de message, uniquement le contenu de votre fichier
cigale.txt.
2. Taper la commande :
ls -la ~/tp/tpunix | mail -s ’contenu de tpunix’ adresse etumel
afin de vous envoyer le contenu détaillé de votre répertoire ~/tp/tpunix
3. Les pièces jointes sont ajoutées avec l’option -a. C’est obligatoire pour tout envoi de fichier non texte.
Taper la commande (sur une seule ligne) :
mail -s ’cigale avec pièce jointe’ -a ~cpb/public/unix/garfield.gif
adresse etumel < ~/tp/tpunix/cigale.txt
afin de vous envoyer un message contenant une image en pièce jointe, de sujet « cigale avec pièce jointe »
et de corps le contenu de cigale.txt
4. Consulter votre boîte aux lettres de l’université et supprimer ces messages.
Exercice 10
Utilisation des commandes alias/unalias pour créer/supprimer de nouvelles commandes
-
Vérifier vos réponses en faisant afficher à chaque fois la liste des alias avec alias.
1. Exécuter alias pour voir la liste des alias existants.
-
En principe, plusieurs alias existent déjà parmi lesquels ls, cp, mv et rm qui remplacent les
commandes d’origine. L’alias ls ajoute à ls les options -F et --color=auto, et les commandes
cp, mv et rm se voient ajoutées l’option -i.
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
TP 3 Système
Version du 24/10/2011
8/13
2. Créer un alias del pour une commande de suppression de fichiers sans confirmation (utiliser l’option -f de
rm).
3. Créer un alias tx qui fait de votre répertoire tpunix, votre répertoire de travail quel que soit votre répertoire de travail actuel. En d’autres termes, depuis n’importe quel répertoire où vous vous trouvez, en tapant
tx vous devrez vous déplacer dans votre répertoire tpunix. Se placer dans le répertoire /bin puis tester
cet alias qui doit vous ramener dans tpunix.
4. Créer un alias copy pour une commande de copie de fichiers sans confirmation en cas d’écrasement mais
en mode verbeux. Attention ! ! Il ne faut pas utiliser l’alias de cp car l’option -i prend le pas sur l’option
-f ! Tester ensuite copy pour copier deux fois cigale.txt de tpunix dans le répertoire tp. Si le résultat
est celui attendu, supprimer le fichier cigale.txt de tp.
5. Supprimer l’alias copy.
6. Créer un alias llh qui affiche en paginant la liste détaillée des fichiers (cachés ou non) du répertoire
d’accueil de l’utilisateur en session. Plus clairement, l’alias doit fonctionner quel que soit l’utilisateur.
7. Pour cet alias, on a besoin du caractère spécial ; (point-virgule) qui permet de séparer plusieurs commandes sur une seule ligne. Créer un alias ccd qui permet de changer de répertoire de travail, mais qui
ajoute dans le fichier ~/.cd le répertoire de travail (actuel) avant de changer effectivement de répertoire.
Le tester et vérifier qu’en changeant plusieurs fois de répertoire par ccd, le fichier ~/.cd est correctement
modifié.
i
Cet alias aurait pu s’appeler cd. Cela ne gêne pas bash.
8. Supprimer l’alias ccd et le fichier ~/.cd
9. Tenter d’écrire un alias similaire à ccd mais qui écrirait le répertoire de travail dans ~/.cd après s’être
déplacé.
Exercice 11
Écriture de fonctions
1. Écrire une fonction ccd semblable à l’alias ccd mais cette fois il faut que ce soit le répertoire de travail
après le changement effectif de répertoire qui soit ajouté dans le fichier ~/.cd
-
Rappel : si l’on veut définir une fonction sur une seule ligne, il faut faire précéder la dernière accolade par un ;
2. Écrire une fonction absolue qui prend en argument une référence (relative ou absolue) d’un répertoire
existant et qui écrit sa référence absolue. Aide : il faut se déplacer dans le répertoire en question, écrire le
répertoire de travail, puis revenir au répertoire de travail précédent.
-
Quand on utilise - (tiret) en argument de cd, on revient au répertoire précédent, mais celuici est écrit par cd sur sa sortie standard. Si on ne veut pas qu’il soit écrit, il faut rediriger la
sortie standard vers le fichier /dev/null.
3. Écrire une fonction sendf qui prend en arguments une adresse électronique, la référence d’un fichier texte,
la référence d’un fichier binaire et un sujet constitué d’un seul mot, et qui envoie un mél à l’adresse
indiquée, avec le sujet indiqué, contenant le fichier texte, et en pièce jointe le fichier binaire.
Exemple d’utilisation : sendf toto fichier.txt bart.gif "une nouvelle image"
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
9/13
Version du 24/10/2011
TP 3 Système
4. Écrire une fonction pp qui prend en arguments un nom d’imprimante et un nombre quelconque de références à des fichiers, et qui imprime ces fichiers sur l’imprimante spécifiée avec 2 pages par feuille.
5. Écrire une fonction del qui crée le répertoire ~/.trash s’il n’existe pas déjà (voir les options de mkdir)
et qui déplace les fichiers passés en arguments dans ce répertoire.
6. Écrire une fonction undel qui prend un seul fichier en argument, et qui déplace (restaure) ce fichier depuis
le répertoire ~/.trash et le met dans le répertoire de travail.
7. Écrire (puis tester) une fonction interv qui prend 3 arguments et qui affiche le nombre de lignes indiqué
en argument 2, à partir de la ligne indiquée en argument 1 du fichier indiqué en argument 3. Aucun calcul
n’est nécessaire dans l’écriture de cette fonction.
Exemple :
$ interv
ceci est
ceci est
ceci est
ceci est
ceci est
3 5 des_lignes.txt
la ligne n˚3
la ligne n˚4
la ligne n˚5
la ligne n˚6
la ligne n˚7
ê
affiche 5 lignes à partir de la ligne 3 du fichier des_lignes.txt
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
TP 3 Système
Version du 24/10/2011
10/13
PARTIE FACULTATIVE
i
Bien que facultative, cette partie est un bon entrainement pour l’utilisation des tubes. . .
ASCII Art
L’ASCII-Art est l’art d’utiliser de simples caractères afin de reproduire des images ou différents effets. Le
fichier simpsons.txt en est un exemple. Le mail de bienvenue que je vous ai envoyé a été fabriqué à partir
d’utilitaires permettant de mettre en forme du texte.
Sur allegro, dans le répertoire ~cpb/public/bin, il y a plusieurs fichiers exécutables dont : cowsay, cowthink, figlet, showfigfonts et boxes :
• cowsay (cowthink) fait dire (penser) par une vache (ou d’autres créatures selon les options) le texte en
arguments ou lu sur l’entrée standard. Si ce texte tient sur plusieurs lignes, il faut utiliser l’option -n.
Exemple : cowsay ’hello kids’ provoque l’affichage suivant :
____________
< hello kids >
-----------\
^__^
\ (oo)\_______
(__)\
)\/\
||----w |
||
||
• figlet écrit le texte en argument ou lu sur l’entrée standard, en utilisant une police faite de caractères
ASCII.
Exemples : figlet ’hello kids’ provoque l’affichage suivant :
_
_ _
| |__
___| | | ___
| ’_ \ / _ \ | |/ _ \
| | | | __/ | | (_) |
|_| |_|\___|_|_|\___/
_
_
_
| | _(_) __| |___
| |/ / |/ _‘ / __|
|
<| | (_| \__ \
|_|\_\_|\__,_|___/
ou, en utilisant la police slant : figlet -f slant ’hello kids’ affiche :
__
____
__
_
__
/ /_ ___ / / /___
/ /__(_)___/ /____
/ __ \/ _ \/ / / __ \
/ //_/ / __ / ___/
/ / / / __/ / / /_/ / / ,< / / /_/ (__ )
/_/ /_/\___/_/_/\____/ /_/|_/_/\__,_/____/
• La liste des "fonts" (polices) installées pour figlet est écrite par la commande figlist. Une illustration du
rendu de chaque police est obtenue par showfigfonts.
• boxes permet d’encadrer par différents cadres le texte d’un fichier spécifié en argument, ou le texte lu
sur l’entrée standard. La liste des cadres disponibles peut être obtenue par la commande boxes -l. On
sélectionne un cadre par l’option -d. Exemples : echo ’hello kids’ | boxes provoque l’affichage
suivant :
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
11/13
Version du 24/10/2011
TP 3 Système
/**************/
/* hello kids */
/**************/
et echo ’hello kids’ | boxes -d boy affiche :
.-"""-.
/ .===. \
\/ 6 6 \/
( \___/ )
_ooo__\_____/______
/
\
| hello kids
|
\_______________ooo_/
| | |
|_ | _|
| | |
|__|__|
/-’Y’-\
(__/ \__)
• Il existe des pages de manuel de ces commandes mais elles ne sont pas installées dans un emplacement
"standard". Il faut utiliser l’option -M ~cpb/public/man pour y avoir accès.
Exemple : man -M ~cpb/public/man cowsay
i
Pour différentes raisons (un peu techniques), vous ne pouvez actuellement pas exécuter ces utilitaires
en montant mon répertoire sur la Debian. Vous ne pouvez les utiliser que depuis allegro.
Exercice 12
Utilisation des tubes en jouant avec cowsay, cowthink, figlet, showfigfonts et boxes.
1. Reproduire l’affichage suivant :
-----------------------------------------/ ____
_
_ \
| | _ \
(_)
| | |
| | |_) | ___ _ __ _ ___ _
_ _ __| | |
| | _ < / _ \| ’_ \| |/ _ \| | | | ’__| | |
| | |_) | (_) | | | | | (_) | |_| | | |_| |
| |____/ \___/|_| |_| |\___/ \__,_|_| (_) |
|
_/ |
|
\
|__/
/
-----------------------------------------\
^__^
\ (oo)\_______
(__)\
)\/\
||----w |
||
||
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011
TP 3 Système
Version du 24/10/2011
12/13
2. Reproduire l’affichage suivant :
.
|
.
|
/
’.
\ ’ /
.’
’. .’‘‘‘’. .’
<>......................:::::::‘.......‘:::::::.....................<>
<>: _____________________________________________________________ :<>
<>:( _____ _
__
_ _
) :<>
<>:( |_
_| | / _|
(_) |
) :<>
<>:(
| | | | | |_ __ _ _| |_
_
_ _ __
_ __
___ _
_ ) :<>
<>:(
| | | | | _/ _‘ | | __| | | | | ’_ \ | ’_ \ / _ \ | | | ) :<>
<>:( _| |_| | | || (_| | | |_ | |_| | | | | | |_) | __/ |_| | ) :<>
<>:( |_____|_| |_| \__,_|_|\__| \__,_|_| |_| | .__/ \___|\__,_| ) :<>
<>:(
| |
) :<>
<>:(
|_|
) :<>
<>:(
_
_
) :<>
<>:(
| |
| |
) :<>
<>:(
___| |__
__ _ _
_ __| |
) :<>
<>:( / __| ’_ \ / _‘ | | | |/ _‘ |
) :<>
<>:( | (__| | | | (_| | |_| | (_| |_ _ _
) :<>
<>:( \___|_| |_|\__,_|\__,_|\__,_(_|_|_)
) :<>
<>:(
) :<>
<>:(
) :<>
<>: ------------------------------------------------------------- :<>
<>:
o
^__^
:<>
<>:
o (oo)\_______
:<>
<>:
(__)\
)\/\
:<>
<>:
||----w |
:<>
<>:
||
||
:<>
<>:................................................................:<>
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
.
\
Cyril Pain-Barre, 2000-2011
INFO - IUT Aix-en-Provence
13/13
Version du 24/10/2011
TP 3 Système
3. Faire afficher la liste des fichiers du répertoire /users, en utilisant la police mini, et en encadrant le tout
par la boîte peek pour donner :
/*
_\|/_
(o o)
+----oOO-{_}-OOo-------------+
|
|
| _. _.
__|_ _.
_ _ ._|
|(_|(_||_|(_)|_(_|o|_|_>(/_| |
|
|
|
|
|
| _. _ _ _
|
|(_|_>_>(_)
|
|
|
|
|
| __|_
_|
|
|(/_|_|_|(_|
|
|
|
|
_
|
|| _ __|__|__|__
._ _| |
||(_)_> |_ | |(_)|_|| |(_| |
|
|
|
_
|
|._ .___|_
|
||_)|(_)|
|
||
|
|
|
+---------------------------*/
4. Utiliser boxes de façon à encadrer le code source de ~cpb/public/unix/sans-commentaire.cxx
par la boîte c (qui a pour effet de commenter le texte intérieur) et produire le fichier
tout-commentaire.cxx dans votre répertoire tpunix.
5. Faire raconter la fable « la cigale et la fourmi » (contenu dans cigale.txt) par la vache tout en la plaçant
dans un champ de printemps (spring).
6. Concaténer les textes racine.txt et amphigouri.txt pour les afficher dans un parchemin (parchment
ou scroll).
i
À vous d’inventer la suite. . .
INFO - IUT Aix-en-Provence
Cyril Pain-Barre, 2000-2011