Introduction au système UNIX commandes de base (shell) 

Cours introduction au système UNIX commandes de base (shell) , tutoriel & guide de travaux pratiques UNIX en pdf.

Les fichiers UNIX

Le système de fichier est géré par le noyau. Les fichiers UNIX correspondent soit à des fichiers de données sur disque dur, soit à des répertoires, soit encore à des fichiers spéciaux permettant la gestion de certaines ressources du système (par exemple, lorsqu’un périphérique d’entrées/sorties permet des opérations comme ouverture, écriture, lecture (terminal, imprimante), on y accède généralement par un fichier spécial (device)).
Répertoires
Les fichiers sont organisés en répertoires et sous-répertoires, formant une ar-borescence (figure 2.2).
Dans chaque répertoire, on trouve au moins deux fichiers, nommés. (point) et .. (point point). Le premier (.) permet de référencer le répertoire lui même, et le second (..) d’accéder au répertoire parent (du dessus).
A chaque instant, toute tâche possède un répertoire courant, ou répertoire de travail. La commande pwd affiche ce répertoire. La commande cd permet de changer le répertoire courant (voir plus loin page 26).
Chemins absolus et relatifs
Pour désigner un fichier quelconque, on peut utiliser soit un chemin absolu, soit un chemin relatif.
Un chemin absolu spécifie la suite des répertoires à traverser en partant de la racine, séparés par des caractères/ (et non \ comme sous DOS). Par exemple, le chemin /usr/bin/compress désigne le fichier compress, qui se trouve dans le répertoire bin, lui même dans le répertoireusr de la racine. Le premier caractère / indique qu’il s’agit d’un chemin absolu.
Il est souvent pratique d’utiliser un chemin relatif, à partir du répertoire cou-rant. Par exemple, si l’on travaille dans le répertoiredupond de la figure 2.2, on peut accéder au fichier durand en spécifiant le chemin
Tout chemin qui ne commence pas par un caractère / (prononcé slash) est interprété comme un chemin relatif au répertoire courant. On peut ainsi accéder aux fichiers du répertoire courant en donnant simplement leur nom.
Répertoire de connexion
A chaque utilisateur connu du système est associé un répertoire de connexion (home directory). L’utilisateur y place ses fichiers personnels, et peut y créer au-tant de sous-répertoires qu’il le désire. Dans l’exemple figure 2.2, le répertoire de connexion de M. Dupond est /users/dupond.
Après le login, l’interpréteur de commande a pour répertoire courant le réper-toire de connexion de l’utilisateur.
Le répertoire de connexion contient aussi certains fichiers de configuration (voir section 3.3) permettant à l’utilisateur de personnaliser son environnement de travail. Ces fichiers sont normalement invisibles (car leur nom commence par un point, voir la commande ls).
A tout moment, on peut revenir au répertoire de connexion grâce à la com-mande cd.
On peut aussi spécifier un chemin à partir du répertoire de connexion d’un utilisateur en utilisant le

Types de fichiers

Nous appelons fichier tout point dans l’arborescence des fichiers. Tous ne correspondent donc pas à des fichiers de données ordinaires. On distingue 4 types de fichiers :
– les fichiers ordinaires, qui contiennent des données. UNIX ne fait aucune différence entre les fichiers de texte et les fichiers binaires. Dans un fichier texte, les lignes consécutives sont séparées par un seul caractère\n’’.
– les répertoires, qui contiennent une liste de références à d’autres fichiers UNIX ;
– les fichiers spéciaux, associés par exemple à des pilotes de périphériques ;
– les tubes et sockets, utilisés pour la communication entre processus ;
– les liens symboliques (fichiers “pointant” sur un autre fichier).

Droits d’accès

A chaque fichier est associé un utilisateur propriétaire et un ensemble dedroits d’accès. Les droits d’accès définissent les possibilités de lecture, écriture et exé-cution du fichier pour les utilisateurs.
 Lecture, écriture et exécution d’un fichier
 Utilisateurs et droits
Les utilisateurs d’un fichier donné sont divisés en trois ensembles :
– le propriétaire du fichier ;
– les utilisateurs du même groupe de travail que le propriétaire ;
– les autres utilisateurs ayant accès au système.
Un utilisateur appartenant à l’un de ces ensembles à accès ou non au fichier en lecture (r), en écriture (w) ou en exécution (x). Ces droits (ou permissions) d’accès ne peuvent être changés que par le propriétaire du fichier, grâce à la commande chmod (voir page 26).
La commande ls -l permet d’afficher les droits d’accès à un fichier ; par exemple :
$ ls -l polyunix.tex
-rwxr—– 1 emmanuel users 67504 Mar 25 23:29 polyunix.tex indique que fichier polyunix.tex contient 67504 caractères et appartient à l’utilisateur emmanuel. La date et l’heure indiquées sont celles de la dernière modification du contenu du fichier.
Les caractères en début de ligne -(rwxr—–) indiquent le type et les droits d’accès sur ce fichier. Le premier caractère donne le type, ici – dénote un fichier ordinaire. Les neufs caractères restants sont divisés en trois groupes de trois, indi-quant respectivement les droits du propriétaire du fichier, les droits des utilisateurs du même groupe que le proprétaire, et enfin les droits des autres utilisateurs. Le caractère r correspond au droit le lecture (read), w au droit d’écriture (write) etx au droit d’exécution.
Le fichier polyunix.tex montré ci-dessus est donc accessible en lecture, écriture et exécution par son propriétaire, en lecture par les utilisateurs du même groupe et pas du tout aux autres.

