5. Exercices

Exercice - Mécanisme d'évaluation (1)

Soit les affectations suivantes :


$ set x=date                                                                        
$ set y=foobar 

Tester les commandes suivantes et expliquer dans chaque cas le résultat obtenu.


$ echo $x ; echo $y ; echo $z                                                   

$ echo "$x" ; echo "$y" ; echo "$z"

$ echo '$x' ; echo '$y' ; echo '$z'

$ echo `$x` ; echo `$y` ; echo `$z` 

$ $x ; $y ; $z

$ "$x" ; "$y" ; "$z"

$ '$x' ; '$y' ; '$z'

$ `$x` ;  `$y` ; `$z` 

$ $y=`$x` 

$ echo $foobar

Exercice - Mécanisme d'évaluation (2)

Tester les commandes suivantes et expliquer dans chaque cas le résultat obtenu.


$ echo pwd                                                                      

$ `echo pwd`

$ 'echo pwd'

$ "echo pwd"

$ echo echo pwd

$ echo `echo pwd`

$ echo 'echo pwd'

$ echo "echo pwd"

$ echo '`echo pwd`'

$ echo '`echo pwd`'

Exercice - Modification de l'environnement d'un processus, incidence sur le/les fils

Dans un terminal, sous le shell courant définir deux variables (var1 et var2) et modifier quelques variables d'environnement. Afficher l'environnement ainsi modifié.

Dans ce même terminal, empiler un nouveau shell (/bin/tcsh). Quelle sont les valeurs de var1 et var2, des variables d'environnement ? Définir une variable var3.

Quitter ce shell et revenir à l'environnement initial (exit). Examiner son environnement, que vaut var3 ? Conclure.

Exporter maintenant la variable var1, empiler un nouveau shell. Examiner son environnment. Modifier ensuite var1. Définir la variable var2. Quitter ce shell, pour revenir à celui de départ. Quelles sont les valeurs de var1 et var2 ?

Et si avant de quitter ce shell empilé, vous aviez exporté la variable var2, qu'auriez-vous obtenu ?

Exercice - Exécution asynchrone concurrente de processus

Exécuter la commande suivante dans un premier terminal, et dans un second ouvert pour l'occasion, lister les processus en cours d'exécution (se limiter aux seuls processus du terminal « générateur »), observer leur filiation, le nombre de processus :


$ ( ls -la /usr/bin/ ; sleep 5 ; echo "5 - OK" ; last ) & \                     
( cat /etc/passwd ; sleep 7 ; echo "7 - OK" ; cat /etc/group ) & ps aux

Observer l'entrelacement des résulats de ces commandes.

La séquence backslash (i.e. \), suivit de la touche <Entrée> indique au shell une continuation de la commande sur la ligne suivante. Que fait la commande sleep ?

Exercice - Manipulation de jobs (1)

Lancer la commande suivante : find / -type d -print, laquelle recherche tous les objets de type répertoire dans toute l'arborescence. La recherche se fait de manière récursive et comme l'arborescence est grande, l'exécution est un peu longue. On est bloqué tant que le processus exécutant le find n'est pas terminé. Il vous est demandé de :

  1. suspendre (ou stopper) le processus.

  2. de le relancer en arrière-plan

  3. de le ramener au premier plan

  4. de le terminer.

Est-il possible de « tuer » des processus ne vous appartenant pas ? Tester-le.

Si vous n'êtes pas assez rapide ou bien si la commande s'exécute trop rapidement, ouvrir un nouveau terminal et refaire le travail demandé.

Exercice - Manipulation de jobs (2)

Reprendre l'exemple de la commande find, de la section « Section 2.10, « Redirection de commandes » », mais limiter la recherche au répertoire /etc.

  1. Rediriger uniquement la sortie d'erreur dans le fichier (ferr) ;

  2. Rediriger uniquement la sortie standard dans un fichier (fout) ;

  3. Multiplexer les sorties standard et d'erreur dans le même fichier (fouterr) ;

  4. Rediriger (démultiplexer) la sortie standard et la sortie d'erreur dans les fichiers respectifs (fout et ferr).

Skins :
Transparence
Simple
Page Accueil
Formation