Chapitre 3 : UNIX

3.1	Caractéristiques

Système d'exploitation multitâches et multiutilisateurs.
	- L'utilisateur principal (root) peut faire toutes les opérations.
	- Le reste des utilisateurs ont un certain nombre de droits que le root peut définir.
	- Tous les périphériques sont considérés comme des fichiers et sont donc tous traités pareils
	- Gère les événements asynchrones
	- Il comporte un langage de commandes (shell), ce sont les commandes qui permettent des interactions standards avec les fichiers. C'est une sorte de programme auxiliaire qui n'appartient ni au noyau, ni au système.
	- Le système a été écrit en langage C (créé pour créer UNIX) qui a été porté sur la majorité des plateformes.

Inconvénients : 
- Ce n'est pas un système à temps réel. ex : quand on fait de la capture numérique, le système doit assimiler les images et traiter pendant qu'il en recoit de nouvelles (impossible avec UNIX)
- Problème pour reconnaitre les périphériques.

LINUX : version gratuite de UNIX

Lors du démarrage, il y a longtemps le $_ avec le curseur qui clignote est l'invite (vo : prompt) remplacé par l'interface graphique qui comporte un terminal virtuel.

3.2 Le système de fichiers (Filesystem)

3.2.1 Types de fichiers

3 types de fichiers :
	- Les répertoires : contiennent d'autres fichiers
	- Les fichiers "spéciaux" : périphériques, ...
	- Les fichiers normaux

Pour chaque fichier, il existe un i-node correspondant :
i-node : contient tous les attributs d'un fichier :
			- Adresse mémoire où sont enregistrés les fichiers
			- Taille
			- Date de création
			- Date de modification

3.2.2 Les noms de fichiers

Longueur : Nom de 255 caractères maximum
				- Lettres : a à z et A à Z
				- Chiffres 0 à 9
				- $ @ # ( ) ! ^ - ' & { } % _

3.2.3 Protection des fichiers

Pour chaque fichier, l'os fait la différence entre trois groupes de personnes :
	- Le propriétaire du fichier (U : user)
	- Le groupe propriétaire (G : group)
	- Les autres (O : other)
Droits des fichiers :
	- Lecture (read : R)
	- Ecriture (write : W)
	- Exécution (exec : X)
Chaque fichier contient trois RWX :
    U		   G		O
(RWX)(RWX)(RWX)

Si les droits sont accordés, la lettre apparait, sinon les lettres sont remplacées par des tirets :
RWX------

La commande chmod du terminal permet de modifier les droits :
chmod <qui> <quels droits> <nom du fichier>

- autoriser la lecture du fichier au groupe et aux autres :
chmod go +r
- interdire la lecture aux autres:
chmod o -r

R	W	X
4	2	1

chmod 754
U = 7 (tous les droits)
G = 5 (lecture et exécution)
O = 4 (lecture)

Pour un répertoire :
- La lecture permet de voir le contenu
- L'écriture permet de modifier le contenu du répertoire
- L'exécution permet de ...

3.2.4 Les abbréviations et caractères spéciaux

* : représente n'importe quelle chaîne de caractères
? : représente n'importe quel caractère
[] : un caractère parmi ceux qui sont entre les crochets
	[a-z] = [a,b,c,d,e...,z]

3.2.5 Manipulation des fichiers

