32 - Systèmes (shell)
Cours associé : 23 - Systèmes d’exploitation .
QCM – vérification des prérequis
Pour chaque question, une seule réponse est correcte.
1. Quelle commande affiche le contenu du répertoire courant ?
- A.
cd - B.
ls - C.
pwd - D.
cat
Correction publiée après la séance.
2. Que fait la commande cd .. ?
- A. Elle crée un nouveau dossier
- B. Elle remonte au répertoire parent
- C. Elle supprime le répertoire courant
- D. Elle affiche le chemin absolu du répertoire courant
Correction publiée après la séance.
3. Quelle est la différence entre un chemin absolu et un chemin relatif ?
- A. Un chemin absolu commence par le nom d’un fichier, un chemin relatif par
/ - B. Un chemin absolu commence par
/(la racine), un chemin relatif part du répertoire courant - C. Il n’y a aucune différence
- D. Un chemin relatif ne peut désigner que des fichiers, pas des dossiers
Correction publiée après la séance.
4. Que fait la commande cp fichier.txt copie.txt ?
- A. Elle déplace
fichier.txtverscopie.txt - B. Elle renomme
fichier.txtencopie.txt - C. Elle crée une copie de
fichier.txtnomméecopie.txt - D. Elle compare les deux fichiers
Correction publiée après la séance.
TP : commandes système sous Linux
Ce TP guide la découverte des commandes fondamentales d’un système Linux. Vous utiliserez le simulateur de terminal pour tester chaque commande (le simulateur Terminus présenté dans le cours sur les systèmes d’exploitation convient aussi). N’hésitez pas à expérimenter au-delà des exemples proposés.
Navigation dans l’arborescence
Définition. Sous Linux, les fichiers et dossiers sont organisés en une structure hiérarchique appelée arborescence. La racine de cette arborescence est notée /. Chaque utilisateur dispose d’un répertoire personnel situé dans /home/.
Chemins absolus et relatifs. Un chemin absolu commence par / et décrit le trajet depuis la racine. Un chemin relatif décrit le trajet depuis le répertoire courant. Le symbole ~ désigne le répertoire personnel de l’utilisateur.
Exercice 1 : découvrir l’arborescence.
Afficher le répertoire courant avec la commande
pwd.Lister le contenu du répertoire courant avec
ls.Se déplacer dans le répertoire
/homeaveccd /home, puis vérifier avecpwd.Revenir dans son répertoire personnel avec
cd ~.Utiliser
ls -lapour afficher les fichiers cachés. Que remarque-t-on ?Indice
Comparer avec la sortie de
ls: quels noms apparaissent en plus, et par quel caractère commencent-ils ? Que désignent les deux entrées.et..?
Correction publiée après la séance.
Exercice 2 : manipuler les chemins.
- Depuis son répertoire personnel, afficher le contenu de
/etcsans s’y déplacer avecls /etc. - Créer un dossier
projetsavecmkdir projets. - Se déplacer dans
projets, puis créer un sous-dossiertp1avecmkdir tp1. - Revenir au répertoire parent avec
cd ..et vérifier avecpwd. - Afficher l’arborescence complète de
projetsavectree projets.
Correction publiée après la séance.
Manipulation de fichiers et dossiers
Rappel. Les commandes de manipulation de fichiers sont destructives : une suppression avec rm est définitive (il n’y a pas de corbeille sous Linux). Soyez toujours prudent avant de supprimer un fichier ou un dossier.
Exercice 3 : créer et supprimer.
Créer un fichier vide
notes.txtavectouch notes.txt.Écrire du texte dedans avec
echo "Ceci est un test" > notes.txt.Vérifier le contenu avec
cat notes.txt.Ajouter une deuxième ligne avec
echo "Deuxième ligne" >> notes.txt. Quelle est la différence entre>et>>?Indice
Afficher le fichier avec
cataprès chacune des deux commandes : la première ligne est-elle toujours là ?Copier le fichier avec
cp notes.txt copie.txt, puis vérifier avecls.Renommer
copie.txtensauvegarde.txtavecmv copie.txt sauvegarde.txt.Supprimer
sauvegarde.txtavecrm sauvegarde.txt.
Correction publiée après la séance.
Exercice 4 : opérations sur les dossiers.
Créer une arborescence en une seule commande avec
mkdir -p cours/nsi/chapitre1.Vérifier le résultat avec
tree cours.Créer un fichier
cours/nsi/chapitre1/resume.txtavec un contenu de votre choix.Essayer de supprimer le dossier
coursavecrm cours. Que se passe-t-il ?Utiliser
rm -r courspour supprimer le dossier et tout son contenu.Expliquer pourquoi l’option
-rest nécessaire.Indice
Que contient le dossier
cours? L’option-rsignifie « récursif » : que faut-il supprimer avant de pouvoir supprimer un dossier ?
Correction publiée après la séance.
Traitement de texte
La philosophie Unix repose sur des outils simples qui font une seule chose bien, et que l’on combine avec le pipe (|) pour réaliser des traitements complexes. Le pipe transmet la sortie d’une commande comme entrée de la suivante.
Exercice 5 : filtrage et recherche.
Commencer par créer un fichier de données. La commande printf écrit le texte en remplaçant chaque \n par un retour à la ligne (la commande echo de Bash, elle, écrirait \n tel quel) :
printf "Alice 15\nBob 12\nCharlie 18\nDiana 15\nEve 12\nFrank 20\n" > eleves.txt
Afficher les 3 premières lignes avec
head -n 3 eleves.txt.Afficher les 2 dernières lignes avec
tail -n 2 eleves.txt.Compter le nombre de lignes avec
wc -l eleves.txt.Rechercher les élèves ayant 15 avec
grep 15 eleves.txt.Trier le fichier par ordre alphabétique avec
sort eleves.txt.Combiner les commandes :
cat eleves.txt | sort | uniq. Expliquer le résultat.Indice
Suivre les données d’une commande à l’autre : que reçoit
sort, que reçoituniq?uniqne retire que les lignes identiques qui se suivent : le fichier en contient-il ?Rechercher les lignes ne contenant pas « 15 » avec
grep -v 15 eleves.txt.
Correction publiée après la séance.
Exercice 6 : pipes et enchaînements.
Créer un fichier
fruits.txtcontenant : pomme, banane, cerise, pomme, banane, datte, pomme (une par ligne).Indice
Reprendre la commande
printfde l’exercice 5, avec un\naprès chaque fruit.Compter le nombre d’occurrences de chaque fruit avec
sort fruits.txt | uniq -c.Afficher uniquement les lignes contenant « an » avec
grep an fruits.txt.Compter le nombre de lignes contenant « pomme » avec
grep -c pomme fruits.txt.Rechercher récursivement le mot « test » dans tous les fichiers du répertoire courant avec
grep -r test .Enchaîner deux commandes avec
&&: créer un dossier et s’y déplacer en une seule ligne.Indice
L’opérateur s’écrit entre les deux commandes,
commande1 && commande2: la seconde ne s’exécute que si la première a réussi.
Correction publiée après la séance.
Permissions et utilisateurs
Définition. Chaque fichier possède trois catégories de permissions : lecture (r), écriture (w) et exécution (x), définies pour trois entités : le propriétaire (u), le groupe (g) et les autres (o). Ces permissions sont affichées sous la forme rwxrwxrwx ou en notation octale (par exemple 755).
Notation octale. Chaque chiffre représente les permissions d’une entité : r = 4, w = 2, x = 1. Par exemple, 755 signifie : propriétaire = 7 (rwx), groupe = 5 (r-x), autres = 5 (r-x).
Exercice 7 : gérer les permissions.
Créer un fichier
script.shavececho '#!/bin/bash' > script.sh(avec des guillemets doubles, Bash interpréterait le!et afficherait une erreur).Afficher ses permissions avec
ls -l script.sh. Les décrire.Indice
Les dix premiers caractères se lisent ainsi : le type (
-pour un fichier,dpour un dossier), puis trois groupesrwx, pour le propriétaire, le groupe et les autres ; un tiret signale une permission absente.Rendre le fichier exécutable pour le propriétaire avec
chmod u+x script.sh.Vérifier le changement avec
ls -l script.sh.Utiliser la notation octale pour donner les permissions
rwxr-xr--avecchmod 754 script.sh.Vérifier avec
stat script.shles informations détaillées du fichier.
Correction publiée après la séance.
Exercice 8 : utilisateurs et droits.
Afficher son nom d’utilisateur avec
whoami.Afficher ses identifiants avec
id. Que représentent l’UID et le GID ?Essayer de passer en superutilisateur avec
su root. Que se passe-t-il ?Utiliser
sudo ls /root. Quelle est la différence entresuetsudo?Indice
Avec chacune des deux, combien de commandes s’exécutent avec les droits du superutilisateur : une seule, ou toute une session ?
Correction publiée après la séance.
Informations système
Exercice 9 : explorer le système.
Afficher le nom de la machine avec
hostname.Afficher les informations du système avec
uname -a. Identifier le noyau et l’architecture.Afficher la date et l’heure avec
date.Afficher l’utilisation du disque avec
df -h. Que signifie l’option-h?Indice
Comparer avec la sortie de
dfsans l’option : en quelle unité les tailles sont-elles affichées dans chaque cas ?Afficher l’utilisation de la mémoire avec
free -h.
Correction publiée après la séance.
Exercice 10 : historique et variables.
- Taper plusieurs commandes, puis afficher l’historique avec
history. - Afficher les variables d’environnement avec
env. Identifier la variableHOME. - Afficher la valeur de
HOMEavececho $HOME. - Créer une variable avec
export MA_VAR=bonjour, puis l’afficher avececho $MA_VAR. - Créer un alias avec
alias ll="ls -la", puis le tester.
Correction publiée après la séance.
Recherche de fichiers
Exercice 11 : trouver et identifier.
Créer l’arborescence suivante :
mkdir -p projet/src projet/docs projet/tests touch projet/src/main.py projet/src/utils.py touch projet/docs/readme.txt projet/tests/test_main.pyRechercher tous les fichiers Python avec
find projet -name "*.py".Indice
Dans le motif
"*.py", l’étoile remplace n’importe quelle suite de caractères : quels noms de fichiers ce motif désigne-t-il ?Rechercher uniquement les dossiers avec
find projet -type d.Identifier le type du fichier
projet/src/main.pyavecfile projet/src/main.py.Vérifier l’emplacement de la commande
lsavecwhich ls.Consulter le manuel de la commande
grepavecman grep.
Correction publiée après la séance.
Commandes essentielles à retenir
- Navigation :
pwd,cd,ls,tree; - Fichiers :
touch,cp,mv,rm,mkdir,cat,echo; - Texte :
head,tail,wc,grep,sort,uniq; - Permissions :
chmod,ls -l,whoami,id,sudo; - Système :
uname,hostname,date,df,free,history; - Recherche :
find,file,which,man; - Opérateurs :
>(redirection),>>(ajout),|(pipe),&&(enchaînement).