Parties

  1. Table des matières
  2. Révisions
    1. commande cp
    2. commnde ls
    3. commande less
    4. commande mv
  3. introduction au html
    1. Demarrage
    2. Desarchiver
    3. Decouverte du html
    4. Decouverte du html : dupliquer une image
    5. Decouverte du html : explication balise img
    6. Découverte du html : changer l'image
  4. la commande grep
    1. grep: introduction
    2. grep: lignes et occurences
    3. grep gpl.txt
    4. grep: option -v
  5. redirections
    1. redirection de la sortie de ls
    2. redirection sortie standard
    3. autres redirections
    4. redirections - à quoi ca sert?
    5. redirection sortie standard 2
    6. rappel: wc
    7. entrée standard
    8. entrée standard: grep au clavier
    9. redirection entrée standard
  6. tubes
    1. tubes: présentation
    2. tubes: ps
    3. tubes: ps 2
    4. tubes: ps : grep fichier
    5. tubes: ps : tube
    6. tubes: exemple ls | wc
    7. sondage
  7. shell: variables et scripts
    1. variables shell: introduction
    2. variables shell : variables dans les variables
    3. variables shell: utilisation dans une commande
    4. script shell: separateur ";"
    5. script shell: premier script
    6. script shell: mkdir
    7. script shell: variables
    8. script shell: arguments - presentation
    9. script shell: arguments
    10. boucles for
  8. les commandes find et sed
    1. ca devient plus dur
    2. commande "find"
    3. find: méta caractere
    4. find: exemple exec
    5. find: exec ls
    6. sed: presentation
    7. sed: utilisation html
    8. sed: utilisation html 2
  9. questions diverses
    1. divers: grep dans plusieurs fichiers
    2. divers: grep avec *
    3. divers: grep fichier dans autre répertoire
    4. divers: grep fichier dans autre répertoire tube
    5. divers: grep tube head
    6. divers: méta-caractères et répertoires
    7. divers: enchainer des tubes
    8. divers: sed sur entrée standard
    9. Remarques critiques et suggestions

1. Table des matières

1.1 Table des matières


Bienvenue au TP 3.

Avez vous bien fait et fini le TP précèdent?

C'est important d'avoir bien compris les notions du TP précèdent avant de faire ce TP.
Si ce n'est pas fait, finissez d'abord le TP précèdent.

Cliquez sur "continuer" pour commencer.

2. Révisions

2.1 Révisions

Dans les exercices suivants nous allons faire quelques révisions.

2.2 commande cp

Donnez le nom de la commande (juste son nom) qui permet de dupliquer un fichier.

2.3 commnde ls

Donnez le nom de la commande (juste son nom) qui permet d'afficher le contenu d'un répertoire

2.4 commande less

