Aller au contenu

10 Exos Systèmes

Exercice du cours :⚓︎

Figure 2 : Arborescence développée

  1. En vous basant sur l’arborescence ci-dessus, déterminez le chemin absolu permettant d’accéder au fichier :

    • networks
    • titi.txt
  2. Toujours en vous basant sur l’arborescence ci-dessus, déterminez le chemin relatif permettant d’accéder au fichier :

    • titi.txt depuis le répertoire elie
    • tutu.txt depuis le répertoire boulot

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 dos pour se placer dans ce répertoire puis appuyer sur "entrée". Saisir ensuite ls puis appuyer sur "entrée" pour lister son contenu (un répertoire en bleu et d'autres fichiers).

  • Saisir cd asm-1.9 pour se placer dans ce répertoire puis appuyer sur "entrée". Saisir ensuite ls puis appuyer sur "entrée" pour lister son contenu (plusieurs fichiers dont des fichiers .txt)

  • Saisir cd .. puis appuyer sur "entrée". Saisir alors pwd puis 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épertoire asm-1.9 en saisissant cd dos/asm-1.9 puis 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 simplement cd) puis appuyer sur "entrée".

  • Essayer ls dos/asm-1.9 pour 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 destination copie le fichier source vers destination (source et destination sont des chemins). Par exemple, saisir depuis le répertoire d'accueil la commande cp dos/asm-1.9/license.txt /root pour copier le fichier license.txt du répertoire asm-1.9 vers la racine (ou HOME, ou répertoire d'accueil) et faire ls pour 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 renommer mpf.txt car son nom est trop long, créer son propre dossier mpd et déplacer mpf.txt dans le dossier mpd avec les commandes touch, mv, mkdir (mv pour move permet de renommer et de déplacer) :

A tester !

  • Pour supprimer un répertoire vide, il faut utiliser rmdir et non rm (suppression de fichiers). Si le répertoire contient des fichiers, on peut utiliser la "dangereuse" commande rm -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

Article des décodeurs : l'histoire de l'homme qui a tué son entreprise avec une ligne de code était fausse

Fake news ! Mais la commande reste dangereuse...

Exercice 1 :⚓︎

(Commande cat)

  1. Depuis le dossier d'accueil root, saisir une commande pour se rendre dans le dossier asm-1.9 (voir plus haut pour l'arborescence).

  2. Saisir la commande ̀cat license.txt`

Exercice 2 :⚓︎

(Arborescence)

  1. Vérifier depuis la racine que l'arborescence contient au moins tous les dossiers donnés dans le cours.

  2. Représenter dans le cahier l'arborescence complète depuis /root.

Exercice 3 :⚓︎

(création, suppression)

  1. Dans le dossier /root créer un répertoire dossier1 et à l'intérieur, créer un fichier texte vide nommé fichier1.txt, puis supprimer ce fichier et supprimer le répertoire.

  2. 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)

  1. Depuis le répertoire d'accueil saisir head hello.js pour voir les premières lignes du fichier.

  2. Tester la commande qjs hello.js pour exécuter le fichier Javascript.

Exercice 6 :⚓︎

(Editer un fichier texte)

  1. Depuis le répertoire d'accueil créer un fichier mpf.txt.

  2. Saisir vi mpf.txt puis appuyer sur "entrée" et commencer à éditer comme ci-dessous :

  1. Appuyer sur la touche Esc une fois l'édition terminée, puis saisir :x et appuyer sur "entrée" pour quitter et sauvegarder (:q! pour quitter sans sauvegarder). Vous devriez retrouver l'invite de commande.

  2. Saisir head mpf.txt pour observer le résultat.

  3. 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 -w permet de compter le nombre de mots, -l le nombre de lignes, et -c le 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 :

Bash
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 :

Bash
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 ~

  1. Dans son répertoire personnel, créer le répertoire TP-SHELL puis entrer dans ce répertoire.
  2. Créer le répertoire Europe et changer de répertoire courant pour Europe.
  3. É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.
  4. Créer dans ~ une copie de tout le répertoire Europe avec ses sous-répertoires et nommer cette copie Vieille-Europe. Les modifications qui suivent devront être faites dans Europe.
  5. Appliquons le traité de Francfort de 1871. Se placer dans le répertoire Prusse et déplacer Belfort dans France puis déplacer Alsace dans Prusse. Revenir dans Europe et renommer Prusse en Allemagne.
  6. Depuis Europe, afficher le contenu de Bordeaux puis détruire ce fichier.
  7. Appliquons le traité de Versailles de 1919. Depuis France, ramener Alsace en France puis détruire Vieille-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 :

Figure 3 : Plan Terminus papier

  • ou une carte mentale numérique :

Figure 4 : Plan Terminus Carte mentale

Remarques :

  • le jeu Terminus adapte librement les commandes Bash aux besoins du jeu. Par exemple, la commande cat permettant 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 tabulation permet 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 :