De la ligne de commande et l’environnement Unix

Aujourd’hui, il s’agira de mettre en pratique ce qui nous a été présenté en cours sur Unix et l’utilisation du terminal ces deux dernières semaines. On verra comment se déplacer dans l’arborescence de fichiers, comment créer un dossier et observer son contenu, comment créer et lire des fichiers.

On commence par créer un environnement de travail en lançant un script fourni au préalable. On obtient un dossier plein d’autres dossiers vides, pour nous aider à organiser notre travail au fur et à mesure de l’avancement du projet.

Un environnement de travail plein de promesses

Ensuite, nous allons créer des dossiers tests pour pouvoir appliquer quelques commandes Unix. D’abord, on demande à travailler dans /zak/Travaux/PPE avec la commande cd, puis on crée trois dossiers tests, TEST1, TEST2 et TEST3 avec mkdir.

cd et mkdir à l'oeuvre
cd et mkdir à l’oeuvre

Après ça, essayons de créer des fichiers nommés vide1.txt dans TEST1 et vide2.txt dans TEST2 avec touch.

On ajoute un fichier dans TEST2 tout en continuant à travailler dans TEST1 grâce à la référence ../
On ajoute un fichier dans TEST2 tout en continuant à travailler dans TEST1 grâce à la référence ../

On ajoute ensuite une ligne de texte dans vide1.txt avec echo et l’opérateur de redirection >, puis on en rajoute une autre sans écraser le texte précédent avec un autre opérateur, >>.

L'opérateur >> permet d'ajouter une ligne sans écraser le texte déjà existant
L’opérateur >> permet d’ajouter une ligne sans écraser le texte déjà existant

Puisque vide1.txt contient quelque chose, on le renomme jenesuisplusvide.txt grâce à mv.

mv
mv permet soit de déplacer un fichier, soit de le renommer

Pour finir, on déplace ce fichier vers TEST2, et dans TEST1 on crée une copie du fichier nommée moinonplus.txt en utilisant cp.

cp permet soit de déplacer un fichier soit de le renommer
Il est possible de copier des fichiers vers d’autres dossiers

Avant de continuer avec d’autres créations de fichier, on vérifie que tout s’est bien passé. On utilise donc ls pour observer la liste des fichiers présents dans un dossier, et cat pour pouvoir lire le contenu d’un fichier.

 Tout va bien, on respire.
Tout va bien, on respire

Et si on voulait garder le résultat d’une commande dans un fichier ? Encore une fois, on va utiliser l’opérateur > pour rediriger l’output d’une commande vers un fichier. Ici, on redirige l’output de ls vers le fichier liste.txt, puis on va rajouter une autre fois cet output à la fin de notre fichier.

Rediriger vers un fichier inexistant va créer ce fichier
Rediriger vers un fichier inexistant va créer ce fichier

En cours, on a vu un autre opérateur de redirection, 2>. Celui-ci permet d’écrire les messages d’erreur dans un fichier plutôt que de les afficher dans le terminal. Par exemple, on va utiliser la commande lsd, qui n’existe pas, et on va rediriger le message d’erreur vers erreur.txt.

On voit ici que le message d'erreur n'apparait pas avec 2>
Le message d’erreur n’apparaît pas avec 2>

On en a fini de manipuler ces fichiers. Cependant, on remarque qu’on n’a pas touché à vide2.txt dans TEST2, ni à TEST3. On va donc les supprimer avec respectivement rm et rmdir.

rm pour supprimer un fichier, rmdir pour un dossier
rm pour supprimer un fichier, rmdir pour un dossier

On veut maintenant savoir combien de fichiers il y a dans TEST2, et combien de dossiers il y a dans notre environnement de travail. On va donc créer un fichier contenant l’output d’un ls pour chaque dossier, puis on on utilisera wc -l pour compter le nombre de lignes de chaque fichier, donc le nombre d’éléments qu’ils contiennent.

ls prend en compte le fichier qu'on crée avec la redirection
ls prend en compte le fichier qu’on crée avec la redirection, donc wc aussi

Dernières subtilités d’Unix à être présentées dans cet article, on va parler de quelques symboles utiles. On va commencer avec le séparateur ; qui permet d’exécuter plusieurs commandes à la suite, indépendamment les unes des autres. Dans notre exemple, on utilise who qui indique les utilisateurs connectés en ce moment, et pwd qui affiche le répertoire de travail actuel.

On obtient les outputs de chaque commande dans leur ordre respectif
On obtient les outputs de chaque commande dans leur ordre respectif

Dans la même idée, le regroupement permet de rediriger plusieurs commandes vers le même fichier. Il suffit de mettre les commandes souhaitées entre parenthèses et séparées d’un point-virgule.

L'output va être identique à celui du screenshot précédent
L’output va être identique à celui du screenshot précédent

On finit d’effleurer les possibilités d’Unix avec l’imbrication, qui permet d’utiliser le résultat d’une commande comme argument d’une autre commande. On utilise la syntaxe qui suit :

Le résultat est une version plus loquace de pwd
Le résultat est une version plus loquace de pwd

C’est tout pour Unix aujourd’hui. Mais il est certain qu’au fil du temps, nous découvrirons encore de nombreuses commandes utiles pour la réalisation de notre projet, et elles seront documentées au moment venu, au fur et à mesure.

Cet article commençant à être suffisamment long et peu digeste, la partie HTML des exercices d’application suit dans un second article.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s