Cours - Enseignement de l`informatique à PHELMA

Download Report

Transcript Cours - Enseignement de l`informatique à PHELMA

Projet informatique 2A
Séances de soutien
Ces transparents s’inspirent largement des cours 1A PET (M. Desvignes) et PMP (R Bressoux, E Moisan, N Castagne)
Ainsi que des cours de Guillaume Allègre
(silecs.info)
Merci à eux
1
Planning prévisionnel
Séance I.
L’environnement LINUX
Premier programme de l'année scolaire
Compilation et exécution
Types de base
Rappel sur les E/S, Structures de contrôle, fonctions
Séance II.
Compilation séparée et Makefile
Types structurés, tableaux et chaînes de caractères
Entrées sorties fichier
Séance III
Allocation dynamique
Types abstraits ; exemple des listes
Récursivité
Séance IV
Débogueur (DDD, Valgrind)
Arbres et graphes
2
L’environnement informatique à Phelma
Matériel et environnement
Le minimum en Unix et GNU/Linux
3
Matériel et environnement
4
Matériel et environnement
Phelma Polygone :
6 salles de TDs informatisées (140 PCs)
2 salles libre-service (70 PCs, 2 imprimantes)
Phelma Minatec :
4 salles de TDs informatisées (100 PCs)
2 salles libre-service (52 PCs, 3 imprimantes)
Phelma campus :
2 salles de TDs informatisées (50 PCs)
2 salles libre-service (40 PCs, 2 imprimantes)
Quotas espace disque : 150 Mo pour le stockage des emails.
200 Mo dans votre répertoire personnel.
Quotas d’impression : 50 pages recto/verso par mois
cumulables.
Non limité en salle de TDs.
5
Matériel et environnement
Première connection sous GNU/Linux
GNU/Linux = GNU is Not UniX
un système d'exploitation libre, multi-tâche, multi-plateformes, multi-utilisateurs.
Distributions :
http://www.debian.org
http://www.fr.redhat.com
http://www.centos.org
Interfaces graphiques conviviales :
CentOS 6
GNOME
KDE
Afterstep …
6
Matériel et environnement
Première connection sous GNU/Linux
 Compte personnel
Identifiant (username) : ______
Mot de passe (password) : ______
À changer
immédiatement
!
7
Matériel et environnement
Première connection sous GNU/Linux
 Le Bureau
8
Matériel et environnement
Première connection sous GNU/Linux
 Quelques applications utiles
Outils généraux :
• OpenOffice : Outil bureautique complet, gratuit et compatible avec Microsoft Office
• Firefox : navigateur Web gratuit
• Evince : « document viewer » (fichiers pdf, etc.)
• Gimp : éditeur d’images
• Outils essentiels pour le développement
• Éditeurs de code, en particulier Gedit
• le Terminal : accès à tout l’ordinateur en « ligne de commande »
Toutes les applications peuvent être lancées soient depuis le bureau (menu), soit depuis un
Terminal (suite du cours)
9
Matériel et environnement
Liens Internet utiles
 avec un navigateur internet (par exemple Firefox)
http://login.minatec.grenoble-inp.fr
À faire immédiatement !
!
- Pour changer son mot de passe (non modifiable directement depuis les machines).
http://webmail.minatec.grenoble-inp.fr
- Site mails pour consulter sa messagerie hors de Phelma.
http://phelma.grenoble-inp.fr
- Site web de l’école.
http://intranet.phelma.fr
- Intranet de l’école accessible avec votre compte personnel et mot de passe.
http://prism.minatec.inpg.fr
- Site d’informations et de support du service informatique (Webmail, Wifi…).
http://tdinfo.phelma.grenoble-inp.fr/2Aproj/
- Site du Projet Informatique 2A SEI / SICOM
http://tdinfo.phelma.grenoble-inp.fr/
- Cours C 1ere année PET : bonne référence !
10
Matériel et environnement
Messagerie et Webmail
Adresse mail : [email protected]
- Consultation locale sur Phelma en utilisant le logiciel Mozilla.
- Consultation avec un navigateur internet (par exemple Firefox) :
Webmail : https://webmail.minatec.grenoble-inp.fr
!
[email protected]
Adresse mail à utiliser en cas de problème informatique
message avec une description précise de la situation.

