Informatique (computer science): ensemble des sciences qui ont pour objet d'étude l'information et les
procédés de traîtement automatique de celle-ci.
Quelques exemples de champs d'étude couverts par cette définition :
Quelques systèmes:
Un programme est une suite d'instructions réalisant une certaine tâche sur un ordinateur.
Exemple de programmes :
Parfois, un programme est appelé app (diminutif
de application), de façon complètement ridicule,
à des fins de marketing.
Qu'est-ce qu'un système d'exploitation ?
Quelles sont les ressources d'une machine?
Haut niveau | Applications (programmes utilisateurs): navigateur Web, éditeur de texte, anti-virus, jeu, compilateur, … |
↓ | Système d'exploitation:
|
Bas niveau | Matériel: processeur, mémoire, périphériques, … |
1965 | MultICS: Multiplexed Information and Computing Service (Bell & MIT) |
1969 | Unix: 1ère version en assembleur (AT&T) |
1972-73 | Unix réécrit en C |
1976 | Invention de TCP/IP |
1977 | Berkeley Software Distribution (BSD) |
1985 | Unix System V |
1988 | Minix |
1992 | Linux |
Linux sera le système principalement utilisé en TP d'informatique, du L1 au M2
Applications | |
Interface utilisateur | Services |
Noyau (kernel) | |
Micro-code | |
Matériel |
Applications | |
Bibliothèques (libc, DirectX, OpenGL, …) |
Appels systèmes |
Noyau
pilotes de périphériques
ordonnanceur (gestion du temps CPU)
gestionnaire de mémoire système de fichier |
Matériel |
Exemple de session shell:
$ ls
Documents Downloads Public Person
$ cd Documents
$ ls
compte_rendu.txt
$ mv compte_rendu.txt cr.txt
$ ls
cr.txt
Un fichier est une collection d'informations numériques réunies sous un même nom et enregistrée sur un support de stockage
Ne pas confondre:
Nom | |
Propriétaire | utilisateur qui possède ce fichier |
Groupe | groupe d'utilisateurs qui possède ce fichier |
Emplacement | localisation du fichier sur le support physique |
Taille | en octet (peut être la taille réelle ou la taille occupée sur le support) |
Permissions | « qui a quel droit » sur le fichier (lecture, écriture, exécution, …) |
Type | |
Dates | dernier accès, dernière modification, création, … |
Usuellement, les fichiers sont regroupés en répertoires. Les répertoires sont imbriqués les uns dans les autres de manière a former une arborescence.
Sous Unix il y a un répertoire racine, « / »
(slash) qui contient toute l'arborescence du système.
Chaque utilisateur possède aussi un répertoire personnel
Un chemin est une liste de répertoire à traverser pour
atteindre un fichier ou répertoire donné.
Sous Unix, le séparateur de chemin est le « / »
Les chemins absolus commencent par un / et
dénotent des fichiers à partir de la racine. Exemple:
/home/kim/Documents/IntroInfo/cours01.pdf
Les chemins relatifs dénotent des fichiers à partir du
répertoire courant. Exemple:
Documents/IntroInfo/cours01.pdf
si on se trouve dans le répertoire /home/kim
Les noms spéciaux:
Le shell affiche un invite de commande
(prompt). Exemple:
kim@machine $
On peut alors saisir une commande:
kim@machine $ ls *.txt
Le shell affiche la sortie de la commande:
fichier1.txt fichier2.txt
Certains caractères doivent être précédés d'un « \ » (échappés):
kim@machine $ ls mon\ fichier\#1.txt
Une ligne de commande a la forme :
prog item1 item2 item3 item4 …
Certains caractères sont interprétés de manière spéciale par le shell. Ces caractères sont « expansés » selon des règles. Si la forme expansée correspond a un ou plusieurs fichiers existants, alors leurs noms sont placés sur la ligne de commande. Sinon la chaîne de caractère de départ garde sa valeur textuelle.
Règles d'expansion:
* n'importe quelle chaîne
? n'importe quel caractère
[ab12…] un caractère dans la liste
[^ab12…] un caractère absent de liste
[a-z] un caractère dans l'intervalle
[^a-z] un caractère absent de l'intervalle
?(m1|…|mn) | @(m1|…|mn) | *(m1|…|mn) | +(m1|…|mn) |
On suppose que le répertoire courant contient les fichiers :
ficher1.txt fichier2.txt PERSO.txt une_image.jpeg
ficher1.txt fichier2.txt PERSO.txt
(n'importe quel nom qui termine par .txt)ficher1.txt fichier2.txt
(n'importe quel nom de fichier qui contient un chifffre)ficher1.txt fichier2.txt une_image.jpeg
(n'importe quel nom de fichier qui commence par une minuscule)On suppose que le répertoire courant contient les fichiers :
ficher1.txt fichier2.txt PERSO.txt une_image.jpeg
ls: cannot access '*([a-z])': No such file or directory
(tous les noms contenant uniquement des minuscules. Il n'y
en a pas, donc le shell pass literalement le nom de
fichier *([a-z]) en argument à la
commande ls qui affiche un message
d'erreur.)ficher1.txt fichier2.txt une_image.jpeg
(tous les noms contenant un point et tel qu'avant le point
il y a une suite de caractères non vide dont aucun n'est une
majuscule et après le point il y a une suite non vide de minuscules)
Sous Unix un utilisateur est identifié par son login (ou nom
d'utilisateur). Chaque utilisateur est dans un groupe
principal.
Au SIF (Service Informatique des Formations, bât. 336) :
gdehom7
guillaume-emmanuel.de-homem-christo
Chaque fichier appartient à un utilisateur et à un groupe.
Chaque fichier possède 3 permissions pour son propriétaire, son groupe
et tous les autres. Les permissions sont lecture, écriture, exécution
(plus d'autres non abordées dans ce cours).
Permission | fichier | répertoire |
---|---|---|
lecture (r) | lire le contenu du fichier | lister le contenu du répertoire |
écriture (w) | écrire dans le fichier | supprimer/renommer/créer des fichiers dans le répertoire |
exécution (x) | exécuter le fichier
(si c'est un programme) |
rentrer dans le répertoire |
$ ls -l
drwxr-x--- 9 kim prof 4096 Sep 7 21:31 Documents
chmod permissions chemin1 … cheminn
modifie les permissions des fichiers 1 à n. La chaîne
permissions est soit une suite de modifications de
permissions symbolique soit l'ensemble des permissions données
de manière numérique:
chmod 755 fichier.txt
chmod u-w,a+x,g=w fichier.txt
On groupe les bits de permissions par trois puis on convertit en décimal:
Utilisateur | Groupe | Autres | ||||||
---|---|---|---|---|---|---|---|---|
r | w | x | r | w | x | r | w | x |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
6 | 4 | 0 |
Dans cet exemple 1102 (lu en base 2) fait 6 en base
10, 1002 fait 4 et 0002 fait 0.
Rappel : 1102 = 1×22 + 1×21 + 0×20 = 6
Le fichier est lisible et modifiable mais pas exécutable par son
propriétaire, lisible pour le groupe. Les autres ne peuvent ni le lire
ni le modifier.
cible modifieur permission
Exemple:
chmod u+rw,u-x,g+r,g-wx,o-rwx fichier.txt
Pour des raisons d'organisation, on veut pouvoir « voir » le même fichier ou répertoire sous deux noms différents (ou à deux endroits différents). Par exemple:
$ ls -l Documents/Cours
total 8
drwxr-xr-x 3 kim prof 4096 Sep 9 11:30 Licence
drwxr-xr-x 3 kim prof 4096 Sep 9 11:30 Master
$ cd Documents/Cours/Master; ls
Compilation LangagesDynamiques
$ cd LangagesDynamiques; ls
cours01 cours02 cours03 cours04 cours05 cours06 Prereq
$ ls -l Prereq
lrwxrwxrwx 1 kim prof 28 Sep 9 11:30 Prereq -> ../../Licence/IntroInfo/
La commande ln permet de créer des liens symboliques. Un lien est un petit fichier qui contient un chemin vers un fichier de destination.
Exemple d'utilisation
$ ln -s ../foo/bar/baz/toto.txt rep/titi.txt
crée un lien vers le fichier toto.txt sous le nom titi.txt (chacun placé dans des sous/sur répertoires)
Cela permet de créer l'illusion que la cible a été copiée à
l'identique, sans les inconvénients
Sous Windows : les liens s'appellent des « raccourcis »
La commande rm fichier efface un fichier définitivement
La commande rm -d rep efface un répertoire s'il est vide
La commande rm -r rep efface un répertoire récursivement
mais demande confirmation avant d'effacer des éléments
La commande rm -rf rep efface un répertoire
récursivement et sans confirmation
Toute suppression est définitive
Gag classique :
$ mkdir \~
...
$ ls
Documents Photos Musique ~
$ rm -rf ~
☠ ☠ ☠ ☠ ☠ ☠
La commande man permet d'obtenir de l'aide sur une commande. Lors qu'une page d'aide est affichée, on peut la faire défiler avec les touches du clavier, la quitter avec « q » et rechercher un mot avec la touche « / »
LS(1L) Manuel de l'utilisateur Linux LS(1L)
NOM
ls, dir, vdir - Afficher le contenu d'un répertoire.
SYNOPSIS
ls [options] [fichier...]
Options POSIX : [-1acdilqrtuCFR]
Options GNU (forme courte) : [-1abcdfgiklmnopqrstuxABCD
FGLNQRSUX] [-w cols] [-T cols] [-I motif] [--full-time]
[--format={long,verbose,commas,across,vertical,single-col
umn}] [--sort={none,time,size,extension}]
[--time={atime,access,use,ctime,status}]
[--color[={none,auto,always}]] [--help] [--version] [--]
DESCRIPTION
La commande ls affiche tout d'abord l'ensemble de ses
arguments fichiers autres que des répertoires. Puis ls
affiche l'ensemble des fichiers contenus dans chaque
répertoire indiqué. dir et vdir sont des versions de ls
affichant par défaut leurs résultats avec d'autres for
mats.
La commande find rep critères permet de trouver tous les fichiers se trouvant dans le répertoire rep (ou un sous répertoire) et répondant à certains critères. Exemples de critères :
Comment trouver toutes les options de la commande find ? man find
Trouver tous les fichiers (dans un sous-répertoire) du répertoire courant dont le nom se finit par .jpg et dont la taille est supérieure à 1 Mo
find . -name '*.jpg' -a -size +1M
Trouver tous les fichiers (dans un sous-répertoire) du répertoire courant dont le nom se finit par .mpg (sans tenir compte de la casse) et dont la taille est supérieure à 10 Mo, et rajouter l'extension .bak à ces fichiers
find . -iname '*.mpg' -a -size +10M -exec mv {} {}.bak \;
On verra comment composer ces commandes pour exécuter des opérations complexes