• Aucun résultat trouvé

Exercice 3 : Édition de fichiers

N/A
N/A
Protected

Academic year: 2022

Partager "Exercice 3 : Édition de fichiers"

Copied!
5
0
0

Texte intégral

(1)

Isup 1 - Programmation TD no1 Matthieu Journault 22 Septembre 2020 En tant qu’utilisateurs d’ordinateurs vous êtes habitués à manipuler des interfaces. Une interface permet à un utilisateur de donner des ordres à une machine. La plupart des interfaces que vous avez l’habitude d’utiliser sont des interfaces graphiques (où il faut cliquer sur des boutons). De telles interfaces ont l’avantage d’être simple d’utilisations mais l’inconvénient de n’être pas très expressive. Aussi si l’interface vous propose un bouton faisant exactement pour ce que vous recherchez c’est parfait sinon, vous êtes bloqués.

Pour cette raison nous nous intéressons dans ce premier TD au terminal et au langage de program- mation bash que nous utiliserons pour interfacer avec la machine dans toutes les prochaines séances de TD.

Exercice 1 : Le terminal

Q. 1Ouvrir un terminal à l’aide du raccourci CTRL+ALT+Tou via le menu graphique.

Dans ce terminal vous voyez apparaître une invite de commande ressemblant à cela : matthieu@machine:~$ _

La première partie (matthieu) indique votre nom d’utilisateur. La seconde partie (machine) indique le nom de la machine à laquelle vous êtes connectés. La troisième partie (∼) indique le répertoire dans lequel vous vous trouvez actuellement dans l’arborescence de fichiers de votre machine. Un chemin dans l’arborescence de fichier de votre machine est dénoté par la liste des dossiers à suivre depuis la racine pour arriver là où vous voulez aller, séparé par des /. Par exemple dans ma machine le chemin vers le dossier contenant vos tds est le suivant :/home/matthieu/teaching/isup/20-21/tds/sujets/. Cette remarque devrait vous posez problème puisque nous avons dit que∼correspondait aux positionnement du terminal dans la machine,∼est en fait une abréviation pour/home/matthieu/, en effet ce répertoire appelé home de matthieu est le répertoire par défaut qui sera ouvert lorsque vous ouvrirez une nouvelle console.

Nous avons dit que cette console allait vous servir d’interface. Pour l’instant nous n’avons fait que lire des informations fournies par l’interface mais ne lui avons pas donné d’ordre. Vous pouvez donner des instructions à votre machine en tapant du texte à droite du symbole $, puis en demandant à votre machine de l’exécuter au moyen de la toucheEntrée de votre clavier. Le texte que nous pouvons taper à droite du$doit en fait être du bash, qui est un langage de programmation spécifiquement conçu pour servir d’interface avec votre machine.

Q. 2Demander à votre machine de lister le contenu du répertoire ∼ au moyen de la commande ls.

Q. 3Demander à votre machine de vous montrer où vous vous trouvez dans votre arborescence de fichier au moyen de la commande pwd.

La fonctionls peut être utilisée sans argument, c’est ce que vous venez de faire, mais elle peut aussi être utilisé avec des arguments. Pour appliquer un argument à une fonction en bash il suffit d’écrire : matthieu@machine:~$ fonction argument1 argument2

C’est à dire de séparer la fonction des arguments par un espace. La fonctionmkdirpermet de créer de nouveaux répertoires dans votre machine. Elle attend comme argument la positionrelative du nouveau

(2)

/

foo a

fichier1.txt fichier2.txt b

fichier3.txt fichier4.txt c

fichier5.txt bar

a

fichier6.txt b

fichier7.txt fichier8.txt

Figure1 – Exemple d’arborescence de fichiers

répertoire.

Q. 4Créer un nouveau répertoire ISUP au moyen de la commande mkdir ISUP

Il est possible de changer le répertoire courant au moyen de la commande cd prenant en argument le nom du répertoire dans lequel vous souhaitez aller.

Q. 5Déplacer vous dans le répertoire ISUP.

Q. 6 Créer un répertoire informatique dans le répertoire ISUP puis un répertoire td1à l’intérieur du répertoireinformatique. Déplacer vous à l’intérieur du répertoire td1.

Exercice 2 : Chemins relatifs et absolus.

Vous devriez vous trouver dans le répertoire ~/Informatique/ISUP/td1, vérifiez cela au moyen de la commande pwd.

Q. 7Entrer la commande cd ... Où vous trouvez vous ?

Il est donc possible de remonter dans l’arborescence de fichiers au moyen de .. qui représente le répertoire parent.