envoyer un
11
Le minimum en Unix / Linux
Répertoires et fichiers
L’espace de stockage du disque dur est organisé sous la forme de Répertoires et de
Fichiers.
Répertoires = dossier contenant des fichiers et d’autres répertoires
(directory en anglais)
Fichiers = fichier texte, image, exécutable (applications) ....
Les répertoires et fichiers sont organisés sous la forme d’une arborescence
à partir du répertoire racine / (cf. diapo suivante).
12
Différences avec Windows
I Pas
de notion de lecteur C: D: etc.
I Tout est dans une même arborescence, de racine /
I Les répertoires sont séparés par des / et non des \
I Existence de liens symboliques
ln -s fichier lien
Sous windows, les liens sont de simples fichiers .link
I Des permissions explicites
13
Le minimum en Unix / Linux
Répertoires et fichiers
/ = racine
/bin
...
phelma
...
truc.txt
info1
info2
...
...
toto
titi
/tmp
ens
phelma2014
phelma2013
/stk
...
/users
/lib
...
/users/phelma/phelma2014/toto/info1/
/users/phelma/phelma2014/toto/info2/
/users/phelma/phelma2014/toto/truc.txt
14
Le minimum en Unix / Linux
Répertoires et fichiers
 Dénomination des fichiers :
nomFichier.ext
nomFichier
Utiliser les lettres de l’alphabet, les
chiffres, le tiret - et le souligné _
!
majuscules et minuscules nonéquivalentes sous Unix.
Ne pas utiliser d’espace, d’accent, de signes
de ponctuation, d’accolades ou de signes tels
que @, $, %, &, etc …
Utilisez des noms significatifs.
Extension ext
Pensez à mettre une extension
significative à vos fichiers :
.txt = fichier de texte
.c = fichier source en langage C
.h = fichier en tête en langage C
.exe (ou rien) = fichier exécutable
.doc = fichier Word
.odg = fichier OpenOffice
.tar .tar.gz .tgz .zip : archives
15
Le minimum en Unix / Linux
Le Terminal
Terminal ?
Historiquement :Ensemble Outils servant à communiquer
avec l’ordinateur (clavier/écran/imprimante)
Sous Unix : désigne souvent l'émulateur de terminal textuel
– (term, xterm, tty, ...)
Interpréteur de commandes
les terminaux lancent un interpréteur de commandes (Command Line
Interpreteur ou Shell)
– Acquière (interprète) les commandes de l'utilisateur en
texte
– Exécute les commandes (lien avec l'OS)
– Retourne le résultat (en texte)
Commandes entrées
par l'utilisateur
Exemple :
cp fichier1.txt fichier2.txt
Interpréteur de
Commandes
Vérification de syntaxe puis
demande d’exécution de la copie
Système
d'exploitation
Copie effectuée si possible et retour
d'erreurs ou succès au terminal
16
Le minimum en Unix / Linux
Le Terminal
 Fonctions du terminal
Tout faire avec le système d’exploitation à l’aide de commandes textuelles
exprimées dans un langage (le langage « Shell »)
Naviguer dans les fichiers, créer un fichier, lancer un programme, un logiciel, …
Outil essentiel de tout utilisateur décent de Linux (et notamment tout programmeur)
 Accès au terminal :
- menu déroulant :
Applications >
Outils de système >
Terminal
- bouton droit de la souris :
Ouvrir un terminal
 Exemple : en tapant la commande Unix pwd (cf. ci après), on obtient le chemin du
répertoire courant : /users/phelma/phelma2014/toto
17
Ligne de commande vs interface graphique
Inconvénients de la ligne de commande
apprentissage plus long
efficacité moindre (utilisateur débutant)
mémorisation nécessaire (partiellement)
domaine d'application limité (mais pas tant que ça...)
Avantages de la ligne de commande
automatisation aisée
efficacité (rapidité) supérieure (utilisateur aguerri)
ressources négligeables (CPU, réseau...)
expressivité plus forte (options)
modularité et extensibilité (une tâche, un outil)
compréhension et contrôle des actions
Seule méthode d'administration des stations sans serveur graphique (serveur
notamment)
G.
18
Découverte du shell
Le prompt (invite de commandes)
I utilisateur
courant
I nom de machine
I répertoire courant
I $ ou # : terminateur
I ... configurable à l'extrême
I un curseur !
G
19
Découverte du shell - quelques commandes
id Qui suis-je ?
pwd Où suis-je ?
uname -a À qui ai-je l'honneur ?
lsb_release -a Mais encore ?
ls Liste les fichiers
cd Changement du répertoire courant
man Page de manuel d'une commande
cat Affichage du contenu d'un fichier
20
Commandes : syntaxe générale
Syntaxe :
commande [options] [- -] [paramètres]
Exemples :
I ls --help
I ls -a
I ls --all
I ls -al
I ls -l .bashrc
I
Remarques : quelques exceptions
I find . -name '*.tex' -print
I dd if=/dev/hda1 of=hda.img bs=512
G.
21
Commandes internes et externes
Commandes d'identification
I which
: commandes externes (fichiers)
I type (-a) : commandes connues du shell
I whereis : binaire et page de man d'une commande
Les principaux types de commandes
I commande
externe (fichier exécutable) - hashed
I commande interne ou primitive shell (builtin)
I mot-clé du shell, ex. if, for
I Exo
: déterminer le type des commandes suivantes
cd, cp, ls, which, type, echo
22
Documentation - formats et logiciels
aide en ligne de commande
ls --help
I aide de bash : help (commandes internes)
I pages de manuel : man
I info
: la documentation GNU (voir aussi pinfo, tkinfo)
I et encore : des pages .html, des fichiers README, .chm...
voir /usr/share/doc/
I navigateurs d'aide (Gnome, KDE...) : interne, man, info...
23
Documentation - manpages
I man
ls, man man
I Neuf sections
1. commandes util. 4. périphériques 7. conventions
2. appels noyau (C) 5. fichiers conf. 8. commandes admin.
3. appels bibli. (C) 6. jeux 9. routines noyau
man (1) man, man 7 man
I Parties génériques : Nom, Synopsis, Description, Auteurs,
Pager less intégré à la commande man :
recherche : /motif, n (next), N (previous), . . .
quitter : q
G.
24
Gestion des fichiers et répertoires
Commandes courantes
I informatives
: ls, cat
I modificatrices : touch, cp, mv, rm
I répertoires (informatives) : pwd, cd, du, tree
I répertoires (modificatrices) : mkdir, rmdir
Spécificités Unix
I infos
détaillées : stat
I permissions : chmod, chown,chgrp
I liens : ln (-s), readlink
25
Récapitulatif : chemins relatifs et absolus
Chemins absolus : exemples
ls /home/toto/Linux
ls ~toto/Linux
ls ~/Linux
Chemins relatifs : exemples
ls Linux
ls ./Linux
ls ../AutreRepertoire
26
Chemin relatif et absolu
"chemin absolu
commence par « / » , se lit depuis la racine.
Exemple :
/users/phelma/phelma2012/toto/info1/
désigne le répertoire info1 de l’étudiant toto, arrivé en 2012
••/
chemin relatif, ne commence pas par « / »
se lit à partir du « répertoire courant » dans lequel on est.
Exemples : on suppose que le « répertoire courant » est /users/phelma/phelma2012
et que l’utilisateur est toto
titi
désigne le répertoire
/users/phelma/phelma2010/titi
~/truc.txt
désigne le fichier
/users/phelma/phelma2011/toto/info1/truc.txt
•/toto/truc.txt
<un point>
••/
<deux points> désigne le répertoire “du dessus”
désigne le répertoire courant
désigne le répertoire
••/phelma2010
/users/phelma/phelma2010
/users/phelma
/users/phelma/phelma2010
27
Le minimum en Unix / Linux
 Commandes de base – suite :
cd ..
: remonter d ’un cran dans l ’arborescence
cd ../..
: remonter de deux crans dans l ’arborescence
cd ./nomRep : descendre dans nomRep depuis le répertoire courant
cd /chemin : se positionner dans chemin depuis la racine (chemin absolu)
cd ~
: retourner directement dans son répertoire principal
 Impression de fichiers texte
lp –d nomImprimante nomFichier.ext
28
Session utilisateur
Comptes utilisateurs :
session : login/mot de passe (username/password)
homedir : répertoire personnel (~/)
Permissions d'accès aux ressources (fichiers, processus) :
utilisateur
groupe
autres
Un compte unique d'administrateur (super-utilisateur) : root
Des comptes services
pour les tâches système : mail, impressions, . . .
des droits restreints (par rapport à root)
sécurité accrue en cas de bug ou compromission
29
Permissions sur les entrées de répertoires
Trois cibles de permissions
u=user : utilisateur propriétaire
g=group : groupe propriétaire
o=other : tous les autres
(a=all : tout le monde)
Trois types de droits sur fichier et sur répertoire
r=read : lecture listage
w=write : écriture ajout/suppression fichier
x=exec : exécution traversée
X=exec : conditionnelle traversée
G.
30
Gestion des permissions
ls -l file.txt
- rw- r- - r- - 1 toto users
2736 Sep 16 16:10 file.txt
( r = read , w = write , x = exécuter )
propriétaire (u)
groupe (g)
autres (o)
tous (a)
pour modifier ces permissions : chmod [ugoa] [+-] [rwx]
chmod a+w file.txt
ls -l file.txt
-rw-rw-rw- 1 toto users
2736 Sep 16 16:14 file.txt
31
Exo Session utilisateur
1 - Créez un fichier sur le home du voisin dont le login est « sonlogin » :
touch ~sonlogin/bidon
2 - Créez un répertoire partage sur votre home et modifier les droits :
mkdir ~/partage
chmod a+rw ~/partage
3- Essayer maintenant de créer un fichier dans le répertoire partage de votre voisin
4- Connectez vous la machine de votre voisin
ssh machine
5- Essayez de créer dans le répertoire /tmp de la machine du voisin :
touch /tmp/fichier_bidon_monlogin.txt
32
Globbing (expansion des noms de fichiers)
But
Ne pas avoir à taper le nom de tous les fichiers en argument.
Exemple
ls *.rc
Caractères spéciaux
* N’importe quelle chaine de caractères
? Un caractère quelconque
[a-z] Un caractère parmi ceux listés
Protections contre l'interprétation par le shell
I ".
. . " Protège partiellement . . . de l'interprétation par le shell
I '. . .'
Aucune interprétation de . . .
I \*
Aucune interprétation du caractère suivant
33
1.Exo Globbing
2. Listez tous les fichiers commençant par « . » dans votre home
3. Dans votre répertoire courant, créez en une commande les fichiers
suivants:
annee1 Annee2 annee4 annee45 annee41 annee510 annee_saucisse
banane
4. Créez le répertoire Year dans votre répertoire courant.
5. En une commande déplacez les fichiers précédemment créés dans le
répertoire Year.
6. Dans le réperoire Year, listez tous les fichiers se terminant par 5
commençant par annee4
commençant par annee4 et de 7 lettres maximum
commençant par annee avec aucun chiffre numérique
contenant la chaîne ana
commençant par a ou A
1. Copiez les fichiers dont l'avant-dernier caractère est un 4 ou 1 dans le
répertoire /tmp en une seule commande.
2.More on http://en.flossmanuals.net/command-line/ch014_multiplefiles/
34
Recap Commandes de base du terminal
Toutes ces commandes sont à taper dans un terminal.
 Syntaxe des commandes Unix