Copie : 		cp <fichier source> <ficheir_dest>
Effacer : 	rm <fichier>
Déplacer : 	mv <source> <cible>
Contenu : 	cat <fichier> (affiche le contenu du fichier)
Lier :		ln (permet d'attache un nom symbolique à un fichier qui existe déjà)

3.3 Les Répertoires

3.3.1 Structure arborescente

Il y a toujours 3 répertoire spéciaux :
- La racine : /
- Le répertoire courant (de travail) : .
- Le répertoire parent : ..
changement de répertoire : cd

Description de la racine :
	-> bin (commandes)
	-> usr -> bin
	-> dev
	-> tmp
	-> Home -> répertoires des utilisateurs

pwd : chemin absolu du répertoire courant
ls : liste le contenu du répertoire courant (ls --color)
man : manuel		man <nomcommande>
	   aide sur la commande en cours
mkdir : créer un répertoire (mkdir <chemin du répertoire à créer>)
rmdir : ....
rm -rf <...>: supprime les répertoires et les fichiers du répertoire sans demander confirmation

3.4 Gestion des processus

Processus système : nfs (network file system)
Processus utilisateur

Attributs d'un processus
	- numéro ID
	- propriétaire
	- terminal d'attachement
	+...

3.4.1 La commande PS
liste des processus : $ps l
FLAG 	UID 	PID 	PPID 	SIZE 	STA 	TTY 	TIME 	COMMAND
	0	512								  S
	0	513								  S
	0

PID : 	Processus id
PPID : 	Processus Pair ID
SIZE : 	Taille
STA : 	Status
TTY : 	Numéro du terminal qui a lancé le programme
TIME : Temps en minutes et secondes depuis lequel le processus est lancé
COMMAND : nom du programme qui est lancé généralement

3.4.2 Interruption de processus

<CTRL>+C = Signal de terminaison
execption : Le terminal
<CTRL>+D = terminaison d'une commande

Comande : kill
syntaxe : kill -<NOM> <PID>
				|		|
				|		Numéro du processus cible
				Signal

PRIORITY : 0 haute .... 20 basse

3.4.3 La redirection

$ls

classer <-	STDIN
			STDOUT
			|
			écran +TTY

redirection: <	>
			|	|
			|	Sortie
			Entrée

Sortie :
$ls >a
Si a existe, il est effacé et remplacé

Entrée :
$cat <a
Affiche le contenu de a

$cat <a >b
copie a dans b

>> double redirection
$ls >a : ecrase a et met les résultats
$ls >>a	: au lieu d'effacer a, il met les résultats à la suite

$cat <programme >/dev/lp
imprime le contenu du programme
/dev/lp = fichier imprimante

3.4.4 Enchainement de processus

a;b;c;
lance a puis b puis c en attendant qu'il se termine avant de lancer le second

3.4.5 Lancement en détaché

& : symbole détaché

Utilisateur : $ <commande> <paramètres> &
Lance le processus et vous permet de continuer à utiliser la machine

3.5 Le langage shell
$<commande> <paramètres>
2 types de paramètres :
	- Identifiés : les paramètre sont identifiés par un identificateur du type -x
	- Ordonnés : les paramètres sont reconnus selon l'ordre dans lequel il sont entrés

3.5.1 La commande login et l'environnement

La commande login
fichier.login
	Permet de des paramètres au lancement  (jouer un son...)
	Variables d'environnemts :
		PATH /bin:/usr/bin
			permet de recherche dans les répertoires spécifiés par PATH
TERM : Type de terminal
MAIL : /usr/spool/mail/
HOME : /home/deug1/votrenom
PS1 : Invite
PS2 : caractère de nouvelle ligne
IFS : contient les caractères blancs, càd considérés comme spérateurs :
		- espace
		- tabulation
		- retour chariot (entrée)

$cp * $HOME copie tout vrs /home/deug1/votrenom/

modifier les variables
$<nomvar>=<valeur>
$x=bonjour
$echo $x
bonjour

path=.:$path

3.5.2 Inhibiteurs

Inhibiteur : \_
			|
			Déspécialiser
\$ caractère $
\*

bloc :

echo '***' -> bloc déspécialisé
***

3.5.3 Quelques commandes

*tr <option><ch1><ch2>
ch1 = chose à remplacer
ch2 = à remplacer par

tr [a,b,c,d...,z] [A,B,C,D,...,Z] <fichier

*sort <option> <fichier>
liste le contenu des fichiers trié par ordre alphabétique

*tail ±<nombre> <fichier>

*head <nombre> <fichier>

*find  <rep> <options>

*sh appelle un shell