Systèmes d`Exploitation Contrôle continu

publicité
Systèmes d’Exploitation
Contrôle continu
Durée de l’examen : 1h30
Avec la correction
Attention : Les documents et les calculatrices sont interdits !
Attention : Pensez aussi à écrire lisiblement.
1
Commandes de base (6 points)
Donner les commandes permettant de :
1. Créer le répertoire rep1 dans le dossier rep2
2. Afficher le contenu du fichier texte f1.txt
3. Créer un fichier new.txt vide
4. Ajouter le texte "Bonjour tout le monde" à la suite d’un fichier texte blabla.txt
5. Compter le nombre de lignes d’un fichier roman.txt
6. Se déplacer dans le dossier d1, puis lister son contenu
7. Afficher les lignes de f1 commençant par un a et finissant par un z
8. Copier le contenu de tous les fichiers .txt du répertoire courant dans un nouveau fichier collage.txt
9. Donner, à tous les utilisateurs, les droits d’écriture sur le fichier public.txt
10. Afficher les informations des documents ayant pour extension .bmp ou .jpg du répertoire courant
11. Rechercher, sur l’ensemble de votre répertoire home et de ses sous répertoires, tous les fichiers texte dont le
nom commence par log, et afficher chacun de ces fichiers trié
Solution : 0.5 point pour chaque réponse correcte, sauf 1 point pour la dernière
1. mkdir d2/d1
2. cat f1.txt
3. touch new.txt
4. echo "Bonjour tout le monde" >> blabla.txt
5. wc -l roman.txt
6. cd d1; ls
7. grep ’^a.*z$’ f1
8. cat *.txt > collage.txt
9. chmod a+w public.txt
10. ls -l *.bmp *.jpg
11. find ~ -name "log*.txt" -exec sort {} \;
2
Commandes avancées (4 points)
Soit le fichier étudiants.txt suivant :
Nom/Sexe/Age/Filière/Note maths/Note anglais
Paoli Gilles;garçon;19;DUT info;14;16
Lejeune Cécile;fille;20;DUT gea;19;12
Albert Charlotte;fille;22;LICENCE info;11;13
[..]
1
1. Utiliser la commande cut afin de retourner la liste triée des noms des étudiants. Enregistrer cette liste dans un
fichier liste_noms.txt
2. Modifier la commande précédente pour qu’elle affiche en plus à l’écran le nombre d’étudiant (tout en créant
toujours la liste des étudiants dans le fichier liste_noms.txt)
3. Afficher le nom des personnes dont la note d’anglais est meilleure que la note de mathématiques.
4. Calculer la moyenne des notes de mathématiques des étudiants en DUT info.
5. Afficher le nombre de filles de plus de 20 ans en DUT (info, gea, ...)
Solution
1. 0.5 point. cut -s -d ’;’ -f 1 etudiants.txt | sort > liste_noms.txt
2. 0.5 point. cut -s -d ’;’ -f 1 etudiants.txt | sort | tee liste_noms.txt | wc -l
3. 1 point. awk -F ’;’ ’$6>$5 {print $1}’ etudiants.txt
4. 1 point. awk -F ’;’ ’$4=="DUT info" { somme += $5 ; nbEtudiants ++ }
END {print somme/nbEtudiants}’ etudiants.txt
5. 1 point. awk -F ’;’ ’$2=="fille" && $3>20 && $4~/^DUT/ { nbfilles ++ }
END {print nbfilles}’ etudiants.txt
3
Explication de commandes (3 points)
De façon concise, mais précise, expliquer ce que font les commandes suivantes :
1. ln -s f1 f2
2. cp sed s/old/new/g
3. grep -v "^d\|s$" *.txt
4. I=2 ; while [ $I -lt 10 ] ; do echo $I ; I=$(($I+2)) ; done
5. sed -e ’s/<[^>]*>//g’ f1.html avec f1.html contenant le texte suivant :
Pourquoi <g>philosopher</g> alors qu’on peut <b>chanter</b> ?
6. for i in *; do echo $i; done
Solution
1. 0.5 point. Crée un lien symbolique pour le fichier f1, appelé f2
2. 0.5 point. Copie un fichier nommé sed dans le répertoire s/old/new/g
3. 0.5 point. Affiche les lignes de tous les documents textes du répertoire courant ne commançant pas par un d et
ne finissant pas par un s.
4. 0.5 point. Affiche 2 4 6 8 (chacun sur une ligne)
5. 0.5 point. Affiche "Pourquoi philosopher alors qu’on peut chanter ?" (retire les balises)
6. 0.5 point. Liste l’ensemble des fichiers et répertoire du répertoire courant. (équivalent à ls)
4
Irregular verbs (Five points)
On considère le fichier irregular.txt suivant :
be,was/were,been,être
become,became,become,devenir
begin,began,begun,commencer
bet,bet,bet,parier
[..]
On souhaite écrire un script verb.sh qui va nous servir à retourner les conjugaisons, ainsi que les traductions,
des verbes irréguliers anglais. Il peut être appelé avec plusieurs paramètres :
–
–
–
–
./verb.sh
./verb.sh
./verb.sh
./verb.sh
conjug preterit be
conjug pastperfect be
traduire be
translate parier
retourne
retourne
retourne
retourne
le prétérit de be (was/were)
le participe passé de be (been)
la traduction française de be (être)
la traduction anglaise de parier (bet)
2
– ./verb.sh verifie be être
retourne Vrai si l’utilisateur a donné la bonne traduction, Faux sinon
Voici le script, incomplet :
# Il manque une ligne particulière au tout début de ce fichier... #
preterit () {
awk -F "," -#?# verbe_recherche=$1 ’# retourner le bon champ, pour la ligne telle que #
# le verbe recherché soit celui passé en paramètre #
’ irregular.txt
}
participe_passe () { # ne pas compléter # }
traduction () { # ne pas compléter # }
translating () { # ne pas compléter # }
verifie_traduction () {
# à ecrire en utilisant awk #
}
# CORPS DU SCRIPT
# A l’aide d’une (ou plusieurs) conditionnelle si.. sinon..,
# on teste le ou les premiers paramètres et on lance la bonne fonction
1. Quelle commande permet de rendre exécutable, pour le propriétaire, ce script ?
2. Quelle ligne doit-on ajouter au tout début du script ? Quel est son intérêt ?
3. Ecrire la section #CORPS DU SCRIPT, permettant de tester les paramètres et d’appeler la bonne fonction, en lui
transmettant à chaque fois le ou les paramètres utiles.
4. Recopier et compléter la fonction preterit () (Il manque la valeur du paramètre -F, la lettre désignant la
seconde option et le corps de la commande awk).
5. Ecrire la fonction verifie_traduction () qui affiche Vrai si le verbe anglais passé en paramètre est bien
associé au verbe français passé aussi en paramètre, Faux sinon.
Solution
1. 0.75 point. chmod u+x verb.sh
2. 0.75 point. #!/bin/bash. Elle permet de définir l’interpréteur qui va comprendre et exécuter le script.
3. 1.5 point. Il s’agit d’un case ou d’une suite de if..elif... comme nous l’avons fait dans tous les TPs.
4. 1 point.
preterit () {
awk -F ";" -v verbe_recherche=$1 ’$1==verbe_recherche { print $2 }’ irregular.txt
}
5. 1 point.
verifie_traduction () {
awk -F ";" -v verbe_en=$1 -v verbe_fr=$2 ’BEGIN { ok="faux" }
$1==verbe_en && $4==verb_fr { ok="vrai" ; break }
END { print ok }’ irregular.txt
}
L’astuce consiste ici à s’arrêter dès que l’on a trouvé le bon couple (s’il existe), grâce à la commande break. Si
l’on ne trouve pas ce couple, on arrive à la condition END à la fin et l’on fait afficher la valeur par défaut de ok
(qui est initialisé dans le bloc BEGIN).
5
Expressions régulières (2 points)
1. Simplifier au mieux l’expression régulière suivante : I|II|III|IV|V|VI|VII|VIII|IX|X
2. Ecrire une expression régulière reconnaissant les phrases de quatre mots dont le premier et le dernier sont
identiques (exemple : bonjour salut coucou bonjour)
Solution
1. 1 point.
2. 1 point.
3
Téléchargement