commande –options arguments
 Commandes de base :
pwd
cd
ls
rm
mv
cp
mkdir
rmdir
donne le répertoire courant (« Print Working Directory »)
changer de répertoire courant (« Change Directory »)
listing des fichiers et répertoires du répertoire courant (« list »)
détruire un fichier (« remove »)
déplacer ou renommer un fichier (« move »)
copier un fichier (« copy »)
créer un répertoire (« Make Directory »)
détruire un répertoire (« Remove Directory »)
tar
zip
unzip
Créer / extraire une archive .tar ou .tar.gz ou .tgz
Créer une archive .zip
Extraire une archive .zip
35
I.2. Le minimum en Unix / Linux
I.2.2. Commande de base du terminal
 Astuces dans le Terminal
Complétion automatique
Utilisez la « complétion automatique » avec la touche tabulation
!
Le terminal ajoute tout seul le reste des commandes et des chemins !
Historique
Les anciennes commandes sont accessibles avec la flèche « haut »
Également avec la commande history
Copier / coller
Le copier se fait automatiquement via une sélection du texte (clic gauche)
Le coller se fait grâce au bouton du milieu de la souris
Aide en ligne
Des détails sur une commande ? Utilisez man <command> !
36
I.2. Le minimum en Unix / Linux
I.2.2. Commande de base du terminal
 Commandes de base – exemples :
ls -l
ls -l fich.ext
ls *.c
ls ~castagnn
more fich.ext
: liste détaillée des fichiers et répertoires du rep courant ;
: détails sur le fichier fich.ext ;
: donne la liste des fichiers .c ;
: liste des fichiers à la racine du compte de l’utilisateur castagnn
: donne la liste des fichiers .c ;
mkdir nomRep : créer un répertoire nomRep ;
rmdir nomRep : détruire le répertoire nomRep (si vide).
rm nomFich.ext : détruit nomFichier.ext définitivement.
mv chemin1/nom1.ext chemin1/nom2.ext : déplace et renomme un fichier ;
mv chemin1/*.c chemin2/.
: déplace tous les fichiers .c.
cp
: copie de fichiers
37
Redirections - canaux
Le shell définit 3 canaux
STDIN (0) entrée standard - clavier par défaut
STDOUT (1) sortie standard - écran (terminal) par défaut
STDERR (2) sortie d'erreur - écran (terminal) par défaut
Redirection
ls -1 > liste.txt
La sortie du programme ls est redirigée vers un fichier.
Pour ajouter au fichier (sans écraser l'ancien contenu) :
ls -1 >> liste.txt
2> redirection de la sortie d'erreur
&> redirection des deux sorties
< redirection d'entrée, ex. cat < liste.txt
G.
38
Pipes et filtres
ls -1 | wc sortie de ls canalisée vers l'entrée du filtre wc.
find /etc |& wc StdOut et StdErr fusionnées puis canalisées
Exemples
1. ls ~/ >> liste.txt
1. cat taper du texte puis Ctrl+D
2. cat liste.txt | wc -l
3. wc -l liste.txt
4. wc -l < liste.txt
5. cat < liste.txt | wc -l
6. wc -l liste.txt l2.txt l3.txt
7. cat liste.txt l2.txt l3.txt | wc -l
39
Exo Pipes et filtres
1.Copiez le fichier /etc/passwd dans votre home en ne conservant que les
quatre premières colonnes
Utilisez cut et cat pour cela
1.Calculez le nombre de login
1.Avec head et tail affichez les 5 premières puis 5 dernières lignes du
fichier. Conserver ces résultats dans un autre fichier.
1.Triez le fichier sur le nom de login puis sur l'UID
Utilisez sort
1.More on http://en.flossmanuals.net/command-line/ch016_piping/
40
Processus et tâches
Gestion des tâches (jobs)
commande & : lancer en arrière-plan
Ctrl-Z : met en pause
Ctrl-C : arrête
bg : redémarre en arrière-plan le processus en pause
fg : remet en avant-plan
Affichage des processus
top : affiche les ressources consommées par les processus
ps : Process Show
pstree : arbre des processus! init
41
Contrôle des processus et signaux
Rechercher un processus
ps : rapport sur les processus en cours
Arrêter un processus
kill [options] PID kill -TERM 1955
killall commande killall gimp
pkill [-signal]
Les principaux signaux
SIGTERM (15) : terminer normalement ( proprement )
SIGKILL (9) : terminaison forcée (non ignoré)
SIGSTOP (19) : arrêt temporaire (pause) (non ignoré)
SIGCONT (18) : reprise d'un processus arrêté
SIGINT (2) : terminaison interactive (Ctrl-C)
SIGTSTP (20) : arrêt temporaire interactif (Ctrl-Z)
42
Exo : Processus et tâches
1.Démarrez gedit et mettez le en tâche de fond
1.Avec la commande top, trouvez le processus gedit et terminez le
1.Démarrez gedit directement en tâche de fond avec « & ». remettez le en
foreground et stoppez le avec Ctrl+C
1.Lancez ls -R / dans un terminal. Dans un autre terminal trouver le processus
avec la commande PS et stoppez le, redemarrez le, puis terminez le.
43
Exemple d’utilisation. A vous de jouer !
$ pwd
.....................
$ man pwd
.....................
$ cd Desktop
.....................
$ pwd
.....................
$ mkdir info2A
.....................
$ cd ./info2A
.....................
$ mkdir soutien
.....................
$ ls
.....................
$ ls ~castagnn/soutien. . . . . . . . . . . . . . . . . . . .
$ cp ~castagnn/soutien/part1.tgz ./soutien
$ cd soutien
.....................
$ ls
.....................
$ tar –zxvf part1.tgz . . . . . . . . . . . . . . . . . . . . .
$ ls
.....................
$ cd part1
.....................
$ more README.txt . . . . . . . . . . . . . . . . . . . . .
$ cp README.txt tmp.txt . . . . . . . . . . . . . . . . .
$ mv tmp.c monfichierc.txt . . . . . . . . . . . . . . .
$ gedit monfichier.txt . . . . . . . . . . . . . . . . . . . . .
$ gedit monfichier.txt & . . . . . . . . . . . . . . . . . . .
$ rm monfichier.txt . . . . . . . . . . . . . . . . . . . . .
Affiche le répertoire courant (votre « home »)
Affiche l’aide de la commande pwd
Entre dans le répertoire Desktop
Affiche le répertoire courant
Crée le répertoire info2A. Il apparaît sur votre bureau !
Entre dans le répertoire info
Crée le répertoire ‘soutien’ dans info
Liste le contenu du répertoire courant
Liste le rép « soutien » de l’utilisateur castagnn
Copie un fichier dans le répertoire seance01
Entre dans votre repertoire « soutien »
Liste le contenu du répertoire courant
Extrait les fichiers de l’archive part1.tgz
Un répertoire part1 est apparu !
Entre dans le répertoire part1
Affiche le contenu du ficher texte README.txt
Copie le fichier README.txt dans tmp.txt
Renomme le fichier tmp.txt dans monfichier.txt
Permet d’éditer le contenu de monfichier.txt
Liste le contenu du répertoire courant
Supprime le fichier monfichier.txt
44