Exam 2023
Note
Examen de system de 2023
Warning
Les sujet change légérement d'une années à l'autre.
Sujet
Partiel système - Fevrier 2023
Document papiers et éléctroniques non autorisés - Durée 1h45
Exercice 1
Ajouter un cas (une istruction) au programme ci-dessous pour afficher l'égalisé des deux nombres que l'on doit saisir à partir de l'entrée standard.
#!/bin/bash
echo "Entrez un premier entier positif x = "
read -r x
if [ "$x" -le 1 ]; then
echo "x doit etre positif"
exit 1
fi
echo "Entrez un deuxieme entier positif y = "
read -r y
if [ "$y" -le 1 ]; then
echo "y doit etre positif"
exit 1
fi
# === Modification, -ge (greter or equal >=) vers -gt (greter than >)
if [ "$x" -gt "$y" ]
echo "x est plus grand que y"
elif [ "$y" -gt "$x" ]
echo "y est plus grand que x"
# ==== Ajout de l'instruction egale ==== #
elif [ "$x" -eq "$y" ]
echo "x et y sont egale"
# ==== fin de l'ajout ==== #
fi
Exercice 2
Ecrire une fonction qui affiche le nombre d'argument qu'elle à reçu (lors de son appel)
#!/bin/bash
nb_argument(){
echo $#
}
nb_argument 1 2 3
Exercice 3
Ecrire une fonction qui affiche le nombre d'argument et aussi les argument quelle à recu
#!/bin/bash
echoArgs(){
echo $#
echo $@
}
echoArgs "Hello" "World" "!"
Exercice 4
Ecrire une fonction qui calcule la somme de ses deux premiers argument (type entier) et renvoie le resultat dans son troisieme
somme()
{
result=$(($1+$2))
}
somme 5 5 $result
echo $result
Exercice 5
Ecrire une fonction qui reçoit un tableau d'un dizaine d'entiers et retourne comme résultat le plus petit element de ce tableau. Les éléments du tableau sont initalisé à partir d'un clavier et dans la fonction appelante
plusPetitElement()
{
arr=("$@")
max=0
for i in "${arr[@]}"; do
if [ $i -gt $max ]; then
max=$i
fi
done
echo $max
}
tableau=(37 100 42 69 5)
plusPetitElement "${tableau[@]}"
Exercice 6
1) Copier le ficher passwd de son repertoire d'origine (systeme) dans votre répertoire de travail sous le nom passwd.tmp
cp /etc/passwd ~/passwd.tmp
2) Extraire en une seul commande, du fichier passwd.tmp les noms de login et UID, en les triant en fonction des UID et en redirigeant le tout vers un nouveau ficher passwd.trie
cat passwd.tmp| awk -F':' '{print $1 "\t" $4}' | sort -n -k 2 > passwd.trie
Exercice 7
1) Extraire du fichier passwd.tmp les ligne contenant les champs login er repertoire de travail (home directory)
cat passwd.tmp| awk -F':' '{print $1 ":" $6}'
2) Mettre les résultat de l'opération précédente dans un fichier de nom passwd.res
cat passwd.tmp| awk -F':' '{print $1 ":" $6}' > passwd.res
3) Replacer dans fichier passwd.resultle champs : par le caractère "!" et mettre le résultat dans fichier passwd.fin
cat passwd.res | awk -F':' '{print $1 "!" $2}' > passwd.fin
4)
tail -n 15 passwd.fin
Exercice 8
1) Afficher par ordre décroissant, les 5 premiers fichier du répertoire /etc ayant la plus grand taille.
ls -lS /etc | head -n 6
2) Trouver un fichier dans le répertoire /etc qui à été modifié il ya moins de 3 jours et dans la taille est inférieur à 1Ko.
find /etc -type f -mtime -3 -size -1k