Donnez le nom de la commande (juste son nom) qui permet d'afficher le contenu d'un fichier (et non as d'un répertoire)

2.5 commande mv

Donnez le nom de la commande (juste son nom) qui permet de déplacer un fichier vers un autre répertoire

3. introduction au html

3.1 introduction au html

3.2 Demarrage

Rentrez dans le répertoire "~/systeme"
Quelle commande faut-il taper pour créer un répertoire "tp3"

3.3 Desarchiver

Dans votre navigateur, téléchargez l'archive fichiers-tp3-1.tar.gz

Rentrez dans le répertoire "~/systeme/tp3" et désarchivez en tapant la commande:
"tar xzvf ~/Desktop/fichiers-tp3-1.tar.gz"

Rentrez dans le répertoire "~/systeme/tp3/fichiers-tp3-1"

Combien de fichiers "png" est-ce qu'il y a dans le répertoire?

3.4 Decouverte du html

Ouverture d'un fichier html dans le navigateur


Dans votre terminal tapez la commande "pwd".
Ouvrez une nouveau onglet ou une nouvelle fenêtre de votre navigateur.
Dans la barre d'adresses du navigateur copiez le résultat de la commande "pwd".

Dans le navigateur, vous devriez voir une liste des fichiers de ce répertoire.

Dans le navigateur, cliquez sur le fichier "index.html".

Vous devriez voir une page avec des images dans laquelle est marqué "Ceci est une page html"

Modification d'un fichier html

Lancez un éditeur de texte et ouvrez le fichier "index.html" qui se trouve dans "~/systeme/tp3/fichiers-tp3-1"
Dans l'éditeur, trouvez le texte "Attention! Parfois l'informatique ...", modifiez le en écrivant ce que vous voulez, puis enregistrez le fichier.

Visualisation des changements

Dans le navigateur, affichez la page "Ceci est une page html" et appuyez sur le bouton "reload": reload(en haut à gauche de votre navigateur).
Vous devriez voir apparaître les modifications que vous avez effectué dans le texte.
(si rien ne change, vous pouvez appuyer sur ce bouton tout en appuyant sur une touche "shift" )
(la touche "shift" est aussi appelé "Maj" ou est représenté par une grosse flèche vers le haut)

3.5 Decouverte du html : dupliquer une image

Dans l'éditeur de texte trouvez la ligne "<img src="computer-head-bang.gif"/>".

Copier coller, au clavier

On veut dupliquer cette ligne en utilisant le copier coller entièrement au clavier (pas de souris).
Sans toucher à votre souris, sélectionnez la ligne à l'aide des touches flèches en maintenant appuyé la touche "shift" (Maj.)
Une fois la ligne sélectionné, tapez "control-c" pour faire le copier.
Ensuite désélectionnez la ligne en bougeant le curseur avec les flèches.
Maintenant, placez vous à la fin de la ligne et "collez" en appuyant sur "control-v".

Visualisation du résultat

Enregistrez le fichier à nouveau, puis retournez dans le navigateur et appuyez sur "reload".

Que voyez vous?

3.6 Decouverte du html : explication balise img

Revenez dans l'éditeur de texte et retrouvez les 2 lignes:
<img src="computer-head-bang.gif"/>

"img" est appelé une "balise" en html.
Elle veut dire : "dessiner une image ici"
Le champ "src" donne le nom du fichier contenant l'image.

Est-ce que ce fichier se trouve dans le répertoire "~/systeme/tp3/fichiers-tp3-1" ?

3.7 Découverte du html : changer l'image


Dans ce répertoire trouvez le fichier image qui représente un gâteau.
Remplacez le "computer-head-bang.gif" par ce fichier dans une des lignes:
<img src="computer-head-bang.gif"/>

Enregistrez, et retournez dans le navigateur pour vérifier le résultat.

4. la commande grep

4.1 la commande grep

4.2 grep: introduction

La commande "grep" permet de rechercher les lignes dans un fichier qui contiennent un terme.

Regardez le contenu du fichier "texte-court.txt" à l'aide de la commande "less texte-court.txt"
Quelles lignes contiennent au moins une fois les lettres "ch"?

Tapez la commande "grep ch texte-court.txt"

Combien de lignes sont affichées?

4.3 grep: lignes et occurences

Combien de fois est-ce que les lettres "ch" apparaissent dans le fichier "texte-court.txt" ?

4.4 grep gpl.txt

Dans combien de lignes apparaît le terme "GNU" dans le fichier "gpl.txt"?
(attention "GNU" est en majuscules...)

4.5 grep: option -v

L'option "-v" de grep permet d'inverser le fonctionement normal de grep:
on cherce alors le lignes qui ne contiennent pas le terme.

Tapez la commande "grep -v ch texte-court.txt"

Combien de lignes ne contiennent pas le terme "ch" ?

5. redirections

5.1 redirections

Rappels de cours:

rrr

5.2 redirection de la sortie de ls

Tapez la commande "ls ~"
Vous venez d'afficher le contenu de votre répertoire personnel.
Maintenant tapez la commande "ls ~ > sortiels"

Un nouveau fichier appelé "sortiels" s'est crée.
Regardez son contenu avec la commande "less"

5.3 redirection sortie standard


Relisez votre cours concernant les opérateurs de redirection.

Dans votre répertoire "~/systeme/tp3" créez un sous répertoire appelé "redirection".
Rentrez dans ce répertoire "~/systeme/tp3/redirection" et tapez "ls".
Tapez la commande "echo bonjour" et regardez bien ce qui s'affiche.

1. Maintenant, tapez la commande "echo bonjour1 > essai"

Qu'est-ce qui s'affiche?

Tapez "ls". Que constatez vous?

Regardez le contenu du fichier "essai" avec la commande "less essai"

Avez-vous compris ce qu'il s'est passé?

2. Tapez "echo bonjour2 > essai"

Regardez le contenu du fichier "essai" avec la commande "less essai"

Qu'est-ce qui c'est passé?

Est-ce que le contenu mis dans le fichier dans la question précédente est toujours là?

Lesquelles des ces affirmations sont VRAIES?


5.4 autres redirections

Dans la question précédente nous avons redirigé la sortie de la commande echo vers un fichier à l'aide de l'opérateur >

Essayons avec d'autres commandes.

1.
2.
3.
Avec ces exemples, vous devez avoir compris le sens de l'opérateur >

5.5 redirections - à quoi ca sert?

Redirections - à quoi ca sert?


Les redirections sont un outil très pratique, en particulier dans certaines situation complexes.

Voici quelques exemples simples d'utilisation:

1. On a un fichier contenant des adresses mail "adresses.txt" et on veut en créer un autre "liste-iut.txt" avec une liste de adresses qui sont de l'IUT:
grep iutv.univ-paris13.fr adresses.txt > liste-iut.txt

2. On veut créer très vite, sans avoir besoin d'ouvrir un éditeur de texte, un fichier "essai.txt"
echo > essai.txt

3. On veut enregistrer dans un fichier les résultats d'une commande pour pouvoir le réutiliser plus tard:
ps -ef > processus.txt


5.6 redirection sortie standard 2

Nous allons passer à l'opérateur >> (double > )
Tapez la commande "echo bonjour3 >> essai" puis la commande "echo bonjour4 >> essai"
Regardez le contenu du fichier "essai" avec la commande "less essai"

Quelle commande faut-il taper pour ajouter une ligne disant "hahaha" (sans espaces) à la fin du fichier "essai"?
(essayez d'abord, avant de répondre)

5.7 rappel: wc

Rappel: la commande "wc" permet de compter le nombre de lignes dans un fichier.

Combien de lignes contient le fichier "~/systeme/tp3/fichiers-tp3-1/texte-long.txt" ?

5.8 entrée standard

Lorsqu'on lui donne un nom de fichier en argument, la commande "wc nom-fichier" affiche le nombre de lignes (et de mots et d'octets) dans le fichier.

Si on ne lui donne pas d'argument, "wc" lit sur l'entrée standard: ici l'entrée standard c'est ce que vous taperez au clavier.

Tapez la commande "wc" toute seule, sans arguments.

Vous remarquerez que vous n'avez plus d'invite de commande du shell.
Tapez plusieurs lignes de texte.
Pour finir tapez sur entrée puis une seule fois sur les touches "ctrl-d".

Vous devriez avoir un affichage qui ressemble à ça:
stdin


Reconnaissez-vous les nombres "3 6 30" ? Ils correspondent au nombre de lignes, de mots et d'octets qu'on a tapé au clavier : c'est le résultat de la commande "wc".

--

Pour résumer:
en utilisant la commande wc toute seule (sans nom de fichier), elle attend qu'on lui fournisse du texte sur son entrée standard en tapant du texte (le control-d permet d'arrêter). Une fois la saisie fini, la commande compte le nombre de lignes, mots et caractères, comme elle l'aurait fait avec un fichier ... sauf que dans ce cas elle utilise ce qu'on a tapé au clavier.




