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.
cd
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
mkdir api
cd api
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 :
cd ~/api/notes
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
sudo updatedb
locate kern.log
Vous obtenez au moins le résultat suivant :
/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
cat /proc/version
cd ~/api/tests
ln -s /proc/version version-noyau
ls -l
cat version-noyau
En résultat :
~/api$ cat /proc/version
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
~/api$ cd ~/api/tests
~/api/tests$ ln -s /proc/version version-noyau
~/api/tests$ ls -l
total 0
lrwxrwxrwx 1 ics ics 13 janv. 7 18:43 version-noyau -> /proc/version
~/api/tests$ cat version-noyau
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
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.
cd ~/api
find
Résultat (à comparer avec le vôtre) :
.
./notes
./notes/ma-prise-de-notes.txt
./data
./data/kern.log
./scripts
./tests
./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
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
tar cvzf ~/api.tar.gz ~/api
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
tar cvzf ~/api.tar.gz --exclude ~/api/tests ~/api