10 Exos Systèmes
Exercice du cours :⚓︎
-
En vous basant sur l’arborescence ci-dessus, déterminez le chemin absolu permettant d’accéder au fichier :
networkstiti.txt
-
Toujours en vous basant sur l’arborescence ci-dessus, déterminez le chemin relatif permettant d’accéder au fichier :
titi.txtdepuis le répertoireelietutu.txtdepuis le répertoireboulot
TP - Linux et ligne de commande sur le Web : JSLinux⚓︎
Il est possible de tester quelques fonctionnalités de la ligne de commande Linux dans un environnement en ligne : JSLinux par Fabrice Bellard.
Faire une recherche Wikipédia sur Fabrice Bellard, puis cliquez sur ce lien :
https://bellard.org/jslinux/vm.html?url=https://bellard.org/jslinux/buildroot-x86.cfg
Vous devriez obtenir ceci :

Explorons un peu les différentes commandes :
- Les commentaires après le symbole
#
Exemple : cd # retour à la racine
- Afficher un message sur la sortie standard : echo. Exemple :
Après l'invite de commande [root@localhost ~] # saisir echo "Jojo fait du vélo !" puis appuyer sur "entrée".
On obtient un affichage comme demandé.
- Afficher le chemin absolu du répertoire courant : pwd (pour print working directory).
Saisir pwd puis appuyer sur "entrée".
On obtient /root. Nous sommes donc à la racine, ou répertoire d'accueil, ou HOME (observer le ~ qui le caractérise dans l'invite de commande).
- Saisir ls pour lister le contenu du répertoire courant, dans notre cas le répertoire
/root.
On obtient :

Ainsi, à la racine se trouve un dossier appelé dos (en bleu) et deux fichiers hello.c et hello.js
-
Saisir
cd dospour se placer dans ce répertoire puis appuyer sur "entrée". Saisir ensuitelspuis appuyer sur "entrée" pour lister son contenu (un répertoire en bleu et d'autres fichiers). -
Saisir
cd asm-1.9pour se placer dans ce répertoire puis appuyer sur "entrée". Saisir ensuitelspuis appuyer sur "entrée" pour lister son contenu (plusieurs fichiers dont des fichiers .txt) -
Saisir
cd ..puis appuyer sur "entrée". Saisir alorspwdpuis appuyer sur "entrée". Dans quel répertoire sommes-nous ?
Saisir à nouveau cd .. puis appuyer sur "entrée". Saisir alors pwd puis appuyer sur "entrée". Dans quel répertoire sommes-nous ?
Ainsi, la commande cd .. permet de changer de répertoire pour le répertoire parent (immédiatement au-dessus). En exécutant deux fois cette commande, on revient donc dans /root, en passant par /dos.
-
Depuis
/root, se rendre directement dans le répertoireasm-1.9en saisissantcd dos/asm-1.9puis appuyer sur "entrée". On voit alors dans l'invite de commande
[root@localhost asm-1.9 ]que l'on se trouve dans le bon répertoire. -
Remonter directement dans le répertoire racine en saisissant
cd ~(ou plus simplementcd) puis appuyer sur "entrée". -
Essayer
ls dos/asm-1.9pour lister directement le contenu du dossier asm-1.9 depuis le répertoire d'accueil.
D'autres choses à tester avec la commande ls et ses options :
https://riptutorial.com/fr/linux/example/25726/options-pour-la-commande-ls
par exemple ls -r dos/asm-1.9. Vous devriez obtenir ceci :

- Copie de fichiers :
cp(pour copy) format :cp source destinationcopie le fichier source vers destination (source et destination sont des chemins). Par exemple, saisir depuis le répertoire d'accueil la commandecp dos/asm-1.9/license.txt /rootpour copier le fichierlicense.txtdu répertoireasm-1.9vers la racine (ou HOME, ou répertoire d'accueil) et fairelspour constater sa présence. Vous devriez obtenir :

- Depuis le répertoire d'accueil, saisir les lignes suivantes :

Vous venez de vous placer dans le dossier dos, et vous avez copié le fichier license.txt du répertoire asm-1.9 vers le répertoire courant ./ (donc le répertoire dos en fait).
- Essayer depuis le répertoire dos les commandes :

