34 - Systèmes (Shell)
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
Réponse : B. ls (list) liste les fichiers et dossiers du répertoire courant.
- A est faux :
cd(change directory) change de répertoire. - C est faux :
pwd(print working directory) affiche le chemin du répertoire courant. - D est faux :
cataffiche le contenu d’un fichier.
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
Réponse : B. .. désigne le répertoire parent. cd .. remonte donc d’un niveau dans l’arborescence.
- A est faux : créer un dossier se fait avec
mkdir. - C est faux : supprimer un répertoire se fait avec
rmdirourm -r. - D est faux : c’est le rôle de
pwd.
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
Réponse : B. Un chemin absolu part de la racine du système de fichiers (/ sous Linux/Mac). Un chemin relatif est interprété à partir du répertoire dans lequel on se trouve.
- A est faux : c’est exactement l’inverse.
- C est faux : les deux notions sont fondamentalement différentes.
- D est faux : un chemin relatif peut désigner aussi bien un fichier qu’un dossier.
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
Réponse : C. cp (copy) crée une copie du fichier. Après l’exécution, les deux fichiers existent.
- A est faux : déplacer un fichier se fait avec
mv. - B est faux : renommer se fait aussi avec
mv;cpconserve l’original. - D est faux : comparer des fichiers se fait avec
diff.
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 ?
Correction
pwdaffiche le chemin absolu du répertoire courant, par exemple/home/user.lsliste les fichiers et dossiers visibles du répertoire courant.- Après
cd /homepuispwd, on obtient/home. cd ~ramène dans le répertoire personnel de l’utilisateur.ls -laaffiche tous les fichiers, y compris ceux commençant par un point (fichiers cachés), ainsi que les permissions, le propriétaire et la taille.
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
ls /etcaffiche le contenu du dossier/etcsans changer de répertoire courant.mkdir projetscrée le dossierprojetsdans le répertoire courant.cd projetspuismkdir tp1crée le sous-dossiertp1dansprojets.cd ..remonte d’un niveau.pwdconfirme le retour au répertoire personnel.tree projetsaffiche la structure arborescente du dossierprojetset de ses sous-dossiers.
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>>? - 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
touch notes.txtcrée un fichier vide ou met à jour la date de modification s’il existe déjà.echo "Ceci est un test" > notes.txtécrit le texte dans le fichier en écrasant le contenu précédent.cat notes.txtaffiche le contenu du fichier dans le terminal.>>ajoute à la fin du fichier (concaténation) tandis que>écrase le contenu existant (redirection).cp notes.txt copie.txtcrée une copie identique du fichier.lsconfirme la présence des deux fichiers.mv copie.txt sauvegarde.txtrenomme le fichier (ou le déplace si un chemin est spécifié).rm sauvegarde.txtsupprime définitivement le fichier.
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.
Correction
mkdir -pcrée le dossier et tous les dossiers parents manquants en une seule commande.tree coursaffichecours/nsi/chapitre1sous forme arborescente.- Par exemple,
echo "Résumé du chapitre 1" > cours/nsi/chapitre1/resume.txt. rm courséchoue carrmne peut pas supprimer un dossier sans l’option-r.rm -r courssupprime récursivement le dossier et tout son contenu.- L’option
-r(récursif) est nécessaire pour parcourir et supprimer chaque sous-dossier et fichier contenu dans le dossier.
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 :
echo "Alice 15\nBob 12\nCharlie 18\nDiana 15\nEve 12\nFrank 20" > 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. - Rechercher les lignes ne contenant pas « 15 » avec
grep -v 15 eleves.txt.
Correction
head -n 3affiche les lignes : Alice 15, Bob 12, Charlie 18.tail -n 2affiche les lignes : Eve 12, Frank 20.wc -lrenvoie 6, le nombre total de lignes du fichier.grep 15affiche les lignes contenant « 15 » : Alice 15 et Diana 15.sorttrie les lignes par ordre alphabétique (Alice, Bob, Charlie, Diana, Eve, Frank).- Le pipe enchaîne trois commandes :
catlit le fichier,sorttrie les lignes,uniqsupprime les doublons consécutifs. Ici, comme toutes les lignes sont différentes, le résultat est identique au tri. grep -v 15affiche toutes les lignes sauf celles contenant « 15 » : Bob 12, Charlie 18, Eve 12, Frank 20.
Exercice 6 : pipes et enchaînements.
- Créer un fichier
fruits.txtcontenant : pomme, banane, cerise, pomme, banane, datte, pomme (une par ligne). - 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.
Correction
- Par exemple :
echo "pomme\nbanane\ncerise\npomme\nbanane\ndatte\npomme" > fruits.txt. sort | uniq -ctrie d’abord les lignes, puis compte les occurrences consécutives : 2 banane, 1 cerise, 1 datte, 3 pomme.grep an fruits.txtaffiche « banane » (deux fois) car ces lignes contiennent « an ».grep -c pomme fruits.txtrenvoie 3.grep -r test .recherche récursivement dans tous les fichiers et affiche les correspondances avec le nom de fichier.- Par exemple :
mkdir travail && cd travail. L’opérateur&&exécute la seconde commande uniquement si la première réussit.
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. - Afficher ses permissions avec
ls -l script.sh. Les décrire. - 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
echo "#!/bin/bash" > script.shcrée un fichier contenant la ligne shebang.ls -laffiche par exemple-rw-r--r--: lecture et écriture pour le propriétaire, lecture seule pour le groupe et les autres, pas d’exécution.chmod u+xajoute le droit d’exécution au propriétaire. Le résultat est-rwxr--r--.- On vérifie que le
xest apparu dans les permissions du propriétaire. chmod 754donne : propriétaire = rwx (4+2+1=7), groupe = r-x (4+0+1=5), autres = r– (4+0+0=4).stataffiche des informations détaillées : taille, permissions, dates de modification, etc.
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?
Correction
whoamiaffiche le nom de l’utilisateur courant, par exempleuser.idaffiche l’UID (identifiant numérique de l’utilisateur) et le GID (identifiant du groupe principal). Ce sont les identifiants internes utilisés par le système.su rootdemande le mot de passe de root pour basculer sur le compte superutilisateur. En situation réelle, il faut connaître ce mot de passe.sudoexécute une seule commande avec les droits superutilisateur, tandis quesuchange complètement de session utilisateur.sudoest préférable car il limite les privilèges à une commande.
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? - Afficher l’utilisation de la mémoire avec
free -h.
Correction
hostnameaffiche le nom de la machine sur le réseau, par exemplelinux-nsi.uname -aaffiche le nom du noyau (Linux), sa version, l’architecture (x86_64), etc.dateaffiche la date et l’heure actuelles du système.df -haffiche l’espace disque utilisé et disponible. L’option-hsignifie human-readable : les tailles sont affichées en Ko, Mo, Go.free -haffiche l’utilisation de la mémoire RAM et du swap en format lisible.
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
historyaffiche la liste numérotée de toutes les commandes saisies dans la session.envaffiche toutes les variables d’environnement.HOMEcontient le chemin du répertoire personnel, par exemple/home/user.echo $HOMEaffiche la valeur de la variable, ici/home/user.export MA_VAR=bonjourcrée une variable d’environnement.echo $MA_VARaffichebonjour.alias ll="ls -la"crée un raccourci. Taperllexécutels -la.
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".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
- Les commandes
mkdir -pettouchcréent l’arborescence demandée. find projet -name "*.py"trouve tous les fichiers dont le nom se termine par.py:main.py,utils.py,test_main.py.find projet -type dliste tous les répertoires :projet,projet/src,projet/docs,projet/tests.fileidentifie le type du fichier : ici un fichier texte (ASCII text).which lsaffiche le chemin de l’exécutablels, par exemple/usr/bin/ls.man grepaffiche le manuel détaillé de la commandegrepavec ses options et exemples.
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).