Partie 1 Connaissances générales sur Unix et Linux ( sur 4

publicité
Partie 1 Connaissances générales sur Unix et Linux ( sur 4 points)
1.1) En quelle année est apparu le 1er Unix ?
En 1969 (laboratoires AT & T)
[0,5 pt]
1.2) Qu'est ce qu'Unix ?
Source Wikipédia : ( http://fr.wikipedia.org/wiki/Unix )
UNIX™ est le nom d'un système d'exploitation multitâche et multiutilisateur créé en 1969, à usage principalement
professionnel, conceptuellement ouvert et fondé sur une approche par laquelle il offre de nombreux petits outils chacun
dotés d'une mission spécifique. I
En réalité, il s'agit plutôt d'un système d'exploitation qui n'existe pas en réalité: on est plus où moins conforme à une
version d'Unix
[0,5pt]
1.3) Que signifie conformité POSIX ( donner une exemple ) 0,5
Source : Wikipédia ( http://fr.wikipedia.org/wiki/POSIX )
POSIX est le nom d'une famille de standards définie depuis 1988 par l'IEEE et formellement désignée IEEE 1003. Ces
standards ont émergé d'un projet de standardisation des APIs des logiciels destinés à fonctionner sur des variantes du
système d'exploitation UNIX. Le terme POSIX a été suggéré par Richard Stallman en réponse à la demande de l'IEEE
d'un nom facilement mémorisable. C'est un acronyme de Portable Operating System Interface, dont le X exprime
l'héritage UNIX de l'API.
[0,5pt]
1.4) Sous quelle licence est écrit le noyau Linux ?
La Licence GPL ( GNU Public License )
[0,5pt]
1.5) Citer plusieurs distributions Linux
par exemple: Debian, Mandriva Linux, Gentoo, Novell Suse, Ubuntu
[0,5pt]
1.6) Qu'est ce qui les différencie ?
Plein de choses: le système de paquetage des archives ( .deb, .rpm ..etc), les outils d'administration, de configuration,
de mise à jour ... etc
[0,5pt]
1.7) Que désigne /dev/hda2
Un périphérique de type bloc, ici une partition de disque dur IDE
[0,5pt]
1.8) Quel est l'id de root ?
L'utilisateur qui a tous les droits sous Linux s'appelle root. Il a l'id 0
Partie 2
[0,5pt]
Environnement utilisateur et shell Bash ( sur 8 points)
2.1) Rappeler la syntaxe générale d'une commande sous Linux, en précisant chaque partie
nom de la commande [options] [arguments] , qui signifie respectivement quoi, comment, à quoi on applique la
commande.
[0,5pt]
2.2) Que peut-on trouver dans les répertoires suivants ?
/var
Les rapports ( logs ) de tout ce qui se passe d'important concernant le système
[0,25pt]
/dev
La liste des fichiers spéciaux de type périphériques
(bloc, caractères, ..etc)
[0,25pt]
2.3) Quel est le rôle de '' -- '' dans la commande :
egrep -Hr -2 -- -jSRC Freenode-#ooo_macport
L'option courte d'une commande est donnée par un tiret ( signe - ) . Pour indiquer que la liste des options est terminée,
on convient de passer l'option –
Ainsi, tout ce qui suit et commence par un tiret n'est pas pris comme une option. CE qui permet de passer en argument
le motif -jSRC... etc Il est important de remarquer que sans le passage explicite de cette fin de liste d'options, la
commande aurait retourné une erreur, du style jSRC : unknown option ou quelque chose dans le
genre.
[1pt]
2.4) Quelle est la différence entre un terminal et une console ?
Dans une console, il n'y a pas de frames, et seules les applications non graphiques peuvent être utilisées. Pour une
application graphique, il faut un serveur graphique (capable de dessiner des
fenêtres/frames)
[0,25pt]
2.5) Comment bascule-t-on, en salle de TP (avec les machines disponibles) de l'interface graphique à la console numéro
2?
Avec la commande CTRL+ALT+FN2 (FN désigne la touche "Fonction 2"
[0,25pt]
2.6) Que fait la commande suivante : alias ls="ls -la"
Cette commande remplace la commande ls (suivie de l'appui sur la touche « entrée ») par la commande ls -la dans le
shell courant
[0,5pt]
2.7) Comment faire pour toujours avoir cette commande disponible, sans avoir à la taper dans chaque console/terminal
ouvert ?
On peut par exemple la placer dans le fichier ~/.bash_profile , sinon dans /etc/profile (pour tous les
utilsateurs)
[0,25pt]
2.8) Comment supprime-t-on un alias sans fermer le terminal ?
En utilisant la commande (built-in) unalias
2.9) Qu'est-ce qu'une commande built-in ?
C'est une commande « embarquée » (incluse) dans le shell bash
[0,25pt]
[0,25pt]
2.10) Comment trouver de l'aide pour une commande built-in ?
Les commandes built-in étant incluses dans le binaire exécutable bash, la page de man de bash nous dira tout sur
elles !
[0,25]
2.11) Que fait la boucle suivante :
for ((i=10 ; i>0 ; i--)) ; do echo "il reste $i seconde(s) ... " ; sleep 1 ; clear ; done
Cette boucle effectue un compte à rebours par pas de -1, et affiche le nombre de secondes restantes.
[0,5pt]
2.12) Remplacer la boucle ci-dessous par une boucle portable (qui fonctionne partout).
for i in $(seq 1 2 19) ; do echo $i done
for ((i=1 ; i <21; i+=2 )) ; do echo $i ; done
[0,5pt]
2.13) Dans un répertoire, on trouve les fichiers suivants :
MACOSXGCCUBinc.tar.gz
MACOSXGCCUBlib.tar.gz
MACOSXGCCUBruntime.tar.gz
Que fait la commande :
for i in MACOSXGCCUB* ; do mv $i ${i/GCCUB/GCCI} ; done
Cette commande remplace la chaine GCCUB par GCCI dans las noms des fichiers. Ainsi, après l'exécution de la
commande, le répertoire courant contiendra les fichiers :
MACOSXGCCIinc.tar.gz
MACOSXGCCIlib.tar.gz
MACOSXGCCIruntime.tar.gz
[0,5pt]
2.14) En fait, l'opérateur s'est trompé.
Donner la commande qui permet de renommer les fichier comme précédemment (avec leur nom initial)
for i in MACOSXGCCI* ; do mv $i ${i/GCCI/GCCUB} ; done
[0,5pt]
2.15) Qu'est ce que le PATH ?
La liste des répertoires dans lesquels le shell trouve des binaires exécutables. C'est une variable d'environnement. Si
celle-ci est vide, les seules commandes accessibles sont les commandes builtin du shell
[0,5pt]
2.16) Que contient $HOME ?
$HOME est une variable d'environnement qui contient la réportoire personnel de l'utilisateur courant
[0,5pt]
2.17) Que font les commandes suivantes:
a) cd && cat n fichier.txt
Sous Linux, cd positionne par défaut dans le répertoire $HOME de l'utilisateur
Si cette étape est réussie, la seconde est exécutée, et le contenu du fichier fichier.txt est affiché sur la sortie
standard.
[0,25 pt]
b) cat /etc/passwd | tr -s ":" " " | grep `whoami`
Dans l'ordre :
–
–
–
le contenu du fichier /etc/passwd est bufferisé
la commande tr remplace ( s pour substitute ) tous les caractères : ( qui est un séparateur dans /etc/passwd )
par un espace
la ou les lignes qui contiennent le résultat de la commande `whoami` sont affichées.
Exemple :
eric@beone:~$ cat /etc/passwd | tr -s ":" " " | grep `whoami`
eric x 1000 1000 eric,,, /home/eric /bin/bash
[0,25 pt]
c) cat << EOF >> fichier.txt
cat est une commande qui attend par défaut sur l'entrée standard (le clavier) . Le terminal étant en mode
standard, tout ce qui est tapé par l'utilisateur s'affiche en echo à l'écran (permet de contrôler le contenu).
Le << signifie que cat attend la chaine EOF pour que la commande se termine. La commande étant terminée,
cat affiche redirige tout ce qui a été entré dans le fichier fichier.txt
Tout ce qui a été entré par l'utilisateur est normalement écrit dans le fichier texte. En résumé, cette commande se
comporte comme un éditeur de texte
[0,25 pt]
Partie 3
Analyse de shells scripts ( sur 9 points)
Soit le shell script suivant, appelé test_function.sh :
1
#!/bin/bash
2
function calcule()
5
{
6
echo "resultat du calcul $(( $1 + $2 ))"
8
}
9
val1=$1
11
val2=$2
13
if ! test -z $1 && ! test -z $2
15
then
16
calcule ${val1} ${val2}
17
else
18
echo -e "pas de calcul possible\n"
19
fi
3.1) Expliquer le test de la ligne 13
Le test de la ligne 13 vérifie que l'argument 1 et l'argument 2 sont non nuls. Seul cas pour lequel le calcul de la somme
des termes passés en arguments de la ligne de commande n'a pas de sens.
[0,5pt]
3.2) Écrire l'algorithme correspondant au fonctionnement du programme
/* Sous programme calcule */
Écrire : ( resultat du calcul = somme du paramètre positionel 1 et du paramètre positionnel 2 )
Fin fonction calcule
/* Programme principal */
/* Initialisation */
val1 <- valeur paramètre positionnel 1
val2 <- valeur paramètre positionnel 2
SI (valeur paramètre positionnel 1 non nulle ) et (valeur paramètre positionnel 2 non nulle )
Faire : calcule somme val1 + val2
Sinon faire
Écrire : ( pas de calcul possible )
Fin Programme Principal
[2pts]
3.3) Que se passe-t-il si l'utilisateur tape :
a) ./test_function.sh
eric@beone:~$ ./test_function.sh
pas de calcul possible
[0,5pt]
b) ./test_function.sh 19 1
eric@beone:~$ ./test_function.sh 19 1
resultat du calcul 20
[0,5pt]
c) ./test_function.sh 19 mot
eric@beone:~$ ./test_function.sh 19 mot
resultat du calcul 19
Pourquoi ?
La taille de l'argument $2 n'est pas nulle, et la valeur entière associée à une chaine de caractères est 0, donc la somme
calculée est 19 + 0, ce qui est surpenant, mais correct;
[0,5pt]
Soit le shell script suivant appelé indirection :
1
#!/bin/bash
2
i=0
4
while (( $i < $(($# +1)) ))
5
do
7
echo "contenu du parametre positionnel $i : ${!i}"
8
i=$(( $i + 1))
11
done
3.4) Que fait ce shell script ? (on demande des explications claires)
Ce script affiche , en partant de la valeur 0, le numéro du paramètre positionnel, ainsi que sa valeur (ce qu'il contient)
La structure de contrôle est de type while do done
La contition testée est :
tant que la valeur de i est inférieure au nombre de paramètres positionnels + 1, la condition est fausse, et on réitère le
calcul.
Dans cette boucle, on affiche "contenu du parametre positionnel " suivi du numéro du paramètre positionnel, et de sa
valeur. Ensuite, on incrémente i, qui est comparé au nombre de paramètres positionnels + 1
[3pts]
3.5) Que donne le résultat de la commande : ./indirection a b c
eric@beone:~$ ./indirection a b c
contenu du parametre positionnel 0 : ./indirection
contenu du parametre positionnel 1 : a
contenu du parametre positionnel 2 : b
?
contenu du parametre positionnel 3 : c
[2pts]
Téléchargement