Vous venez de supprimer (rm pour remove) license.txt du répertoire de travail (dos) puis vous affichez son contenu pour voir qu'il n'est plus là (ls) puis vous supprimez ce même fichier texte du répertoire parent depuis dos en précisant rm ../license.txt (on utilise un chemin relatif !), et enfin on se place dans dans le répertoire d'accueil et on vérifie que le fichier .txt a disparu !
- On peut aussi créer son propre fichier texte
monproprefichier.txt, le renommermpf.txtcar son nom est trop long, créer son propre dossiermpdet déplacermpf.txtdans le dossiermpdavec les commandestouch,mv,mkdir(mvpour move permet de renommer et de déplacer) :

A tester !
- Pour supprimer un répertoire vide, il faut utiliser
rmdiret nonrm(suppression de fichiers). Si le répertoire contient des fichiers, on peut utiliser la "dangereuse" commanderm -rf(recursive force : tout est récursivement supprimé sans demande de confirmation). Tester :

Petit intermède à propos de cette commande :
Article 1 : erreur ligne code informatique destruction entreprise
Fake news ! Mais la commande reste dangereuse...
Exercice 1 :⚓︎
(Commande cat)
-
Depuis le dossier d'accueil
root, saisir une commande pour se rendre dans le dossierasm-1.9(voir plus haut pour l'arborescence). -
Saisir la commande ̀cat license.txt`
Exercice 2 :⚓︎
(Arborescence)
-
Vérifier depuis la racine que l'arborescence contient au moins tous les dossiers donnés dans le cours.
-
Représenter dans le cahier l'arborescence complète depuis
/root.
Exercice 3 :⚓︎
(création, suppression)
-
Dans le dossier
/rootcréer un répertoiredossier1et à l'intérieur, créer un fichier texte vide nomméfichier1.txt, puis supprimer ce fichier et supprimer le répertoire. -
Recommencer la question 1) et tout supprimer en une seule commande.
Exercice 4 :⚓︎
(Arborescence 2)
Compléter l'arborescence en créant à la racine un dossier perso contenant lui-même un dossier nommé programmesC et un autre nommé programmesJS. Copier hello.c dans programmesC et copier hello.js dans programmesJS puis le renommer monhello.js.
Exercice 5 :⚓︎
(head)
-
Depuis le répertoire d'accueil saisir
head hello.jspour voir les premières lignes du fichier. -
Tester la commande
qjs hello.jspour exécuter le fichier Javascript.
Exercice 6 :⚓︎
(Editer un fichier texte)
-
Depuis le répertoire d'accueil créer un fichier
mpf.txt. -
Saisir
vi mpf.txtpuis appuyer sur "entrée" et commencer à éditer comme ci-dessous :

-
Appuyer sur la touche
Escune fois l'édition terminée, puis saisir:xet appuyer sur "entrée" pour quitter et sauvegarder (:q!pour quitter sans sauvegarder). Vous devriez retrouver l'invite de commande. -
Saisir
head mpf.txtpour observer le résultat. -
Pour compter le nombre de mots, de lignes ou de caractères d'un fichier on utilise :
wc(pour word count),wc [-w][-l][-c] fichier, l'option-wpermet de compter le nombre de mots,-lle nombre de lignes, et-cle nombre de caractères.
Ces options peuvent être combinées, ou utilisées séparément. Exemples à tester :

Exercice 7 :⚓︎
QCM sur Google Form : https://forms.gle/pHtkZQaUmVVWVUuN7
Exercice 8 :⚓︎
Sans toucher le clavier, décrire l’effet de chacune des commandes suivantes, en supposant qu’elles sont enchaînées dans l’ordre :
utilisateur@machine:~$ cd ~
utilisateur@machine:~$ mkdir sandbox
utilisateur@machine:~$ cd sandbox/
utilisateur@machine:~/sandbox$ mkdir nsi
utilisateur@machine:~/sandbox$ cd nsi
utilisateur@machine:~/sandbox/nsi$ touch TP_shell
utilisateur@machine:~/sandbox/nsi$ chmod ugo=rw-rw-rw- TP_shell
utilisateur@machine:~/sandbox/nsi$ cd ..
utilisateur@machine:~/sandbox$ mkdir maths
utilisateur@machine:~/sandbox$ mkdir maths/premiere
utilisateur@machine:~/sandbox$ touch maths/TP_proba
utilisateur@machine:~/sandbox$ ls maths
Exercice 9 :⚓︎
Sans toucher le clavier dessiner l’arborescence du répertoire ~/test après l’exécution dans l’ordre de la séquence de commandes ci-dessous :
utilisateur@machine:~$ mkdir sandbox
utilisateur@machine:~$ cd sandbox/
utilisateur@machine:~/sandbox$ mkdir a b c d
utilisateur@machine:~/sandbox$ touch a/t.txt d/foo.txt
utilisateur@machine:~/sandbox$ cd c
utilisateur@machine:~/sandbox/c$ mkdir ../b/e f g
utilisateur@machine:~/sandbox/c$ cd ..
utilisateur@machine:~/sandbox$
utilisateur@machine:~/sandbox$ cp */*.txt c/g
utilisateur@machine:~/sandbox$ rm -rf d
Exercice 10 :⚓︎
(Exercice du livre Parlez-vous Shell ? de Thomas Hugel chez Ellipses)
On se place dans le répertoire personnel de l’utilisateur représenté par le raccourci ~
- Dans son répertoire personnel, créer le répertoire
TP-SHELLpuis entrer dans ce répertoire. - Créer le répertoire
Europeet changer de répertoire courant pour Europe. - Écrire une suite de commandes qui permet de construire l’arborescence ci-dessus sans quitter le répertoire
Europe. Les fichiers apparaissant avec des rectangles sont des répertoires et les autres sont des fichiers. - Créer dans
~une copie de tout le répertoireEuropeavec ses sous-répertoires et nommer cette copieVieille-Europe. Les modifications qui suivent devront être faites dansEurope. - Appliquons le traité de Francfort de 1871. Se placer dans le répertoire
Prusseet déplacerBelfortdansFrancepuis déplacerAlsacedansPrusse. Revenir dansEuropeet renommerPrusseenAllemagne. - Depuis
Europe, afficher le contenu deBordeauxpuis détruire ce fichier. - Appliquons le traité de Versailles de 1919. Depuis
France, ramenerAlsaceenFrancepuis détruireVieille-Europe.
TP-jeu Terminus, tout le monde apprend le Bash⚓︎
Pour la suite de l’apprentissage des lignes de commandes, nous utiliserons un jeu en ligne : Terminus (version d’origine en anglais). Gardez à l’esprit que même si c’est un jeu, c’est avant tout un travail qui vous permettra d’apprendre ou de réviser les commandes Bash.
Au fur et à mesure de votre avancée dans le jeu, vous devrez donc faire un plan du jeu et noter TOUTES les commandes apprises, leur fonction et éventuellement leur mode de fonctionnement le plus utile (options, arguments)
Toutes ces commandes, doivent être répertoriées dans le tableau suivant :
| Commandes | Fonction | Options, arguments |
|---|---|---|
ls |
Permet de lister un répertoire | -l : Permet un affichage détaillé du répertoire |
cat |
Affiche le contenu d’un fichier | ... |
| ... | ... | ... |
Le plan à construire au fur et à mesure de l’avancée du jeu doit être effectué sous l’une de ces deux formes :
- un simple brouillon au papier :
- ou une carte mentale numérique :
Remarques :
- le jeu Terminus adapte librement les commandes Bash aux besoins du jeu. Par exemple, la
commande
catpermettant normalement d’afficher le contenu d’un fichier permet, dans le jeu, d’interagir avec un objet ou un personnage (lire, parler,...). - dans votre tableau, il faut donc bien noter la fonction Bash de la commande et non pas sa fonction adaptée au jeu.
- le site web de documentation d’Ubuntu peut vous être utile pour trouver les mots permettant de résumer la fonction d’une commande.
- la touche
tabulationpermet d'autocompléter un nom de fichier ou de dossier que vous avez commencé à saisir. Cela peut permettre de gagner un peu de temps, et d'éviter des fautes de frappe !
Et maintenant... place au jeu :