5.9 entrée standard: grep au clavier

Nous allons faire la même chose avec "grep".

Tapez la commande "grep on"
Vous ne devriez plus avoir d'invite de commande.
Ensuite tapez plusieurs lignes de texte.

Que se passe-il lorsque vous tapez une ligne de texte contenant les lettres "on"?
(pour finir, tapez sur entrée, puis sur "ctrl-d")

5.10 redirection entrée standard

Allez dans le répertoire "~/systeme/tp3/fichiers-tp3-1"

Tapez la commande "grep ch texte-court.txt"
puis la commande "grep ch < texte-court.txt"

Les deux affichent des résultats identiques.
Dans le premier cas "grep" lit directement dans le fichier "texte-court.txt"
Dans le deuxième cas "grep" lit dans l'entrée standard qui est redirigée à partir du fichier "texte-court.txt" par l'opérateur "<"






6. tubes

6.1 tubes

6.2 tubes: présentation

Toute cette histoire d'entrée standard peut sembler un peu compliqué et pas très utile...
Mais, ça devient très pratique lorsqu'on utilise les tubes

Voyons quelques exemples d'abord.

Vérifiez que vous êtes bien dans le répertoire "~/systeme/tp3/fichiers-tp3-1"
Tapez la commande "ls -l"
Maintenant, tapez "ls -l | grep txt"

