Formulaire de contact

 
Récapitulatif de la séance 3 (04/10/2017)




PLAN DU COURS

       ENTREE/SORITE ET PIPE
       COMMANDES À RETENIR
       SCRIPT BASH

I ENTREE/SORITE
Mécanismes d’entrée-sorties standards
       stdin (0) : flux d'entrée ; généralement le clavier
       stdout (1) : flux de sortie ; généralement l'écran
       stderr (2) : flux d'erreurs ; généralement l'écran ; tous les messages d'erreurs lors de l'exécution d'un programme
Par défaut, stdout et stderr sont confondus sur le console ; pour faciliter le travail, une rédirection est necessaire.

1.1 Rédirection de stdout :
1.1.1  > 
CMD > FILE
Rédiriger la soirte de CMD vers le FILE (à la place de l’écran)
Si le fichier FILE n’existe pas, le créer ; sinon, l’écraser et le remplacer à nouveau

1.1.2  >>
CMD >> FILE
Rédiriger la soirte de CMD vers le FILE
Si le fichier FILE n’existe pas, le créer ; sinon, concaténer les résultats

1.2 Rédirection de stderr :
1.2.1  2> 
CMD 2> FILE
Rédiriger les messages d’erreurs lors de l’exécution de CMD vers le FILE (à la place de l’écran)
Si le fichier FILE n’existe pas, le créer ; sinon, l’écraser et le remplacer à nouveau

1.2.2  2>>
CMD 2>> FILE
Rédiriger les messages d’erreurs lors de l’exécution de CMD vers le FILE
Si le fichier FILE n’existe pas, le créer ; sinon, concaténer les résultats

1.3 Rédirection de stdin :
1.3.1  < 
CMD < FILE
Rédiriger le FILE comme l’entrée de CMD (à la place du clavier)

1.3.2  |
CMD1 | CMD2
Rédiriger la soirte de CMD1 vers l’entrée de CMD2

1.4 caractère spécial : &
Référence

&> FILE
i.e.

FILE 2>&1
Permettre de rédiriger le stdout et le stderr

1.5 PIPE  |
Permettre d’enchaîner des commandes
cf 1.3.2

II COMMANDES
2.1 $cp
copier des fichiers et des répertoires
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE…

2.1.1 $cp fichier_source fichier_cible
Si fichier_cible existe, $cp copie fichier_source dans fichier_cible ; sinon, $cp copie le fichier_source en désignant un nouveau nom (fichier_cible).

2.1.2 $cp ficher répertoire
$cp copie le ficher dans le répertoire en gardant son nom ; dans ce répertoire, s’il y a un fichier avec le même nom, $cp remplace ce fichier par le fichier source ; si le répertoire n’existe pas, une erreur se produit.

2.1.3 $cp répertoire_source répertoire_cible
[OPTION] -r : la copie récursive de répertoires
Si le répertoire cible existe, $cp copie le répertoire source entier dans le répertoire cible en lui gardant son nom ;
Sinon, $cp copie le répertoire source entier en lui rénommant

2.2 $mv
move (rename) files
Déplacer ou renommer des fichiers ou des répertoires
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE…

2.2.1 $mv fichier_source fichier_cible
$mv renomme le fichier_source comme le fichier_cible, le fichier_source est disparu.

2.2.2 $mv ficher répertoire
$mv déplace le fichier dans le répertoire.

2.2.3 $mv répertoire_source répertoire_cible
Si le répertoire_cible existe, $mv déplace le répertoire_source sous le répertoire_cible en gardant son nom ; sinon, $mv renomme le répertoire_source comme le répertoire_cible.

III SCRIPT BASH
Création

#!bin/bash
       interpréteur :  bash
       # commentaire
       #! introduire l’interpréteur

Exécution

$bash ./NOM_FICHIER.sh


EXERCICES
TP Consignes url:
Phase 1 : les entrées–sorties
APPLICATION1(page 9)

yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ mkdir TEST1 TEST2
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ ls
Notes1004.odt  TEST1  TEST2
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ mkdir TEST3
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ ls
Notes1004.odt  TEST1  TEST2  TEST3
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ cd TEST1
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ touch vide1.txt ./TEST1/vide2.txt ../TEST2/vide3.txt
touch: cannot touch './TEST1/vide2.txt': No such file or directory
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ touch ../TEST1/vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls
vide1.txt  vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ echo XU Yizhou > vide1.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ echo Intelligence Artificielle >>vide1.txt 
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ cat vide1.txt
XU Yizhou
Intelligence Artificielle
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ mv vide1.txt jenesuisplusvide.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls
jenesuisplusvide.txt  vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ cp jenesuisplusvide.txt ../TEST2
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ cp jenesuisplusvide.txt moinonplus.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls
jenesuisplusvide.txt  moinonplus.txt  vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls > liste.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ cat liste.txt
jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls >> liste.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ cat liste.txt 
jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ lsd >> liste.txt 2>erreur.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls
erreur.txt  jenesuisplusvide.txt  liste.txt  moinonplus.txt  vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ cat erreur.txt
No command 'lsd' found, but there are 17 similar ones
lsd: command not found
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls > ../TEST2/liste.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls >> ../TEST2/liste.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ rm vide2.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ ls
erreur.txt  jenesuisplusvide.txt  liste.txt  moinonplus.txt
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ rmdir ../TEST3
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST1$ cd ..
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ ls
Notes1004.odt  TEST1  TEST2



chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ pwd
/home/chunyang/Documents/ProjetEncadre20172018/cours/TP1
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ mkdir TEST1 TEST2
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ ls
TEST1  TEST2
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ mkdir TEST3
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ cd TEST1chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ touch vide1.txt ./TEST1/vide2.txt ../TEST2/vide3.txt
touch: cannot touch './TEST1/vide2.txt': No such file or directory
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ touch ../TEST1/vide2.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls
vide1.txt  vide2.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ echo "JIANG Chunyang" > vide1.txt 
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ echo "Intelligence Artificielle" >> vide1.txt 
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls
vide1.txt  vide2.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ mv vide1.txt jenesuisplusvide.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls
jenesuisplusvide.txt  vide2.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ cp jenesuisplusvide.txt ../TEST2
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ cp jenesuisplusvide.txt moinonplus.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls
jenesuisplusvide.txt  moinonplus.txt  vide2.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls > liste.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ less liste.txt 

jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
liste.txt (END)

chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls >> liste.txt 
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ less liste.txt 
jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
liste.txt (END)

chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ lsd >> liste.txt 2> erreur.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ less erreur.txt 

No command 'lsd' found, but there are 17 similar ones
lsd: command not found
erreur.txt (END)

chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls > ../TEST2/liste.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls >> ../TEST2/liste.txt
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ less ../TEST2/liste.txt 

erreur.txt
jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
erreur.txt
jenesuisplusvide.txt
liste.txt
moinonplus.txt
vide2.txt
../TEST2/liste.txt (END)

chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ rm vide2.txt 
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ rmdir ../TEST3


APPLICATION2(page 10)


Compter le nombre de fichier dans votre répertoire de travail


yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ ls | wc -l
3



chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls | wc -l
4

Compter le nombre de fichier dans  le répertoire TEST2


yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004/TEST2$ ls | wc -l
3



chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1/TEST1$ ls ../TEST2 | wc -l
3


APPLICATION3(page 11)


yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ ls;who;pwd
Notes1004.odt  TEST1  TEST2
yizhou   tty7         2017-10-08 13:42 (:0)
yizhou   pts/18       2017-10-08 12:14 (:0)
/home/yizhou/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ (date;who)>qui
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ ls
Notes1004.odt  qui  TEST1  TEST2
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ cat qui
dimanche 8 octobre 2017, 15:16:46 (UTC+0200)
yizhou   tty7         2017-10-08 13:42 (:0)
yizhou   pts/18       2017-10-08 12:14 (:0)
yizhou@yizhou-ThinkPad-T440p:~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004$ echo je suis sous $(pwd)
je suis sous /home/yizhou/Documents/20172018-S1/Projet_Encadre/COURS/Seance1004



chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ ls; who; pwd
TEST1  TEST2
chunyang tty7         2017-10-08 09:28 (:0)
/home/chunyang/Documents/ProjetEncadre20172018/cours/TP1
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ 
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ (date ; who) > /tmp/qui
chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ less /tmp/qui 
dimanche 8 octobre 2017, 15:35:24 (UTC+0200)
chunyang tty7         2017-10-08 09:28 (:0)
/tmp/qui (END)

chunyang@chunyang-ThinkPad:~/Documents/ProjetEncadre20172018/cours/TP1$ echo Je suis sous $(pwd)
Je suis sous /home/chunyang/Documents/ProjetEncadre20172018/cours/TP1


Phase 2 : rappel HTML
Création d’une page HTML contenant un tableau de deux lignes

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XU Yizhou</title>
</head>
<body>
<h2> Projet Encadre </h2>
<table border="1">
<tr><td>XU Yizhou</td></tr>
<tr>
<td>Intelligence Artificielle</td>
</tr>
</table>
</body>
</html>





<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JIANG Chunyang</title>
</head>
<body>
    <p>Une page HTML de test avec un beau tableau :</p>
<table border="1">
    <tr>
        <td>JIANG Chunyang</td>
    </tr>
    <tr>
        <td>Intelligence Artificielle</td>
    </tr>
</table>
</body>
</html>



Phase 3 : bash

Création de l’environement de travail






Création d’un fichier txt avec un script bash

CreationTexte_test.sh

#!/bin/sh
cd ../DUMP-TEXT/;
echo XU Yizhou > Sujet.txt;
echo Intelligence Artificielle >> Sujet.txt;


CreationTXT_test.sh

#!bin/bash
#cd Documents/ProjetEncadre20172018/PROJET_MOT_SUR_LE_WEB/PROGRAMMES/
cd ../DUMP-TEXT;
echo JIANG Chunyang > ./Sujet.txt;
echo Intelligence Artificielle >> ./Sujet.txt;

Création d’une page HTML avec un script bash

CreationTableau_test.sh

#!/bin/sh
cd ../TABLEAUX;
echo  '<!DOCTYPE html>' > Sujet.html;
echo  '<html>' >> Sujet.html;
echo  '<head>' >> Sujet.html;
echo  '<meta charset="UTF-8">' >> Sujet.html;
echo  '<title>XU Yizhou</title>' >> Sujet.html;
echo  '</head>' >> Sujet.html;
echo  '<body>' >> Sujet.html;
echo  '<h2> Projet Encadre </h2>' >> Sujet.html;
echo  '<table border="1">' >> Sujet.html;
echo  '<tr><td>XU Yizhou</td></tr>' >> Sujet.html;
echo  '<tr><td>Intelligence Artificielle</td></tr>' >> Sujet.html;
echo  '</table>' >> Sujet.html;
echo  '</body>' >> Sujet.html;
echo  '</html>' >> Sujet.html;


CreationTableau_html_test.sh

#!bin/bash
#cd Documents/ProjetEncadre20172018/PROJET_MOT_SUR_LE_WEB/PROGRAMMES/
cd ../TABLEAUX;
echo '<!DOCTYPE html>' > ./Sujet.html;
echo '<html>' >> ./Sujet.html;
echo '<head>' >> ./Sujet.html;
echo '<meta charset="utf-8">' >> ./Sujet.html;
echo '<title>JIANG Chunyang</title>' >> ./Sujet.html;
echo '</head>' >> ./Sujet.html;
echo '<body>' >> ./Sujet.html;
echo '<p>Une page HTML de test avec un beau tableau :</p>' >> ./Sujet.html;
echo '<table border="1">' >> ./Sujet.html;
echo '<tr>' >> ./Sujet.html;
echo '<td>JIANG Chunyang</td>' >> ./Sujet.html;
echo '</tr>' >> ./Sujet.html;
echo '<tr>' >> ./Sujet.html;
echo '<td>Intelligence Artificielle</td>' >> ./Sujet.html;
echo '</tr>' >> ./Sujet.html;
echo '</table>' >> ./Sujet.html;
echo '</body>' >> ./Sujet.html;
echo '</html>' >> ./Sujet.html;


Références


Total comment

Auteurs

AI_PLURITAL