-
Séance 2 - Exercices sur le terminal Unix
Pour pouvoir mieux intégrer ce que avons appris lors du deuxième cours, nous avons résolut les exercices sur le terminal Unix, que nous pouvons trouver à la page du cours sur iCampus et également en suivant ce lien du site Plurital.
Application 1 :
Nous avons une liste de commandes à saisir dans notre terminal de commandes. Certaines sont formulée en langage naturel.
Nous sommes placés dans le répertoire Projet_encadre, qui a pour chemin absolu /home/kirsten-gaby/Documents/M1/S1/Projet_encadre et contient le fichier cours1.odt.
Les commandes mkdir TEST1 et mkdir TEST2 exécutent la création de deux répertoires TEST1 et TEST2 dans le répertoire courant. Nous pouvons le vérifier avec la commande ls.
On nous demande ensuite de créer un répertoire « TEST 3 » sans nous donner de commande. Il faut faire attention à l’écriture, car sur le terminal, les commandes, arguments et options sont séparés par un espace. Si nous écrivons mkdir TEST 3, TEST et 3 vont être considérés comme des éléments à part. La commande est donc mkdir «TEST 3», mais nous pourrions aussi l’écrire de cette façon : mkdir TEST\ 3. Le backslash \ indique au processeur qu’il faut compter l’espace comme un caractère du nom de répertoire, et non comme un séparateur.
La commande suivante cd TEST1 nous déplace dans le répertoire TEST1, qui doit être vide.
Nous exécutons alors la commande touch vide1.txt ./TEST1/vide2.txt ../TEST2/vide3.txt. La commande touch créé un ou des fichiers vides, en fonction du nombre d’arguments. Ici, le fichier vide1.txt est créé dans le répertoire courant et le fichier vide3.txt dans le répertoire TEST2. Le fichier demandé vide2.txt ne peut être créé, car nous n’avons pas de dossier TEST1 dans le répertoire courant, le terminal nous envoie ce message d’erreur : touch: impossible de faire un touch './TEST1/vide2.txt': Aucun fichier ou dossier de ce type.
Les commandes echo « Kirsten Berland » > vide1.txt et echo « Parents hélicoptères » >> vide1.txt ajoutent du contenu au fichier vide1.txt. Avec cat, nous pouvons voir son contenu. Les deux chevrons >> permettent de ne pas écraser le contenu déjà existant du fichier.
mv vide1.txt jenesuisplusvide.txt déplace vide1.txt en le renommant jenesuisplusvide.txt sur le répertoire courant. Nous n’avons donc plus vide1.txt mais jenesuisplusvide.txt dans TEST1. La commande cp permet de copier un fichier, et de renommer la copie si nous le voulons. Nous avons donc un nouveau fichier dans TEST1 et dans TEST2.
Nous faisons ensuite cat > toto.txt, qui nous demande de saisir du texte. Ce texte sera écrit dans le fichier nouvellement créé toto.txt.
Avec ls > liste.txt, nous inscrivons le contenu du répertoire courant dans le nouveau fichier liste.txt. ls >> liste.txt écrit une nouvelle fois le contenu du répertoire à la suite de la première liste, dont le fichier liste.txt lui-même.
La commande lsd n’existant pas, le ‘2>’ de lsd >> liste.txt 2> erreur.txt permet de créer le fichier erreur.txt et d’y inscrire le message d’erreur émise.
Le contenu du répertoire TEST1 est copié deux fois dans un fichier liste.txt du répertoire TEST2.
Les deux commandes suivantes rm vide2.txt et rmdir ../TEST3 sensées supprimer vide2.txt et le dossier TEST3, mais ceux-ci n’existant pas, nous recevons un message d’erreur.
Application 2 :
On nous demande d'écrire l'instruction pour compter le nombre de fichiers présent dans notre répertoire de travail. Nous utilisons la commande ls, qui liste le contenu du répertoire courant, et wc, qui compte le nombre de mots, de lignes et de caractères d'un fichier.
Pour que wc agisse sur le résultat de ls, nous utilisons le pipeline |. La liste donnée par ls est enregistrée en tant qu'argument de wc. L'option -l est ajoutée car nous ne voulons voir que le nombre de fichiers du répertoire.
Nous avons donc ceci : ls | wc -l
Cette instruction compte aussi les répertoires, s'il y en a. Nous pouvons donc la réécrire comme ceci : ls *.* | wc -l, l'expression '*.*' cherchant tous les noms comportant un point, les extensions de noms commençant par un point.
Dans la deuxième question, il s'agissait d'écrire une instruction comptant le nombre de fichiers dans TEST2.
Rappelons nous que nous nous situons dans le répertoire TEST1. L'instruction devient : ls *.* | wc -l ../TEST2. Nous avons donc trois fichiers dans TEST2 : vide3.txt, jenesuispasvide.txt et liste.txt.
-
Commentaires