Qu'est-ce qui s'affiche?

Tapez les commandes suivantes en essayant de comprendre ce qui se passe.

ls -l | grep html
ls -l | grep texte
ls -l | grep -v texte
ls -l | wc
ls -l | grep texte | wc

Qu'affichent ces commande?







6.3 tubes: ps

Tapez la commande "ps -ef"

Qu'affiche cette commande?

6.4 tubes: ps 2

Essayez de trouver les processus correspondant au programme "bash".

La commande "ps -ef" affiche beaucoup trop de choses!

Au lieu de lire tout ça à l'écran, on val le mettre dans un fichier. Ensuite on lira le fichier.

Quelle commande faut-l taper pour rediriger la sortie de "ps -ef" dans un fichier "liste-processus.txt"?

6.5 tubes: ps : grep fichier

Regardez le contenu du fichier "liste-processus.txt" avec la commande "less".

Est-ce que vous voyez des processus "bash"?

Au lieu chercher à la main on peut utiliser grep.

Qu'est-ce qu'il faut taper pour rechercher le terme "bash" dans le fichier "liste-processus.txt" avec la commande "grep"?

6.6 tubes: ps : tube

En conclusion:

On vient de:
1. écrire le résultat de "ps -ef" dans un fichier
2. rechercher le terme "bash" dans ce fichier avec la commande "grep"

C'est un peu long. Au lieu de passer par un fichier on peut utiliser un tube.

Qu'est-ce qu'il faut taper pour rechercher le terme "bash" dans la sortie de la commande "ps -ef" à l'aide d'un tube?

(regardez votre cours!)

6.7 tubes: exemple ls | wc

On va rapidement refaire la même chose avec deux autres commandes:

Tapez la commande "ls"
Tapez la commande "ls > essai"
Lisez le contenu du fichier "essai" avec "less essai"
Tapez la commande "wc essai"
Tapez la commande "ls | wc"

Essayez de bien comprendre chaque étape.

6.8 sondage

Vérifiez que vous avez bien répondu à tous les sondages qui se trouvent sur la page principale de ce cours.
N'hésitez pas à intervenir dans les forums.

7. shell: variables et scripts

7.1 shell: variables et scripts

7.2 variables shell: introduction

Vairables Shell


Une variable, c'est comme une boite. Elle porte un nom et elle peut contenir une valeur.
Pour metre une valeur dans la boite on ecrit "nomdelaboite=valeur"
Pour chercher la valeur de la boite, on ecrit "$nomdelaboite"

Exemple simple

Dans votre terminal, tapez "nom=Amira" suivi d'entrée.
Ensuite tapez la commande "echo bonjour $nom"

Vous devriez voir s'afficher "bonjour Amira"

Tapez "nom=Malek"
puis "echo bonjour $nom"

Qu'est-ce qu'il s'affiche?

7.3 variables shell : variables dans les variables

Tapez "nom=Dupond" puis "prenom=Jean"

ensuite tapez "echo prenom $prenom nom $nom"

Vérifiez qu'il s'affiche bien "prenom Jean nom Dupond"

Remarquez bien la différence entre "nom" et "$nom".
Quand il n'y a pas le "$" il ne s'agit pas d'une variable.

tapez "email=$prenom.$nom@iutv.univ-paris13.fr"

puis

echo $email

Qu'est-ce qu'il s'affiche?

7.4 variables shell: utilisation dans une commande

Utilisation sans "echo"


Tapez "tp=tp1"

Puis exécutez la commande "ls ~/systeme/$tp"

Ensuite essayez "tp=tp3" puis refaites la commande précédente.

A vous maintenant

On définit les deux variables suivantes:
source=/usr/include/stdlib.h
destination=/tmp

Quelle commande faut-il taper pour copier le fichier /usr/include/stdlib.h dans le répertoire /tmp en utilisant uniquement ces deux variables?

7.5 script shell: separateur ";"

Tapez la ligne suivante "echo bonjour; sleep 1; echo je suis la; sleep 1;echo aurevoir"

A quoi sert le ";" ?


7.6 script shell: premier script

Créez un répertoire "~/systeme/tp3/scripts" et rentrez dedans.
Ouvrez un éditeur de texte et écrivez les lignes suivantes:

echo bonjour
sleep 1
pwd
sleep 1
echo ca marche
sleep 2
echo aurevoir

Enregistrez ce fichier sous "~/systeme/tp3/scripts/essai.sh"
Ajoutez le droit d'exécution à ce fichier en tapant: "chmod +x essai.sh"
Vérifiez avec "ls -l essai.sh" que les droits d'execution sont bien là.
Exécutez ce script avec "./essai.sh"

Vous devriez voir s'afficher des messages avec une ou deux secondes d'intervalle.

Dans l'éditeur, effacez toutes les lignes "sleep ..." du fichier puis enregistrez.
Exécutez le script avec "./essai.sh"
Vous devriez voir s'afficher les messages sans attente.




7.7 script shell: mkdir

Dans un fichier que vous appelerez "repertoires.sh", écrivez un script de 6 lignes qui:

1. affiche "bonjour"
2. crée un répertoire appelé "test"
3. crée un sous-répertoire "test/tp1"
4. crée un sous-répertoire "test/tp2"
5. crée un sous-répertoire "test/tp3"
6. affiche "aurevoir"

Exécutez-le et vérifiez qu'il a bien fonctionné à l'aide de la commande "ls"

Vous pouvez effacer les répertoires crées avec la commande "rm -rf test" (il vaut mieux le faire entre chaque essai, pour éviter des messages disant que les répertoires que vous êtes en train de créer existent déjà).

7.8 script shell: variables


Nous allons modifier le script précèdent pour utiliser une variable à la place de "test".

Au début de votre script "repertoires.sh", ajoutez une ligne "matiere=test2"
Puis, dans le reste du script, remplacez "test" par "$matiere".

Exécutez le script à nouveau, et vérifiez qu'il a bien crée le répertoire "test2" avec ses sous-répertoires.

Recommençons avec une autre valeur pour la variable "matiere".
Changez la ligne "matiere=test2" en "matiere=test3", et verifiez que ca a bien marché.



7.9 script shell: arguments - presentation


Les scripts shell peuvent prendre des arguments (appelés aussi "paramètres"). Ces arguments sont mis dans des variables dont le nom est un numéro:

Le premier argument est dans la variable $1
Le deuxième argument est dans la variable $2
Le troisième argument est dans la variable $3
etc.

créez un script shell appelé email.sh (n'oubliez pas de changer les droits).

Faites en sorte que ce script affiche une adresse mail de l'IUT construite à partir du prénom et noms fournis en argument.

Par exemple:
./email.sh Jean Durand
devra afficher Jean.Durand@iutv.univ-paris13.fr

./email.sh Mark Dupond
devra afficher Mark.Dupond@iutv.univ-paris13.fr



7.10 script shell: arguments

On va maintenant utiliser un argument dans votre script de création de répertoires (repertoires.sh) écrit précédemment.

Pour afficher le premier argument, ajoutez cette ligne au début de votre script: "echo argument1:$1"
Ensuite changez la ligne "matiere=test3" en "matiere=$1"

Exécutez votre script avec l'argument "test4" en tapant: "./repertoires.sh test4"
Vérifiez que le le script a bien fonctionné et qu'il a bien crée le répertoire "test4"

N'oubliez pas de supprimer les répertoires entre chaque essai.


7.11 boucles for

Nous allons maintenant essayer des boucles simples:

Créez un nouveau fichier appelé "essai-boucle.sh" et qui contient:

for nom in Amira Nicolas Karim ; do
echo bonjour $nom
sleep 1
done

Exécutez ce script (n'oubliez pas le "chmod +x essai-boucle.sh").
Vous devriez voir les lignes suivantes s'afficher:

bonjour Amira

bonjour Nicolas
bonjour Karim

Que se passe-il si on enlève la ligne "sleep 1"?

Dans la première ligne du script, remplacez "Amira Nicolas Karim" par le méta-caractère étoile ("*" sans les guillemets)
Qu'affiche le nouveau script?

8. les commandes find et sed

8.1 les commandes find et sed

8.2 ca devient plus dur

A partir d'ici les questions vont devenir un plus difficiles, n'hésitez pas à demander de l'aide à votre enseignant.
Lisez attentivement les questions et utilisez votre cours.

8.3 commande "find"

Commande find : premier essai


Allez dans le répertoire "~/systeme/tp3/fichiers-tp3-1"

On va chercher tous les fichiers appelés "index.html" à l'aide de la commande "find".
La commande find cherche aussi récursivement dans les sous-répertoires.

Tapez la commande: find . -iname index.html

Combien de fichiers appelés "index.html" est-ce qu'il y a dans cette arboresence (répertoire et sous répertoires)?

Utiliser "wc" pour compter

Maintenant, au lieu de compter à la main le nombre de lignes affichés par "find", utilisez un tube et la commande "wc".

Quelle est la commande (en entier) qu'il faut utiliser?


8.4 find: méta caractere

On va utiliser la commande "find" avec un méta-caractère pour rechercher tous les fichiers ".png".

Attention!
Lorsque vous utilisez un méta-caractère avec find, il faut utiliser de guillemets.

Exemple:
CORRECT: find . -iname "*.html"
FAUX---: find . -iname *.html

Quelle commande faut-il taper pour rechercher tous les fichiers de type "png" ?




8.5 find: exemple exec

(si vous êtes en retard, vous pouvez passer cet exercice)

Cet exercice est un peu complique et il est uniquement destiné à votre culture.

La commande "find" est extrêmement puissante et permet de faire des recherches complexes et des opérations intéressantes. Ici, on va juste voir un exemple très simple d'exécution.

Explication de l'exemple

Créez un répertoire "~/systeme/tp3/images" puis retournez dans le répertoire "~/systeme/tp3/fichiers-tp3-1"

Supposons que l'on veuille copier tous les fichiers "png" du répertoire courant et de ses sous-répertoires (recursivement) dans le répertoire "../images" que l'on vient de créer.
On peut dire à "find" de rechercher ces fichiers. Chaque fois que find trouve un fichier, on peut lui demander d'exécuter la commande "cp" avec les arguments nécessaires.

Voici la commande:
find . -iname "*.png" -exec cp {} ../images \;

(attention il y a un espace avant "\;")

Explications:
"-exec" veut dire "exécuter une commande lorsqu'on trouve quelque-chose".
"{}" correspond au nom du fichier qu'on vient de trouver
"\;" indique la fin de la commande

Essayez

On va ajouter "echo" pour afficher la commande, au lieu de l'exécuter pour de vrai.
Tapez la commande:
find . -iname "*.png" -exec echo cp {} ../images \;

Vous devriez voir afficher:
cp ./tux.png ../images
cp ./gateau.png ../images
cp ./templates/design-vert/directory.png ../images
cp ./templates/design-bleu/directory-2.png ../images
cp ./gnome.png ../images
cp ./exemple.png ../images

maintenant exécutez la commande précédente, en enlevant le "echo".

Affichez le contenu du répertoire "../images" pour vérifier que la copie c'est bien déroulée.

8.6 find: exec ls

(si vous êtes en retard, vous pouvez passer cet exercice en répondant "en retard")

Vérifiez que vous êtes bien dans le répertoire ~/systeme/tp3/fichiers-tp3-1.

La commande "ls -l nomfichier" permet d'afficher toutes les informations sur le fichier "nomfichier".

En vous inspirant de l'exemple "find" précedent, quelle commande faut-il taper pour afficher toutes les informations ("ls -l") des fichiers .png du répertoire courant et de tous ses sous-répertoires (recursivement) ?

8.7 sed: presentation

La commande "sed" permet de remplacer un bout de texte par un autre.
C'est une commande qui peut faire des choses très sophistiqués.
Ici, on va rester simple.

copiez le fichier "texte-court.txt" en "essai-sed.txt" ("cp texte-court.txt essai-sed.txt")

Regardez le contenu de "essai-sed.txt" avec la commande "less"

Tapez la commande suivante: "sed -i 's/ch/XX/g' essai-sed.txt"

Regardez, à nouveau, le contenu de "essai-sed.txt" avec la commande "less"

Quelle commande faut-il taper pour remplacer la lettre "i" avec les lettres "YY" dans le fichier "essai-sed.txt"?

8.8 sed: utilisation html

Ouvrez dans votre navigateur web le fichier "remplacer.html" ?
Vous devriez voir le logo gnome.

On veut renommer le fichier "gnome.png" en "logo-gnome.png"

On va commencer par renommer le fichier et ensuite on modifiera le fichier "remlacer.html"

Quelle commande faut-il taper pour renommer le fichier?
(pour renommer un fichier on utilise la même commande que pour déplacer un fichier)

8.9 sed: utilisation html 2

Problème


Sur la page "remplacer.html" appuyez sur le bouton "reload" du navigateur.
L'image ne s'affiche plus. Pourquoi?

Utilisation de sed

Pour remédier au problème nous allons remplacer le texte "gnome" par "logo-gnome" à l'aide de la commande "sed" dans le fichier "remplacer.html"

Quelle commande faut-il taper?
(vérifiez dans le navigateur si ça a bien fonctionné. En cas de problème, regardez le contenu du fichier "remplacer.html" avec la commande "less")

9. questions diverses

9.1 questions diverses

9.2 divers: grep dans plusieurs fichiers

La commande grep peut rechercher dans plusieurs fichiers. Voici la syntaxe:

"grep texte-a-rechercher fichier1 fichier2 fichier3 ..."

quelle commande faut-il taper pour rechercher le texte "img" dans les fichiers "index.html" et "page2.html" ?
(dans cet ordre)


9.3 divers: grep avec *

Au lieu de taper les noms de fichier à la main, comme à la question précédente, on peut utiliser le méta-caractère "*"

Quelle commande faut-il taper pour rechercher le texte "img" dans tous les fichiers html?

9.4 divers: grep fichier dans autre répertoire

Comme pour toute commande unix, un fichier passé en argument à "grep" n'a pas besoin d'etre dans le répertoire courant.

Quelle commande faut-il taper pour rechercher "img" dans le fichier "google-more.html" se trouvant dans le répertoire "google"?
(tout en restant dans "~/systeme/tp3/fichiers-tp3-1")

9.5 divers: grep fichier dans autre répertoire tube

En reprenant la commande précédente avec un tube, combien de lignes du fichier "google-more.html" contiennent le terme "img"?
(on vous demande le nombre de lignes, pas la commande à taper)

9.6 divers: grep tube head

La commande "head" toute seule, sans arguments, ni options, affiche les 10 premières lignes de son entrée standard.

En utilisant un tube, quelle commande faut-il taper pour afficher les 10 premières lignes contenant les lettres "le" du fichier "texte-long.txt" ?

9.7 divers: méta-caractères et répertoires

On peut utiliser le méta-caractère "*" avec des expressions concernant des répertoires.

Par exemple:

la commande "rm */*" efface tous les fichiers contenus dans tous les sous-répertoires du répertoire courant.

la commande "rm public*/*" efface tous les fichiers contenus dans tous les sous-répertoires du répertoire courant, dont le nom commence par "public".

Quelle commande faut-il taper pour afficher toute l'information ("ls -l") sur tous les fichiers html contenus dans les sous-répertoires (un seul niveau) du répertoire courant ?


9.8 divers: enchainer des tubes

On peut enchaîner plusieurs tubes (comprenant, par exemple des commandes grep).

1.
Quelle commande faut-il taper pour afficher les lignes contenant le texte "img" du fichier "google-more.html"?

2.
Parmi ces lignes on veut afficher uniquement celles qui contiennent le texte "png".
On peut reprendre la première commande et ajouter un tube vers une nouvelle commande "grep".

3.
Pour finir, on veut compter combien de lignes sont affichés.
Pour ça on peut ajouter un nouveau tube à la commande 2. dirigé vers la commande wc.

4.
Combien de lignes est-ce qu'il y a?

9.9 divers: sed sur entrée standard

La commande "sed" peut lire sur l'entrée standard. Pour ca, il suffit de ne pas utiliser l'option "-i".

Par exemple, tapez la commande "echo tonton | sed 's/on/af/g' "

Quelle commade faut-il taper pour afficher les lignes de "texte-court.txt" qui contienent les lettres "ch" tout en transformant les e en E majuscule?
(on fera le "grep" avant le "sed")

9.10 Remarques critiques et suggestions

Si vous avez fini avant l'heure, prenez quelques minutes pour formuler des remarques sur ce TP dans le sujet du forum "remarques TP3". Si vous avez trouvé des erreurs, des questions pas claires, des fautes d'orthographe... n'hésitez pas. Ça aidera les prochains étudiants.

N'hésitez pas à faire des suggestions aussi.
Ensuite, pensez à faire le mini-contrôle de fin de TP (voir la page principale de ce cours)
Ensuite passez au TP suivant.

Si vous avez vraiment tout fini vous pouvez lire le fichier "texte-long.txt" wink