C0 Systèmes ¶
"I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) (...)"
(comp.os.minix newsgroup 1991)
Cours¶
Attention
Ce diaporama ne vous donne que quelques points de repères lors de vos révisions. Il devrait être complété par la relecture attentive de vos propres notes de cours et par une révision approfondie des exercices.
Travaux dirigés¶
Travaux pratiques¶
Exercice 1 : Les bases de la ligne de commande¶
- En utilisant uniquement la ligne de commande, créer l'arborescence suivante dans votre répertoire personnel :
graph TD A[MP2I] --> B[C1-Systèmes] A[MP2I] --> G[C2-OCaml] A[MP2I] --> F[C3-Arithmétique] B --> C[Cours] B --> D[TD] B --> E[TP] - Renommer le dossier
C2-OCamlenC2-LangageC - Aller dans le dossier
MP2I - Taper la commande
tree, quel est l'effet de cette commande ? - Quelle option de la commande
treepermet de limiter le niveau d’arborescence souhaité ?
Exercice 2 : Calendrier¶
- Ouvrir un terminal et y tester la commande
cal - Lire la documentation de cette commande
- Quel était le jour de la semaine le 26 juin 1815 ?
- Quelle commande faut-il écrire pour afficher le calendrier du mois de mai 1970 ?
Exercice 3 : Chercher des fichiers¶
- Lire les premières lignes de la documentation de la commande
find. A quoi sert cette commande ? -
Tester la commande
find ~ -name ".*". Expliquer le résultat obtenu et l'effet de la commande.Aide
On rappelle que
~désigne votre répertoire personnel. -
Sachant que les commandes du système se trouvent dans le répertoire
/usr/bin, lister toutes les commandes dont le nom se termine pardir(rmdiretmkdirdevraient donc apparaître). -
Alice est certaine d'avoir un fichier nommé
bob.txtdans son répertoire personnel mais elle n'arrive plus à le retrouver. Quelle commande devrait-elle taper ? -
Expliquer le but de la commande
find ~ -mtime 5 -name "*.txt"
Exercice 4 : Droits d'accès et permissions¶
- Créer un fichier nommé
bonjour.shdans votre répertoire personnel et y écrire la ligneecho "Bonjour MP2I !"à l'aide de la redirection>. - Tenter d'exécuter ce script en tapant
./bonjour.sh. Quel message d'erreur s'affiche ? Pourquoi ? - Afficher les droits actuels du fichier à l'aide de la commande
ls -l bonjour.sh. - À l'aide de la commande
chmod, ajouter le droit d'exécution pour l'utilisateur propriétaire sur ce fichier. - Réexécuter
./bonjour.sh. Que constate-t-on ? - Retirer maintenant le droit de lecture sur ce fichier (
chmod u-r bonjour.sh), puis tenter d'afficher son contenu aveccat bonjour.sh. Quel message obtient-on ? Rétablir ensuite les droits normaux (tous les droits pour l'utilisateur et lecture et exécution pour le groupe et les autres) en utilisant la notation octale.
Exercice 5 : Flux standards, redirections et tubes¶
-
Redirection vers un fichier :
- Taper la commande
ls /usr/bin > commandes.txt. Quel est l'effet de cette commande ? - Vérifier le contenu du fichier créé avec
head commandes.txtpuistail commandes.txt. - Combien de commandes sont installées dans
/usr/bin? (Indice : utiliser la commandewc).
- Taper la commande
-
Filtrage et composition (pipe) :
- Sans créer de fichier intermédiaire, écrire une seule ligne de commande utilisant un tube
|pour compter directement le nombre de commandes dans/usr/bin. - Lister toutes les commandes de
/usr/bincontenant le motzipet les trier par ordre alphabétique (utiliser la commandesort).
- Sans créer de fichier intermédiaire, écrire une seule ligne de commande utilisant un tube
-
Séparation des erreurs :
- Exécuter la commande
ls /home /dossier_fantome > sortie.txt 2> erreurs.log. - Examiner le contenu respectif de
sortie.txteterreurs.logà l'aide de la commandecat. Que remarque-t-on ?
- Exécuter la commande
Exercice 6 : Liens physiques vs Liens symboliques¶
- Créer un fichier
original.txtcontenant le texteDonnées initiales. - Créer un lien physique nommé
lien_dur.txtpointant versoriginal.txt. - Créer un lien symbolique nommé
lien_symb.txtpointant versoriginal.txt. - Taper
ls -l -i lien* original.txtet observer attentivement la sortie :- Comparer les numéros d'inodes (première colonne) de
original.txtetlien_dur.txt. - Que vaut le compteur de liens (colonne entre les droits et l'utilisateur) pour
original.txt?
- Comparer les numéros d'inodes (première colonne) de
- Modifier le contenu de
original.txten y ajoutant une ligne (echo "Nouvelle ligne" >> original.txt). Afficher ensuite le contenu delien_dur.txtetlien_symb.txt. - Supprimer le fichier d'origine avec
rm original.txt:- Que renvoie
cat lien_dur.txt? - Que renvoie
cat lien_symb.txt? Expliquer la différence observée.
- Que renvoie
Exercice 7 : Un fichier contenant des entiers¶
Télécharger et sauvegarder dans le répertoire de votre choix le fichier ci-dessous qui contient une liste d'entiers (un entier figure sur chaque ligne). Fichier d'entiers , puis en utilisant uniquement la ligne de commande, répondre aux questions suivantes :
-
Combien d'entiers ce fichier contient-il ?
-
Quel entier figure à la 1942e position ?
-
Dans ce fichier, combien de fois apparait l'entier 2129 ?
-
Quel est le plus grand entier présent dans le fichier ?
Indice
On pourra penser à utiliser la commande
sort -
Combien d'entiers dans ce fichiers s'écrivent avec exactement trois chiffres ?
Exercice 8 : Gameshell¶
Gameshell est un mini-jeu d'aventure dans le terminal dans lequel les commandes servent à accomplir des missions. Il a été développé par Pierre Hyvernat et Rodolphe Lepigre.
- Lancer un terminal (le raccourci clavier est Ctrl+Alt+T)
- Créer un dossier
gameshelldans votre répertoire personnel - Aller dans le répertoire
gameshell -
Y copier le fichier
gameshell.shtéléchargeable ci-dessous : Télécharger gameshell -
Ajouter le droit d'exécution pour l'utilisateur sur le fichier
gameshell.sh. -
Dans le terminal taper
./gameshell.shA retenir
On retiendra que pour lancer un exécutable depuis le terminal, on donne son chemin. Ici puisqu'il se trouve dans le répertoire courant (c'est-à-dire
.) on tape donc./gameshell.shAide
Voici les principales commandes du jeu :
gsh goal: affiche l'objectif de la missiongsh check: vérifie que l'objectif est atteint et le cas échéant passe à la mission suivantegsh reset: réinitialise la mission en coursgsh exit: quitter le jeu
Pour relancer le jeu à partir de la dernière sauvegarde taper
./gameshell-save.sh
Exercice 9 : The command line murders¶
Dans ce mini-jeu (créé par Noah Veltman), vous devez résoudre une enquête policière en utilisant uniquement la ligne de commande. Pour jouer :
- Commencer par télécharger l'archive zip du jeu
- Décompresser cette archive dans le répertoire de votre choix, et aller dans le répertoire
clmystery-master - Taper
cat instructionspour démarrer
Aide
Toutes les commandes utiles pour résoudre l'enquête sont expliquées dans le fichier cheatsheet.pdf
Lien
En ligne (donc sans aucune installation sur son ordinateur personnel), on peut aussi jouer à Terminus pour découvrir la ligne de commande
Humour d'informaticien¶
