Unix Utilisateur L`3 – Contrôle Écrit

Transcription

Unix Utilisateur L`3 – Contrôle Écrit
Unix Utilisateur L'3 – CE
EFREI 2009 – 2010
Unix Utilisateur L'3
–
Contrôle Écrit
Partie « Unix Utilisateur » du contrôle de rattrapage n° 2 du 30/06/2010 (l'autre partie est « Architecture et
Système »). Aucun document n'est autorisés.
Exercice 1 : Questions générales
Comment obtenir la syntaxe d'utilisation de la commande tar ? (1 point)
Solution :
Trois possibilités :
$ man tar
$ info tar
$ tar --help
Quel est le rôle de la variable d'environnement PATH ? (1 point)
Solution :
PATH liste les répertoires dans lesquels le shell doit chercher les commandes que l'utilisateur entre
sans spécifier de chemin d'accès. Les répertoires sont séparés par le caractère « : », « . » désigne le
répertoire courant.
Que fait la commande export ? (1 point)
Solution :
Par défaut, une variable définie dans le shell courant n'est pas transmise aux commandes que ce
shell lance. La commande export VARIABLE demande au shell de transmettre aux processus qu'il
lance la variable VARIABLE et sa valeur courante.
Comment lancer une commande en arrière plan (ou background) ? A quoi cela sert-il ? (1 point)
Solution :
On lance une commande en arrière plan en la faisant suivre par le caractère « & ». Cela permet de
passer d'autres commandes sans attendre que la première se termine.
Donnez une commande qui affiche le nombre des fichiers ou répertoires du répertoire /usr/bin
qui commencent par gno. (1 point)
Solution :
ls /usr/bin/gno* | wc -l
1/3
Unix Utilisateur L'3 – CE
EFREI 2009 – 2010
Donnez une commande qui écrit dans le fichier resultat.txt le nombre de fichiers ou
répertoires situés immédiatement sous le répertoire /var. (1 point)
Solution :
ls /var | wc -l > resultat.txt
Donnez une commande qui retire à tous les utilisateurs sauf son propriétaire les droits de lecture et
d'écriture sur le fichier script.sh. (1 point)
Solution :
chmod go-rw script.sh
Lors de l'exécution de la commande cp *.c source, qui traduit l'expression *.c et la remplace
par l'ensemble des fichiers du répertoire courant se terminant par .c ? (1 point)
Solution :
C'est le shell qui effectue cette substitution. Cette fonctionnalité bénéficie donc à toutes les
commandes lancées par le shell.
Exercice 2 : Écriture de script
Soit le script script.sh suivant :
#!/bin/sh
if [ $# -gt 0 ]; then
echo "usage: $0" >&2
exit 1
fi
while true; do
date
ls -l ~
sleep 7200
done
Indiquez précisément en trois ou quatre phrases ce que fait ce script. (2 points)
Solution :
Le script vérifie que le nombre de paramètres d'appel est 0. Si ce n'est pas le cas, il affiche la
syntaxe d'appel sur la sortie erreur et se termine avec le code retour 1.
Le script entre ensuite dans une boucle infinie. Toutes les deux heures, celle-ci affiche sur la sortie
2/3
Unix Utilisateur L'3 – CE
EFREI 2009 – 2010
standard la date courante et le contenu du répertoire HOME de l'utilisateur.
Donnez ci-dessous une nouvelle version du script qui prenne en paramètre la durée d'attente entre
chaque itération de la boucle (2 points). Le script se lance alors de la façon suivante (exemple) :
$ script.sh 120
Solution :
#!/bin/sh
if [ $# -ne 1 ]; then
echo "usage: $0 duree" >&2
exit 1
fi
DUREE=$1
while true; do
date
ls -l ~
sleep $DUREE
done
Donnez ci-dessous une nouvelle version du script qui prenne un second paramètre spécifiant le nom
d'un fichier dans lequel écrire toutes les informations recueillies (2 points). Le script se lance alors
de la façon suivante (exemple) :
$ script.sh 120 ~/tmp/home.log
Solution :
#!/bin/sh
if [ $# -ne 2 ]; then
echo "usage: $0 duree log" >&2
exit 1
fi
DUREE=$1
LOG=$2
while true; do
date >> $LOG
ls -l ~ >> $LOG
sleep $DUREE
done
3/3