Le super-utilisateur

Afin de permettre l’administration du système, un utilisateur spécial, nommé super utilisateur (ou root), est toujours considéré par le système comme propriétaire de tous les fichiers (et des processus).
La personne qui gère le système est normalement la seule à connaître son mot de passe. Lui seul peut ajouter de nouveaux utilisateurs au système.

Commandes de base (shell)

Un shell est un interpréteur de commande en mode texte. Il peut s’utiliser en mode interactif ou pour exécuter des programmes écrits dans le langage de programmation du shell (appelésshell scripts).
En mode interactif, le shell affiche une invite en début de ligne (prompt), par exemple un caractère $, pour indiquer à l’utilisateur qu’il attend l’entrée d’une commande. La commande est interprétée et exécutée après la frappe de la touche “Entrée”. Voici un exemple d’utilisation d’un shell ; les lignes débutants par $, sont entrées par l’utilisateur, les autres sont affichées en réponse :
$ pwd
/users/emmanuel/COURS/SYSTEME/POLYUNIX
$ ls
Makefile polyunix.dvi polyunix.tex
fig polyunix.idx polyunix.toc
hello.c polyunix.ind ps
$ ls fig
arbounix.fig tabdesc.fig tube.fig
$ ls -l *.c
-rw-r–r– 1 emmanuel users 84 Mar 25 1996 hello.c
Chaque ligne entrée par l’utilisateur est interprétée par le shell comme une commande, dont il lance l’exécution. Le premier mot de la ligne est le nom de la commande (par exemple pwd ou ls) ; il est éventuellement suivi d’un certain nombre d’arguments (par exemple fig ou -l).
 Les différents shells
Il existe plusieurs shells UNIX : C-Shell (csh ou tcsh), Bourne Shell (sh ou bash), Korn shell (ksh), …. L’interprétation des commandes simples est semblable pour tous ; par contre l’utilisation pour écrire des scripts diffère beaucoup (définition des variables, structures de contrôle, etc).
Les variantes tcsh et bash apportent un plus grand confort d’utilisation en mode interactif (historique, terminaison automatique des commandes, etc) ; tcsh est compatible avec csh, et bash avec sh.
Le point commun à tous les shells est l’emploi d’une syntaxe concise mais obscure et difficilement mémorisable, rendant leur apprentissage difficile (mais leur usage assez divertissant à la longue !). Il est difficile d’administrer finement un système UNIX sans posséder quelques bases sursh et csh, car de nombreux scripts de configuration sont écrits dans ces langages. La tendance actuelle est de généraliser l’emploi d’interfaces graphiques, qui restent toutefois moins souples et puissantes que les scripts. D’autre part, les scripts complexes sont de plus en plus souvent écrits dans des langages interprétés plus puisants comme Python ou Perl.
Faute de place, nous étudierons peu l’écriture de shell scripts dans ce cours. Dans les sections suivantes, nous décrivons brièvement les commandes du shell les plus utilisées. Les commandes sont groupées par thème. Pour retrouver rapidement une commande, utilisez l’index à la fin de ce document.
Pour plus de détails sur ces commandes ou sur leurs options, se reporter au manuel en ligne (commande man).
 Métacaractères du shell
Certains caractères, appelésmétacaractères, sont interprétés spécialement par le shell avant de lancer la commande entrée par l’utilisateur.
Par exemple, si l’on entre ls *.c, le shell remplace l’argument *.c par la liste des fichiers du répertoire courant dont le nom termine par .c.
Les métacaractères permettent donc de spécifier facilement des ensembles de fichiers, sans avoir à rentrer tous leurs noms. Voici les plus utilisés :
– * remplacé par n’importe quelle suite de caractères ;
– ? remplacé par un seul caractère quelconque ;
– [ ] remplacé par l’un des caractères mentionnés entre les crochets. On peut spécifier un intervalle avec – : [a-z] spécifie donc l’ensemble des lettres minuscules.

1 Présentation d’UNIX 
1.1 Introduction
1.2 Historique et versions d’UNIX
1.3 Architecture générale du système
1.4 Les utilisateurs, l’accès au système
2 Les fichiers UNIX 
2.1 Répertoires
2.2 Types de fichiers
2.3 Droits d’accès
2.4 Le super-utilisateur
3 Commandes de base (shell) 
3.1 Les différents shells
3.2 Métacaractères du shell
3.3 Initialisation d’un shell
3.4 Variables d’environnement
3.5 Commandes de manipulation des fichiers
3.6 Redirections des entrées/sorties
3.7 Contrôle de tâches
3.8 Commandes et scripts
4 Utilitaires UNIX 
4.1 L’éditeur vi
4.2 Commandes diverses
4.3 Filtres de texte
4.4 Manipulation des processus
4.5 Gestion des systèmes de fichiers
5 Programmation en C sous UNIX 
5.1 Le compilateur C
5.2 La commande make
5.3 Arguments sur la ligne de commande
5.4 Variables d’environnement
5.5 Allocation mémoire
5.6 Manipulation de fichiers
5.7 Lancement d’une commande
6 Les processus 
6.1 Définition
6.2 Création de processus
6.3 Manipulation de processus en langage C
7 Communications inter-processus 
7.1 Signaux asynchrones
7.2 Les tubes
7.3 Synchronisation : sémaphores
7.4 Autres techniques de communication
Lexique 
Index

………

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *