Les fichiers

[Total : 30 minutes]

Avant de courir il faut apprendre à marcher. Dans ce premier exercice, vous allez naviguer dans des répertoires, et faire quelques opérations courantes.

Question

Si ce n'est pas déjà le cas, mettez vous dans votre répertoire utilisateur. Quel est son chemin complet ?

Indice

Cherchez sur internet, par exemple "aller dans son répertoire utilisateur linux"

Indice

En cherchant sur internet, vous pouvez tomber sur cette page de documentation ubuntu, et la page pour changer de répertoire.

Vous pouvez aussi vous référer à au site LinuxCommand.org.

Solution

Votre répertoire home, ou répertoire utilisateur, est celui qui va être utilisé par défaut pour stocker les données des programmes qui sont exécuté avec votre compte utilisateur.

Généralement /home/<votre_login>.

La commande cd (pour change directory), sans argument, permet d'y retourner à tout moment.

La commande pwd affiche votre répertoire courant.

1
cd
2
pwd

Question

Créez un répertoire api, et dedans les sous-répertoires suivants :

  • tests (vous y mettrez des données sans importance)

  • scripts (vous y mettrez les scripts que vous écrivez)

  • data (vous y mettrez les sorties de commandes utiles)

  • notes (vous y mettrez votre prise de notes)

Indice

Cherchez sur internet : créer un répertoire linux

Solution

1
mkdir api
2
cd api
3
mkdir tests scripts data notes

Question

Ouvrez un 2eme terminal, et dans celui-ci, dans le répertoire "notes", créez avec l'éditeur de test nano le fichier "ma-prise-de-notes.txt", marquez y vos premières impressions et enregistrez ce fichier. Vous pouvez compléter ce fichier au cours de votre avancé dans l'api.

Indice

Utilisez les commandes cd et mkdir

Solution

Tapez terminal dans le menu de lancement de programmes, lancez le premier résultat.

Allez dans le bon répertoire et lancez nano :

1
cd ~/api/notes
2
nano ma-prise-de-notes.txt

Écrivez ce qui vous inspire, puis :

Pour enregistrer : Ctrl+o

Pour quitter : Ctrl+x

Question

Il existe un fichier kern.log sur votre disque dur, utilisez une commande pour trouver l'emplacement de ce fichier.

Indice

La commande "locate" est la plus rapide pour rechercher sur tout le disque, car elle explore une base de donnée de tout le disque. Comme vous avez probablement une installation fraîche de GNU/Linux, vous aurez peut être besoin de lancer "updatedb" en tant qu'administrateur pour construire la base (ensuite, c'est automatique une fois par jour, il n'y a pas besoin de la lancer à chaque fois).

Solution

1
sudo updatedb
2
locate kern.log

Vous obtenez au moins le résultat suivant :

1
/var/log/kern.log

Vous pourriez aussi utiliser la commande find mais c'est plus lent.

Remarque

Les logs du noyau depuis le dernier démarrage sont aussi accessibles par la commande "dmesg".

Question

Le fichier /proc/version est intéressant car il vous permet de connaître la version du noyau linux actuellement utilisé. Afficher le contenu de ce fichier.

Pour l'avoir plus facilement sous la main pendant que vous travaillez sur votre api, on pourrait en copier le contenu, mais imaginons que l'on souhaite que cela affiche tout le temps la bonne version, même si plus tard je met à jours mon système et que je n'ai plus cette version du noyau.

La solution est de créer un lien symbolique. Par exemple, je souhaite créer le lien symbolique "version-noyau" dans le répertoire "~/api/tests". Ce lien doit pointer sur ce fichier /proc/version.

Une fois le lien créé, que voyez vous si vous listez le contenu du répertoire ~/api/tests avec le plus de détails possibles ?

Pour tester, une fois que c'est fait, affichez le contenu du lien.

Indice

Vous pouvez utilisez les commandes suivantes :

  • cat (ou less) pour afficher un fichier

  • cd pour changer de répertoire

  • ln pour faire des liens, avec la bonne option pour avoir un lien symbolique

  • ls pour lister les fichiers d'un répertoire, avec la bonne option pour avoir une liste détaillée

Consultez les pages man de ces commandes ou l'aide sur internet pour avoir de l'aide.

Solution

Les commandes à utiliser

1
cat /proc/version
2
cd ~/api/tests
3
ln -s /proc/version version-noyau
4
ls -l
5
cat version-noyau

En résultat :

1
~/api$ cat /proc/version
2
Linux version 4.18.0-12-generic (buildd@lgw01-amd64-033) (gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1)) #13-Ubuntu SMP Wed Nov 14 15:17:05 UTC 2018
3
~/api$ cd ~/api/tests
4
~/api/tests$ ln -s /proc/version version-noyau
5
~/api/tests$ ls -l
6
total 0
7
lrwxrwxrwx 1 ics ics 13 janv.  7 18:43 version-noyau -> /proc/version
8
~/api/tests$ cat version-noyau
9
Linux version 4.18.0-12-generic (buildd@lgw01-amd64-033) (gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1)) #13-Ubuntu SMP Wed Nov 14 15:17:05 UTC 2018

On observe que la commande "ls -l" permet facilement d'identifier l'existence du lien et sa cible.

Que quand on affiche le contenu du lien, il nous propose bien le contenu de la cible.

Question

Copiez ce fichier kern.log dans le sous répertoire api/data/

Indice

Utilisez la commande cp

Solution

1
cp /var/log/kern.log ~/api/data

Question

Listez tous les fichiers, contenus dans le répertoire api et tous ses sous-répertoires, pour voir si vous n'avez pas fait d'erreur.

Indice

Il faudra aller ici plus loin qu'un simple "ls" pour s'assurer du contenu des sous-répertoires.

Solution

La commande find, habituellement destiné à chercher des fichiers précis, peut être aussi utilisée sans argument pour trouver tous les fichiers et sous-répertoires d'un répertoire donné sur plusieurs niveaux. Vous pouvez aussi utiliser "ls -R" mais c'est un peu moins lisible.

1
cd ~/api
2
find

Résultat (à comparer avec le vôtre) :

1
.
2
./notes
3
./notes/ma-prise-de-notes.txt
4
./data
5
./data/kern.log
6
./scripts
7
./tests
8
./tests/version-noyau

Question

Quelle espace occupe votre répertoire "api" sur votre disque ?

Indice

Cherchez sur internet, par exemple : espace disque occupé par un répertoire shell

Solution

1
du -h ~/api

Question

[Question bonus si vous êtes en avance] Compressez ce répertoire "api" dans une archive au format "tar.gz". Quel espace occupe ce fichier ?

Indice

Cherchez sur internet : compresser en tar.gz

Solution

1
tar cvzf ~/api.tar.gz ~/api
2
ls -lh ~/api.tar.gz

Question

[Question bonus si vous êtes en avance] Essayez de compresser à nouveau le répertoire api sous le même format, sauf ce qu'il y a dans le sous répertoire api/tests. Pouvez vous le faire en une seule commande, sans avoir à déplacer le répertoire tests ?

Indice

Recherchez de l'aide sur la page man ou sur internet pour l'option "exclude" de l'outil tar.

Solution

1
tar cvzf ~/api.tar.gz --exclude ~/api/tests ~/api