ECOLE NATIONALE DES SCIENCES
DE L'INFORMATIQUE
ANNEE UNIVERSITAIRE
2014/2015
EPREUVE DE : S.Expl. & Mise en Œuvre UNIX
CONTROLE : Devoir Surveillé
DUREE : 2 heures
DOCUMENTS : non autorisés
: 11 Mars 2015
: II1
DATE
CLASSE
NB. PAGES : 4
ENSEIGNANT : M.S. OUERGHI
NOM & PRENOM :
Groupe : II1G
Questions de cours (5 points = 5*1)
Encercler les bonnes réponses :
1. Quel est l’un des avantages d’utiliser une machine virtuelle ?
A. aller plus vite à l’exécution
B. simplifier la programmation
C. gagner de la place mémoire
D. rendre transparent le support d’exécution
2. Un _____ est _____.
A. processus : un programme
B. processus : une abstraction d’un programme en exécution
C. processus : un programme sur le disque
D. processus : une copie des valeurs des registres
E. aucune des combinaisons précédentes
3. Deux points (..) désigne :
A. le répertoire courant
B. le répertoire père du répertoire courant
C. la racine du système de fichiers
D. le répertoire fils du répertoire courant
4. Les droits d’un fichier Unix peuvent être codés sur une suite de :
A. 6 bits
B. 9 bits
C. 12 bits
D. 15 bits
5. Un système _______ permet à plusieurs utilisateurs _________.
A. à temps partagé : d’exécuter leurs programmes en même temps
B. à temps partagé : de partager la mémoire
C. à temps partagé : d’avoir l’illusion de programmes s'exécutant en même temps
D. de traitement par lots : de faire du temps partagé
E. aucune des combinaisons précédentes
Exercice 1
Vous venez d'ouvrir une session à l'aide du compte d'un utilisateur appelé linuxuser.
(5 points=0,5+0,5+1+ 6*0,5)
1. Dans quel répertoire de connexion vous serez automatiquement situé ? (donnez le chemin absolu) (0.5 pt)
..........................................................................................................................................................................
..........................................................................................................................................................................
2. Quelle commande vous permet d'avoir cette information ? (0.5 pt)
..........................................................................................................................................................................
..........................................................................................................................................................................
1
3. Donnez la séquence de commandes complètes (dans le bon ordre, avec tous les arguments et/ou options
nécessaires) pour créer l'arborescence suivante dans ce répertoire. Les feuilles de cet arbre sont des fichiers
ordinaires vides, le nom du répertoire « Mes Cours » contient un espace. (1 pt)
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
4. Donnez la commande permettant de créer un lien symbolique vers le fichier TD1 dans le répertoire de
votre connexion. (0.5 pt)
............................................................................................................................................................................
............................................................................................................................................................................
5. Donnez une commande permettant de copier le fichier noteschap1 dans le sous répertoire ExUnix
(respectez les chemins).( 0.5 pt)
............................................................................................................................................................................
...........................................................................................................................................................................
6. L'utilisateur veut connaitre les permissions des éléments de l’arborescence crée. Quelle commande doit-il
exécuter ? (0.5 pt)
............................................................................................................................................................................
............................................................................................................................................................................
7. Il remarque que tous les fichiers qu'il a crée portent les permissions rw-rw-r-- . Quelle commande permet
d'indiquer les permissions initiales par défaut que le système applique automatiquement à la création des
fichiers et des répertoires ? (0.5 pt)
............................................................................................................................................................................
Publicité
............................................................................................................................................................................
8. L'utilisateur veut sécuriser plus ses éléments futurs et veut ainsi que tous les fichiers qu'il créera porteront
les permissions rw-r-----. Donnez la commande complète qu'il faut exécuter avec ses arguments. (0.5 pt)
............................................................................................................................................................................
............................................................................................................................................................................
9. Donnez la commande permettant de donner toutes les permissions à tous les utilisateurs pour le fichier
TD1. (0.5 pt)
............................................................................................................................................................................
............................................................................................................................................................................
2
NOM & PRENOM :
Groupe : II1G
(2 points=2*1)
Exercice 2
1 - Expliquez, en donnant plusieurs exemples en shell, ce qu’est une redirection d’entrée/sortie
standard.
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
2 - Expliquez le rôle d’un tube (filtre) entre deux commandes. Donnez un exemple d’utilisation de
ce tube, puis son équivalent en n’utilisant que des redirections.
............................................................................................................................................................................
............................................................................................................................................................................
............................................................................................................................................................................
(3 points=2,5*05 + 0,5)
Exercice 3
Commentez les lignes du script shell qui suit qui renferment un "#" puis indiquez à la fin ce qu’il
est censé réaliser.
if
test $# -ne 1
#
then echo nombre de paramètres incorrect
#
#
#
#
elif
test $1 -lt 0
then echo argument non correct
elif
test $1 -eq 0 -o $1 -eq 1
then echo le résultat trouvé est = 1
else
res=1
for i in seq 2 1 $1
do
res=expr $i \* $res
done
echo le résultat trouvé est = $res
fi
ce script est censé calculer …………….
puisque ….
#
3
Exercice 4
(5 points = 10 *0,5)
Ecrire un script shell qui permet de traiter ses arguments d’appel qui sont supposés n’être que des
fichiers ordinaires.
Le script doit vérifier que :
- le nombre d’arguments d’appel est au moins égal à 1.
- chaque argument d’appel correspond au nom d’un fichier ayant les caractéristiques suivantes :
- c’est un fichier ordinaire,
- c’est un fichier de type ASCII Text,
- c’est un fichier non vide,
- c’est un fichier accessible en lecture.
Le script affichera pour chaque fichier ayant les caractéristiques précédentes : son nom, suivi du
nombre de ses lignes, et le contenu de ses 5 premières et 5 dernières lignes séparées par une ligne de
3 points de suspension.
En fin de traitement, le script affichera le nombre total de lignes trouvé pour l'ensemble des fichiers
ayant subis le traitement précédent.
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
Publicité
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
…...........................................................................................................................................................................
4
ECOLE NATIONALE DES SCIENCES
DE L'INFORMATIQUE
ANNEE UNIVERSITAIRE
2014/2015
EPREUVE DE : S.Expl. & Mise en Œuvre UNIX
CONTROLE : Devoir Surveillé
DUREE : 2 heures
DOCUMENTS : non autorisés
: 11 Mars 2015
: II1
DATE
CLASSE
NB. PAGES : 4
ENSEIGNANT : M.S. OUERGHI
Questions de cours (5 points = 5*1)
Encercler les bonnes réponses :
CORRIGE
1. Quel est l’un des avantages d’utiliser une machine virtuelle ?
A. aller plus vite à l’exécution
B. simplifier la programmation
C. gagner de la place mémoire
D. rendre transparent le support d’exécution
2. Un _____ est _____.
A. processus : un programme
B. processus : une abstraction d’un programme en exécution
C. processus : un programme sur le disque
D. processus : une copie des valeurs des registres
E. aucune des combinaisons précédentes
3. Deux points (..) désigne :
A. le répertoire courant
B. le répertoire père du répertoire courant
C. la racine du système de fichiers
D. le répertoire fils du répertoire courant
4. Les droits d’un fichier Unix peuvent être codés sur une suite de :
A. 6 bits
B. 9 bits
C. 12 bits
D. 15 bits
5. Un système _______ permet à plusieurs utilisateurs _________.
A. à temps partagé : d’exécuter leurs programmes en même temps
B. à temps partagé : de partager la mémoire
C. à temps partagé : d’avoir l’illusion de programmes s'exécutant en même temps
D. de traitement par lots : de faire du temps partagé
E. aucune des combinaisons précédentes
Exercice 1
Vous venez d'ouvrir une session à l'aide du compte d'un utilisateur appelé linuxuser.
(5 points=0,5+0,5+1+ 6*0,5)
1. Dans quel répertoire de connexion vous serez automatiquement situé ? (donnez le chemin absolu) (0.5 pt)
/home/linuxuser
2. Quelle commande vous permet d'avoir cette information ? (0.5 pt)
echo $HOME
(on peut également l’obtenir par pwd si on vient d’ouvrir la session de travail)
5
3. Donnez la séquence de commandes complètes (dans le bon ordre, avec tous les arguments et/ou options
nécessaires) pour créer l'arborescence suivante dans ce répertoire. Les feuilles de cet arbre sont des fichiers
ordinaires vides, le nom du répertoire « Mes Cours » contient un espace. (1 pt)
cd
mkdir "Mes Cours"
cd "Mes Cours"
mkdir CoursUnix
mkdir CourUML
touch CoursUnix/noteschap1
touch CoursUML/remarques
cd ~
mkdir Exercices
mkdir Exercices/ExUnix
cd Exercices/ExUnix
touch TD1
cd $HOME
4. Donnez la commande permettant de créer un lien symbolique vers le fichier TD1 dans le répertoire de
votre connexion. (0.5 pt)
ln –s /home/linuxuser/Exercices/ExUnix/TD1 /home/linuxuser/raccourciTD1
5. Donnez une commande permettant de copier le fichier noteschap1 dans le sous répertoire ExUnix
(respectez les chemins).( 0.5 pt)
Publicité
cp $HOME/"Mes Cours"/CoursUnix/noteschap1 $HOME/Exercices/ExUnix/noteschap1
6. L'utilisateur veut connaitre les permissions des éléments de l’arborescence crée. Quelle commande doit-il
exécuter ? (0.5 pt)
ls -lR /home/linuxuser
7. Il remarque que tous les fichiers qu'il a crée portent les permissions rw-rw-r-- . Quelle commande permet
d'indiquer les permissions initiales par défaut que le système applique automatiquement à la création des
fichiers et des répertoires ? (0.5 pt)
umask
8. L'utilisateur veut sécuriser plus ses éléments futurs et veut ainsi que tous les fichiers qu'il créera porteront
les permissions rw-r-----. Donnez la commande complète qu'il faut exécuter avec ses arguments. (0.5 pt)
Pour les fichiers ordinaires, les droits maximum sont 666, par conséquent la valeur de umask à
026 donne les permissions640= 666-026 ; ce qui correspond bel et bien à rw-r-----
9. Donnez la commande permettant de donner toutes les permissions à tous les utilisateurs pour le fichier
TD1. (0.5 pt)
chmod 777 /home/linuxuser/Exercices/ExUnix/TD1
6
(2 points=2*1)
Exercice 2
1 - Expliquez, en donnant plusieurs exemples en shell, ce qu’est une redirection d’entrée/sortie
standard.
Sous Unix/Linux, chaque processus possède 3 flux standards qu'il utilise pour communiquer en
général avec l'utilisateur :
l'entrée standard nommée stdin (identifiant 0) : il s'agit par défaut du clavier,
a sortie standard nommée stdout (identifiant 1) : il s'agit par défaut de l'écran,
la sortie d'erreur standard nommée stderr (identifiant 2) : il s'agit par défaut de l'écran.
Ces flux peuvent être redirigés afin que le processus interagisse avec un autre au lieu d'interagir
avec l'utilisateur.
Rediriger la sortie standard
Quand on exécute une commande, le shell affiche le résultat sur la console de sortie. On
peut rediriger cette sortie vers un fichier en utilisant le signe > (ou 1>).
ls > resultat_ls
Ex1 :
Si le fichier existe déjà, il est écrasé.
Au lieu de créer un fichier, il est possible d'ajouter les sorties d'un processus à un fichier
existant en utilisant le double signe >>.
Ex2 :
ls >> resultat
Si le fichier résultat existe déjà, les affichages sont concaténés.
Rediriger la sortie d'erreur standard
La redirection du flux de sortie d'erreur standard utilise les même signes(> et >>), mais
précédés de l'identifiant du flux : 2.
Ex3 :
Rediriger l'entrée standard
ls 2> erreurs
Rediriger l'entrée standard permet d'entrer des données provenant d'un fichier au lieu
du clavier.
Ex4 :
cat < monfichier.txt
2 - Expliquez le rôle d’un tube (filtre) entre deux commandes. Donnez un exemple d’utilisation de
ce tube, puis son équivalent en n’utilisant que des redirections.
Un tube redirige la sortie d'une commande vers l'entrée d'une autre commande.
La commande suivante permet d’afficher la taille des fichiers et répertoires, et les trier du plus
grand au plus petit :
du | sort -rn
Un tube entre deux commandes est équivalent à utiliser un fichier temporaire (en réalité en
mémoire centrale) et une double redirection.
La commande précédente est équivalente à :
touch tempo ; du > tempo ; sort –rn <tempo ; rm tempo
7
(3 points=2,5*05 + 0,5)
Exercice 3
Commentez les lignes du script shell qui suit qui renferment un "#" puis indiquez à la fin ce qu’il
est censé réaliser.
test $# -ne 1
if
then echo nombre de paramètres incorrect
#si le nbre d’arguments est différent de 1
elif
test $1 -lt 0
#si le 1er paramètre est inférieur à 0
then echo argument non correct
elif
test $1 -eq 0 -o $1 -eq 1
then echo le résultat trouvé est = 1
else
res=1
for i in seq 2 1 $1
do
res=expr $i \* $res
done
echo le résultat trouvé est = $res
Publicité
fi
#si le 1er paramètre est égal à 0 ou à 1
#Pour i allant de 2 à valeur du 1er paramètre
#affecter à res le résultat de la multiplication
#de la valeur de i par celui de res
ce script est censé calculer la factorielle d’un entier donné en paramètre d’appel
#si ce paramètre est omis ou bien si valeur est négative, on affiche un message d’erreur
#si res correspond à notre factorielle on a :
res(0)=res(1)=1,
res(i)=i*res(i-1) pour i appartenant allant de 2 à valeur du 1er paramètre
Exercice 4
(5 points = 10 *0,5)
Ecrire un script shell qui permet de traiter ses arguments d’appel qui sont supposés n’être que des
fichiers ordinaires.
Le script doit vérifier que :
- le nombre d’arguments d’appel est au moins égal à 1.
- chaque argument d’appel correspond au nom d’un fichier ayant les caractéristiques suivantes :
- c’est un fichier ordinaire,
- c’est un fichier de type ASCII Text,
- c’est un fichier non vide,
- c’est un fichier accessible en lecture.
Le script affichera pour chaque fichier ayant les caractéristiques précédentes : son nom, suivi du
nombre de ses lignes, et le contenu de ses 5 premières et 5 dernières lignes séparées par une ligne de
3 points de suspension.
En fin de traitement, le script affichera le nombre total de lignes trouvé pour l'ensemble des fichiers
ayant subis le traitement précédent.
8
#Ce script teste le type de chaque fichier passé en paramètre et affiche une partie de celui-ci
#si les tests sont concordants (fichier régulier, non vide, de type ASCII text et lisible).
#En fin de traitement : un total du nombre de caractères contenu dans l'ensemble des fichiers
traités est affiché
clear
#on commence par tester le nombre de paramètres passé au script
if test $# -lt 1
then echo "usage : $0 arg..."
exit
fi
#on fait une boucle sur l'ensemble des paramètres
param=0
TotSize=0
for f in $*
do param=expr $param + 1
echo -e "\n\tTraitement du paramètre n°$param"
echo -e "\t----------------------------"
if ! test -e $f
then echo $f : fichier inexistant
continue
fi
#vérifions si le fichier existe ou pas
#faire les autres tests sur le fichier puisqu’il est existant
if test -f $f
then if test -s $f
#fichier régulier
#fichier non vide
then ascii=file $f | grep -c "ASCII text"
if test $ascii -eq 1
if test -r $f
then
then
#calculer et afficher la taille du fichier
#fichier de type ASCII text
#fichier accessible en lecture
Size=cat $f | wc -c
echo -e "nom du fichier: $f \ttaille: $Size"
#afficher le contenu partiel du fichier
echo "contenu partiel :"
head -5 $f
echo " ... "
tail -5 $f
#calculer le total des tailles des fichiers traités
TotSize=expr $TotSize + $Size
else echo fichier $f : non lisible
fi
else echo fichier $f : non ASCII text
fi
else echo fichier $f : vide
fi
else echo fichier $f : non ordinaire ou inexistant
fi
done
#traitement en fin de boucle
echo -e "\n\n"
echo "============================================"
echo "Taille totale des fichiers traités : $TotSize"
echo "============================================"
9