Nous avons vu qu’un fichierfileest représenté par un chemin de la racine de votre système de fichiers jusqu’à ce fichier. Cela peut devenir très gros à mesure que vous rajoutez des dossiers dans des dossiers.

Heureusement plutôt que d’utiliser une telle description absolue du fichier il est possible de donner une description relative de sa position. Une description relative d’une position A dans l’arborescence de fichiers par rapport à une autre positionB est un chemin de B vers A.

Dans le reste de cette exercice nous considérons l’exemple de l’arborescence de fichier de la figure 1.

Q. 8 Pour chacun des fichiers et répertoires de la figure 1 donner le chemin absolu vers ce fichier (ou répertoire) ainsi que le chemin relatif vers ce fichier depuis la position/foo/b/

(3)

Exercice 3 : Édition de fichiers

Nous allons dans la suite utiliser l’éditeur de texte Emacs. Par curiosité, vérifions où se situe le programmeemacs :

whereis emacs

Cette commande affiche le chemin vers le programme exécutable emacs. En principe, nous devrions taper tout ce chemin pour lancer emacs, mais le répertoire dans lequel est contenu emacs1 est en fait automatiquement parcouru par le shell chaque fois qu’une commande est entrée par l’utilisateur. Ainsi, il n’est pas utile d’entrer systématiquement l’intégralité de ce chemin chaque fois qu’on veut lancer Emacs : tapez simplement la commandeemacs pour lancer l’éditeur de texte Emacs.

Q. 9 Créer et sauvegarder un fichier dans ce même répertoire comprenant plusieurs lignes avec, par exemple, la liste de vos musiques préférées.

Retourner dans le terminal. Vous remarquez que, si vous n’avez fermé Emacs, vous ne pouvez plus utiliser le terminal. En effet, celle-ci se bloque jusqu’à ce que le programme lancé (iciEmacs) se termine.

Fermer Emacs dans le terminal à l’aide de l’interruption CTRL + C. Maintenant, relancez le avec la commande emacs &, ce caractère & à la fin de toute commande permet de lancer un programme via le terminal et que celui-ci soit toujours utilisable (le programme est lancé en tâche de fond).

À partir de maintenant, toutes les commandes ne seront plus décrites en détail à chaque fois. Afin de vous aider, vous disposez d’un outil très utile pour (re)trouver une commande et/ou la détail de ses options : la commande man(abréviation de manual), qui permet de donner la documentation d’une commande. Par exemple si vous tapezman cdvous aurez des informations surcd. Si vous ne savez pas le nom de la commande que vous cherchez, l’option-kvous permet de chercher toutes les pages du manuel qui contiennent une certaine chaîne de caractères (par exemple man -k <mot> vous permet de chercher toute les pages qui contiennent <mot>)2. Dans une page de manuel, vous pouvez faire une recherche en tapant le caractère “/” suivi de votre recherche, puis en appuyant sur la touche entrée. Vous vous déplacez ensuite de résultat en résultat vers l’avant avec la touche n (pour next), et vers l’arrière avec shift-n. On quitte le manuel en appuyant sur la touche q.

La commandemanbénéficie elle-même d’une page de manuel, accessible avec la commandeman man.

Q. 10Armés de cet outil, cherchez et utilisez la commande adéquate pour afficher le nombre de caractères présents dans le fichier que vous venez de créer.

Q. 11Trouvez dans votre fichier les lignes qui contiennent la lettre “e” (avec la commande grep).

Exercice 4 : Manipulation de fichiers

commande > fichiercopie la sortie de la commandecommande dans le fichierfichier. Par exemple ls -l > files.txt va enregistrer dans files.txt la liste des fichiers présents dans le répertoire cou- rant.commande1 | commande2donne en paramètre decommande2la sortie de la commandecommande1.

1. ainsi qu’un certain nombre d’autres répertoires

2. À défaut, un moteur de recherche et internet constituent évidemment une solution très puissante

(4)

Par exemple, echo “bonjour tout le monde” | wc -w compte le nombre de mots contenus dans la chaîne “bonjour tout le monde”.

Q. 12(Commande cut) Soit le fichier proverbe.txt contenant le texte suivant : Rien ne sert de courir

Il faut partir à point.

La Fontaine.

1. Créer le fichier proverbe.txt.

2. Donner la commande pour n’afficher que les 5 premiers caractères de chaque ligne.

3. Donner la commande pour n’afficher que les 2 premiers mots de chaque ligne.

4. Quel sera le résultat de la commande : cut -f 2-3 -d ’ ’ deproverbe.txt?

Q. 13(Commandes tailet sort) Soit le fichier real.csv contenant le texte suivant : Nom ; Prenom ; Naissance

Hitchcock ; Alfred ; 1899 Welles ; Orson ; 1915 Kubrick ; Stanley ; 1928 Fellini ; Federico ; 1920 Godard ; Jean-Luc ; 1930 Coppola ; Francis ; 1939 Renoir ; Jean ; 1899 Bergman ; Ingmar ; 1918 Ford ; John ; 1894

1. Donnez la commande qui permet d’obtenir le fichier liste.csv qui est une copie de real.csv sans la première ligne (utiliser < et>).

2. Donnez la commande pour obtenir un affichage de la liste des réalisateurs par noms croissants (voir commande cat, et utiliser |).

3. Donnez la commande pour obtenir un affichage de la liste par dates décroissantes

Q. 14Allez dans votre répertoire home et taper la commande ls -l -F -a.

— Donnez une explication rapide de chaque colonne.

— Que signifie le point devant un fichier ou dossier ?

Q. 15Créez un répertoire avec, dedans, le fichierfichier.txt. Utiliser la commandechmodpour (et vérifier avecls quels attributs changent sur le fichier) :

1. Mettre aucun droit d’accès à tout le monde au fichier fichier.txt (vérifier si cela fonctionne en essayant de le lire avec cat),

2. y mettre les droits de lecture, d’écriture et d’exécution au seul créateur du fichier, 3. y mettre les droits de lecture seul au groupe du créateur et aux autres,

4. y ajouter le droit d’exécution aux autres,

5. y retirer les droits d’écriture et d’exécution au créateur.

(5)

Q. 16Créer un fichier mots.txt contenant les mots suivants, un seul par ligne : boot book booze machine boots bungie bark aardvark broken$tuff robots

— Écrire la commande qui affiche les lignes contenant le motif boo.

— Idem mais avec en plus les numéros de ligne.

— Le nombre de lignes où boo apparait.

— Le motif qui permet de reconnaitre soitboot soit boots.

— La commande qui affiche les lignes qui ne contiennent pas boo, avec leur numéro.

Exercice 5 : Écriture de scripts Bash

Depuis le début de ce td, les programmes bash que nous écrivons sont très simples (généralement uniquement une commande).

Q. 17 Créez un nouveau fichier dans le répertoire td1, nommé hw.sh. On mettra systématiquement tout au début de nos scripts (les fichiers finissant en.sh) la ligne suivante :

#!/bin/bash

qui permet d’indiquer quelle variante du langage on utilise.

– Ajoutez la ligne suivante danshw.sh:echo "Hello World !"– Notre script, très simple, est ainsi un programme qui affiche la chaîne “Hello World !” à l’écran. Essayez de l’exécuter en tapant./hw.sh . Que se passe-t-il ? Pourquoi ? Comment y remédier ?

Q. 18 Créez un nouveau fichier dans le répertoire td1 nommé next.sh qui va effectuer les actions suivantes :

1. Aller dans le dossier parent ; 2. Créer un dossier td2;

3. Aller dans ce dossier.

Pour réaliser une succession de commandes, on séparer ces dernières par l’opérateur de séquence;. Par exemple mkdir Test; rm -r Testcrée et puis, successivement, supprime le répertoire Test.

Q. 19On voudrait améliorer le dernier script pour qu’il fasse les actions supplémentaires suivantes :

— Crée automatiquement un dossier tdN oùN est le numéro du TD courant + 1.

— Se duplique dans le nouveau dossier.

À vous de trouvez les commandes nécessaires pour automatiser ce traitement.

Références

Documents relatifs

Un arbre de calcul arithmétique est un arbre dont tous les nœuds non feuille ont exactement deux fils, dont les données sur les feuilles sont des nombres et les données sur les

Il suffit de mentionner le handle dans BX, le nombre d'octets à lire dans CX, et l'adresse d'un buffer dans DS:DX.. Au cas où vous ne sauriez pas ce qu'est un buffer (ou

[r]

Si vous n'avez pas encore installé lame, laissez-vous guider pour mettre le fichier lame_enc.dll dans le répertoire d'audacity et pour le « dire» à audacity, ensuite vous n'aurez

1 ARBORESCENCE Suspension, lampadaire, lampe de table – Pendant light, floor &amp; table lamp Hervé Langlais 2021.. Collection ouverte, Arborescence est une

Laurent POINTAL - LIMSI COURS PYTHON.. Le

objective of the new problem is to minimize the total completion time plus energy

La commande chmod go-r &lt;nom de répertoire&gt; (mode 711) empêche les tiers de consulter la liste des fichiers contenus dans un répertoire ; mais ils peuvent y accéder, s'ils