You are on page 1of 42

ISET NABEUL

Initiation à l’utilisation du 
système d’exploitation 
UNIX 
Réalisé par : 
 

Elies Jebri 
Technologue 
Janvier 2002

[Ce document traite des aspects relatifs à l’utilisation du système UNIX. Il s'agit d'une présentation des 
commandes de base pour un utilisateur. A la fin vous aborderez quand‐même l’écriture de scripts shell 
souvent traités comme étant une tâche d’administration système.] 

2

Initiation à l’utilisation du système d’exploitation Unix

Elies Jebri

Janvier 2002

ISET Nabeul

3

Initiation à l’utilisation du système d’exploitation Unix

Introduction

Qu'est ce qu'un
système d’exploitation?
Un système d’exploitation est un programme ou ensemble de programmes qui
permet à un utilisateur d’accéder aux potentialités matérielles d’une machine
(calculateur) sans pour autant être tenu de maîtriser les particularités
d’exploitation de chaque composant physique.
Un SE associé aux composants matériels de la machine constitue un ensemble
de ressources1 dont il organise et optimise l’utilisation. L’utilisateur peut
accéder aux ressources en se limitant à l’utilisant des fonctions (primitives ou
appels système) fournies par le SE sans avoir besoin de connaître leur
fonctionnement interne.
Un SE doit offrir à l’utilisateur une interface utilisateur (graphique ou non)
conviviale pour exploiter les ressources matérielles et logicielles et accéder aux
servies qu’il attend.
Les fonctions principales
En fonctionnement, un système d’exploitation assure les fonctions principales
suivantes :
 la gestion des dialogues utilisateur/machine
 la gestion des opérations d'entrées/sorties avec les périphériques
 la gestion des ressources de l'ordinateur: mémoire, disque, écran,
clavier, …..
 la gestion des fichiers pour permettre d’accéder aux données selon une
organisation logique (nom , chemin, …) sans avoir recours à leur
manipulation directe (adresse sur disque, organisation physique, …)
 la gestion de l'exécution des programmes: gestion des espaces mémoire,
cadencement et synchronisation de l'exécution, …..
Les caractéristiques d’un SE
Du point de vue utilisateur, un SE peut être caractérisé principalement par les
caractères suivants :
 Sa capacité à gérer simultanément plusieurs tâches : SE mono ou multitâches
 Sa capacité à gérer simultanément les requêtes et services de plusieurs
utilisateurs : SE mono ou multi-utilisateurs
 La facilité d’utilisation qu’il offre (la convivialité de l’interface
utilisateur, la structuration des données, la complexité des procédures,
…)
 La sécurité qu’il offre : au niveau de l’identification des utilisateurs
ainsi qu’au niveau de la gestion des accès aux données et aux
ressources.
 Le mode d’exploitation qu’il met en œuvre : traitement par lots, temps
partagé ou temps réel.
 Sa dépendance machine : SE dédié, SE portable ou SE ouvert.
Organisation d’un SE

1 Une ressource est un élément logiciel ou matériel fondamental (processeur, mémoire,

périphérique, flux d’informations, fichier, …)
Elies Jebri

Janvier 2002

ISET Nabeul

Initiation à l’utilisation du système d’exploitation Unix
4
Le SE fait partie des programmes de base (couche logiciel de base) nécessaires
au fonctionnement des logiciels d’application (couche applications). Il peut
être organisé en plusieurs couches :
 Le noyau : constitué par la couche la plus proche du matériel, il
constitue le cœur du système et comporte les mécanismes de base
 Les couches supérieures : qui incluent les fonctions de plus haut niveau
(gestion de la mémoire, gestion des fichiers, …)

Cas du SE Unix
UNIX est un SE multi-utilsateurs et multi-tâches qui a été développé en 1970
aux laboratoires BELL par Thompson et Ritchie.
Il est structuré en deux couches :
 le noyau : qui inclut la gestion des processus, des fichiers et de la
mémoire,
 la couche utilisateur : qui inclut les interpréteurs de commandes, les
éditeurs, les compilateurs, …..
Le noyau écrit en grande partie en langage C permet au SE UNIX d’être
portable sur une très large gamme de machines.
Doté de nombreux outils de communications, le SE UNIX se distingue par
plusieurs particularités :
 le système de fichier : l’accès à toutes les données est réalisé par le
biais d’une structure logique unique,
 la banalisation des E/S
 la standardisation de l’accès aux ressources : qui sont toutes
considérées comme des fichiers,
 les interpréteur de commandes (shell) : qui offre une grande flexibilité
dans la manipulation des commandes,
Le dialogue UNIX - utilisateur
Le dialogue entre l’utilisateur et le SE UNIX s’effectue à la base à travers un
interpréteur de commande (shell) qui utilise un terminal (clavier + écran)
comme support physique du dialogue. Ce terminal peut être de deux types :
 Un terminal connecté à travers une liaison réseau ou une liaison directe
(RS232 par exemple) à la machine supportant le SE
 Un pseudo-terminal : dans le cas où une autre machine, dotée de son
propre SE, serait utilisée pour ouvrir une session sur la machine Unix
(en utilisant l’émulateur de terminal telnet par exemple) ou dans le cas
où plusieurs dialogues avec le SE Unix seraient établis par un même
utilisateur à travers une interface graphique. L’écran physique n’est
alors plus totalement dédié au dialogue et seule une partie de cet écran
est réservée comme étant la zone d’affichage du pseudo-terminal. Le
pseudo-teminal partage avec les autres applications le clavier de la
machine sur laquelle il est créé.

Elies Jebri

Janvier 2002

ISET Nabeul

que la machine soit en marche. Elies Jebri Janvier 2002 ISET Nabeul . Entrez au clavier le nom de votre compte: HOST login: lambda Password: Entrez au clavier votre mot de passe (Password). NOTE Ne mettez jamais une machine en marche vous-même! Il peut y avoir de bonnes raisons pour qu'elle soit arrêtée. un login avec le nom Lambda échouera. les majuscules et les minuscules sont des caractères différents!! Si votre compte est au nom de lambda. laissant ainsi à tous la possibilité de regarder (ou de modifier!!) son travail. Démarrer une session de travail Vous devez voir au bas de l'écran un message semblable au suivant: HOST login: Si vous ne le voyez pas. 1 Un utilisateur imprudent a laissé la machine sans terminer sa session. Tapez-le sans erreur sinon la session de travail vous sera refusée.avoir un compte sur la machine (un nom et un mot de passe). pour des raisons de confidentialité évidentes. NOTE Sous UNIX. Si l'une des conditions n'est pas remplie. la machine n'est pas libre(1). 2.5 Initiation à l’utilisation du système d’exploitation Unix 1. Commencer et finir une session de travail Avant de commencer une session de travail il faut: 1. n'éteignez jamais une machine sans son autorisation. contactez l'administrateur du système. Remarquez que. De même. Contactez l'administrateur du système. le mot de passe que vous tapez ne s'écrit pas à l'écran.

vous l'avez fait grâce au mot de passe que vous a donné l'administrateur du système. contactez l'administrateur du système. HOST% passwd Changing password for lambda on HOST Old password: Entrez l'ancien mot de passe HOST% passwd Changing password for lambda on HOST Old password: New password: Entrez le nouveau mot de passe. Vous serez ainsi le seul à le connaître. affiché par l’interpréteur de commandes. Si tout s'est bien passé. -les deux frappes du nouveau mot de passe ont au moins 6 caractères et sont identiques. HOST% HOST% (ou HOST$) est un message d’invite.. Changer le mot de passe La première fois que vous avez réussi à démarrer une session. NOTE Les mots de passe doivent comporter au moins six caractères. le SE procède à une série d’actions d’initialisations et lance l’exécution d’un interpréteur de commandes (shell) qui prendra en charge les commandes que l’utilisateur souhaitera exécuter. Ainsi. En cas de plusieurs échecs. . c'est à dire que: -l'ancien mot de passe est correct. Il signifie que vous avez la main et que cet interpréteur attend vos commandes.Initiation à l’utilisation du système d’exploitation Unix 6 Si l’identification réussit.. si vous avez tapé nom et mot de passe sans erreur. l'écran affiche des messages à votre intention et la dernière ligne doit ressembler à: . En cas d'erreur: Si vous recevez un message du genre: Login incorrect login: Recommencez la procédure sans erreur de frappe. HOST% passwd Changing password for lambda on HOST Old password: New password: Retype new password: Retapez le nouveau mot de passe pour confirmation. On change le mot de passe avec la commande passwd1. 1 Dans le cas de l’utilisation d’un système d’information réseau (NIS) il faut utiliser la commande adéquate (nispasswd par exemple) Elies Jebri Janvier 2002 ISET Nabeul ... qui est généralement lié au nom de la machine Unix. la commande passwd échoue et le mot de passe est inchangé. vous retrouvez l'ordinateur en attente d'une commande: HOST% Si les deux conditions précédentes ne sont pas remplies. Vous n'êtes donc pas le seul à connaître le mot de passe de votre compte! La première chose à faire est donc de le changer.

Bien vérifier que le mot login apparaît à l'écran.7 Initiation à l’utilisation du système d’exploitation Unix Terminer la session de travail Avant de quitter l'ordinateur (même pour quelques minutes). S'il n'apparaît pas recommencez Ctrl-D jusqu'à son apparition. Faire cette commande est indispensable! Sinon toute personne arrivant ultérieurement pourrait exécuter des commandes sous votre compte et altérer votre travail. la machine est en attente d'une nouvelle session de travail: HOST login: NOTE Pour terminer plus vite on peut taper la combinaison de touches Ctrl-D . Elies Jebri Janvier 2002 ISET Nabeul . Après exécution. il faut terminer votre session de travail à l'aide de la commande exit.

On distingue différentes sortes de fichiers: Les fichiers de données (Documents) Ces fichiers conservent les informations qui y ont été écrites. qui possède un nom et une adresse permettant de le désigner et de le retrouver (1). Cette structure. Leur rôle ressemble à celui d'une feuille de papier sur laquelle on a écrit des informations pour les retrouver plus tard. bande magnétique…). lecteurs de disquettes. les traceurs. pour imprimer. ce fichier est très utile. 2 Pouvant être eux-mêmes des répertoires… Elies Jebri Janvier 2002 ISET Nabeul . Les répertoires (Directories) Ces fichiers contiennent d'autres fichiers(2). L'un des avantages de la notion de fichier sous UNIX est que l'utilisateur peut oublier totalement quelle est la nature du support physique de son fichier. Par exemple. Le fichier passwd en est un exemple. les imprimantes. désignée par « système de fichiers » (file system). l'information contenue dans les fichiers est stockée dans une mémoire de masse (disque dur. on écrit dans le fichier de l'imprimante. Lorsqu'on donne le nom d'un de ces fichiers à UNIX. Un trou noir Il existe un fichier particulier nommé /dev/null qui se comporte comme un trou noir: il ne contient rien et tout ce qu'on écrit dedans est perdu. écran etc… sont considérés comme des fichiers. Contrairement à ce qu'on pourrait croire. clavier. Le système de fichiers L’une des particularités du SE unix réside dans l’unicité de la structure arborescente qui permet à l’utilisateur d’accéder aux fichiers. traduit l’organisation 1 En général. Les fichiers sous UNIX Qu'est ce qu'un fichier? Un fichier est un ensemble d'octets. Les commandes (Commands) Ces fichiers sont des programmes exécutables. il exécute le programme de cette commande.8 Initiation à l’utilisation du système d’exploitation Unix 2. On peut les comparer à des dossiers qui contiennent des feuilles de papier ou d'autres dossiers. Les périphériques (Devices) Les terminaux. Comme pour la feuille de papier on peut: -créer un nouveau fichier vide (une feuille blanche) -écrire dans un fichier : soit en écrasant l'ancien contenu soit à la suite de l'ancien contenu -effacer le contenu d'un fichier -détruire le fichier On verra plus tard qu'UNIX permet de faire bien d'autres opérations sur le contenu des fichiers. disquette.

Par exemple. Ce fichier est appelé racine et son nom UNIX est "/" (prononcer "slash"). Supposons qu'on "se trouve" au point /user/lambda Les seuls fichiers qu'on peut voir de ce point sont: textes.pas par: prog. Janvier 2002 ISET Nabeul .pas si on se trouve au point /user/lambda mais il désigne le fichier /user/alpha/prog.pas essai { null … usr … On peut voir à travers cet exemple que l’unicité de l’arborescence offre à tous les utilisateurs du SE une même image de toutes les données accessibles au SE même si leur stockage nécessite la mise en œuvre de différents supports : par exemple tout le contenu du fichier (répertoire) user peut être stocké sur un premier disque D1 alors que le reste des fichiers est stocké sur un deuxième disque D2. Ces deux fichiers sont différents et ne contiennent certainement pas la même chose. Le D1 peut être directement connecté à la machine ou non (accès distant ou par réseau local) sans que l’image du système de fichier ne soit changée. Chemin d’accès Le fichier essai est désigné de manière unique par: /user/lambda/essai On peut remarquer que les utilisateurs (cad les fichiers) alpha et lambda ont tous les deux un fichier nommé prog.pas /user/lambda/prog. On les reconnaît par le fait qu'ils commencent par un "/". la chaîne prog. Ces deux fichiers sont respectivement désignés par : /user/alpha/prog.pas. On les reconnaît au fait qu'ils ne commencent pas par un "/". Il existe un fichier à partir duquel on peut atteindre tous les autres. Voici un exemple d'organisation de fichiers tex  prog.pas désigne le fichier /user/lambda/prog. Ils peuvent désigner sans ambiguïté tous les éléments de l'arborescence. On peut donc désigner sans ambiguïté le fichier prog. prog.pas et essai.pas alpha  …    /        beta … user  lambda    …  dev    t1 textes t2 prog. mais il faut bien savoir "où on se trouve" (current directory). mais ils peuvent devenir longs si le chemin contient beaucoup de répertoires imbriqués.pas Les chemins relatifs Elies Jebri Les chemins qui désignent les fichiers à partir d'un point de l'arborescence sont appelés chemins relatifs.pas si on se trouve au point /user/alpha.Initiation à l’utilisation du système d’exploitation Unix 9 logique du stockage des données indépendamment de leur répartition physique sur les différents supports de stockage.pas Les chemins absolus Les chemins qui désignent les fichiers à partir de la racine sont appelés chemins absolus. Les chemins relatifs sont plus concis.

(point) . Il peut donc désigner le fichier t1 par textes/t1../?ev/n* /user/lambda/textes/t? est équivalente à: /user / /user/lambda /dev/null (entre autres) /user/lambda/textes/t1 /user/lambda/textes/t2 et Quel est le répertoire courant ? pwd (print working directory) Cette commande renvoie le chemin absolu de votre répertoire courant.ex} Le répertoire courant (current directory) Le répertoire contenant le répertoire courant n'importe quel caractère l'un des caractères a b ou n ([ ] : brackets) une lettre de c à l inclus (dash within brackets) n'importe quelle chaîne de caractères l'une des chaînes file toto ou ex ({ }: braces) Ces abréviations permettent d'abréger les chemins et de désigner en une seule fois plusieurs fichiers dont les noms ont des caractéristiques communes. Il peut désigner le "trou noir" par /dev/null.. l'utilisateur lambda aura la réponse suivante: HOST% pwd (lacommande) /user/lambda (la réponse) HOST% (attente de la commande suivante) Cette commande est très utile lorsqu'on a changé plusieurs fois de répertoire courant et qu'on a oublié où on se trouve dans l'arborescence.toto. Quelques abréviations utiles . (2 points) ? [abn] [c-l] * {file. (point) . dans lequel il est placé au début de la session (current directory=home directory).. ou de désigner un seul fichier sans écrire totalement son nom lorsque aucune ambiguïté n'est possible. Si lambda est en /user: la désignation : . ~ . Il suffit de le nommer par son chemin absolu. Il n'est pas nécessaire de changer de répertoire courant pour atteindre ou désigner un fichier. soit par un chemin absolu.Initiation à l’utilisation du système d’exploitation Unix Pour désigner le fichier essai: Si vous êtes: n'importe où / /user /user/lambda 10 la désignation est: /user/lambda/essai (absolu) user/lambda/essai lambda/essai essai Chaque utilisateur a son propre répertoire (home directory) fixé par l'administrateur lors de l'ouverture du compte. Immédiatement après un login. Par exemple l'utilisateur lambda est placé au point /user/lambda. Un fichier peut donc être désigné soit par un chemin relatif. Elies Jebri Janvier 2002 ISET Nabeul .

Elies Jebri Janvier 2002 ISET Nabeul .. Le réglage de ces autorisations est important: vous choisissez ainsi ce que les autres ont le droit de faire sur vos fichiers..11 Initiation à l’utilisation du système d’exploitation Unix Changer de répertoire courant cd chemin_de_répertoire (change directory) Exemples: HOST% cd /dev (chemin absolu) HOST% pwd /dev HOST% cd ./alpha (un tour chez le collègue) HOST% pwd /user/alpha HOST% Les propriétés des fichiers Chaque fichier possède un certain nombre de propriétés: 1) il a un propriétaire (généralement l'utilisateur qui l'a créé) 2) il a des autorisations d'accès Les différentes autorisations sont: r autorisation de lecture w autorisation d'écriture x autorisation d'éxécution Ces autorisations peuvent être données séparément à u l'utilisateur lui-même (user) g au groupe de l'utilisateur (group) o a tous (others) Il existe des commandes pour vérifier les autorisations (voir plus loin ls -l) et pour les changer (voir plus loin chmod). HOST% pwd / HOST% cd (retour à la maison) HOST% pwd /user/lambda HOST% cd .

Unix va automatiquement chercher ces fichiers dans des répertoires qui contiennent les commandes standard. HOST% cd /us\ er/lambda . On peut demander plusieurs commandes sur la même ligne à condition de les séparer par un ". Elles seront exécutées dans l'ordre de gauche à droite HOST% cd /user/lambda . 1 Voir plus loin les variables d'environnement Elies Jebri Janvier 2002 ISET Nabeul . L'exemple ci-dessous est équivalent au précédent. Les commandes UNIX Syntaxe générale Une commande UNIX peut comprendre quatre parties: -la désignation de la commande -les options -les arguments de la commande -les redirections Les trois dernières parties ne sont pas toujours présentes. Elles seront complètement décrites dans les chapitres suivants. pwd (commande en deux lignes) /user/lambda (la réponse) HOST% NOTE Les exemples donnés ci-dessous utilisent des commandes qui n'ont pas encore été étudiées. Les options commencent par un signe . On verra plus tard comment dire à UNIX où trouver des commandes. S'il ne trouve pas il cherche dans d'autres répertoires. La désignation de la commande Comme on l'a vu. On devrait donc la désigner par un chemin.12 Initiation à l’utilisation du système d’exploitation Unix 3. il suffit de terminer la ligne par un "\" (backslash) pour dire que la suite se trouve à la ligne suivante.suivi d'une (ou plusieurs) lettre qui désigne l'option. Il faudrait donc savoir où elle se trouve!! Heureusement.(1) Les options Certaines commandes proposent des options qui modifient le comportement de la commande." (semicolon). une commande est un fichier exécutable. pwd /user/lambda HOST% Si une commande est trop longue pour tenir sur une ligne.

Commande à un seul argument: HOST% ls -l /user va donner la liste des fichiers contenus dans le répertoire /user. S'il y avait précédemment quelque chose dans liste. Lorsqu’une commande a besoin de données pour fonctionner. Enfin si la commande se passe mal (mauvais arguments. manœuvres non autorisées etc…) elle envoie des messages sur la sortie standard d'erreur.c est l'argument de la commande cc NOTE La description des commandes dans ce manuel est succincte. il est perdu. une sortie standard de résultats et une sortie standard de messages d'erreur. >>fic Le fichier fic est créé s'il n'existait pas . Exemples: >>fic HOST% ls /usr/lambda > liste HOST% ls /usr/lambda/textes >> liste La liste des fichiers du répertoire /usr/lambda est écrite dans le fichier liste.13 Initiation à l’utilisation du système d’exploitation Unix Exemples: HOST% ls -l l est une option de la commande ls. soit la documentation de référence. Les arguments de la commande La plupart des commandes demandent un ou plusieurs arguments pour préciser sur quoi la commande va agir. lorsque la commande produit un résultat (c'est à dire d'autres données). les entrées et sorties standard sont définies comme suit: entrée standard: sortie standard de résultats: sortie standard d'erreurs: clavier écran écran Toutes les commandes n'utilisent pas forcément toutes les entrées et sorties. HOST% cc -o toto -O2 toto. En l'absente de redirections. les sorties produites par la commande seront ajoutées à la fin. elle les envoie sur sa sortie standard de résultat. Par exemple pwd ignore l'entrée standard. On n'y présente en général que quelques options parmi les plus utiles. rediriger la sortie résultats > fic ou > fic Le fichier fic est créé s'il n'existait pas ou écrasé s'il existait déjà. mais s'il existait déjà. Elies Jebri Janvier 2002 ISET Nabeul .c o est une option toto est l'argument de l'option O2 est une autre option qui ne demande pas d'argument toto. elle attend ces données sur son entrée standard. Commande à deux arguments: HOST% cp fic1 fic2 va copier le fichier fic1 dans un autre fichier fic2 Les redirections Les commandes peuvent avoir une entrée standard. consulter soit le manuel en ligne avec la commande man. Pour en avoir une description complète. De même.

les pipelines commande1 | commande2 La sortie standard de commande1 est redirigée vers l'entrée standard de commande2 . En effet. Ainsi les résultats de commande1 sont directement donnés en entrée à commande2. Exemple: Supposons qu'un fichier nommé listefic contienne une liste de fichiers: HOST% cat listfic /user/lambda/textes/t1 /user/lambda/textes/t2 HOST% Supposons qu'on veuille effacer les fichiers dont la liste est dans listfic. Ce sont généralement celles qui traitent le contenu d'un fichier. mais permet en consultant le fichier erreurs de savoir si les fichiers toto et titi sont bien des noms de fichiers existants. Les commandes qui traitent le contenu d'un fichier en entrée et écrivent leur résultat sur en fichier en sortie sont appelées des filtres (filter). Les messages d'erreur sont écrits ou ajoutés au fichier fic. Janvier 2002 ISET Nabeul . Exemple: HOST% cd /user/alpha (current directory) HOST% ls /usr/lambda | pwd /user/alpha (résultat de pwd seulement) HOST% Le résultat de ls a été redirigé sur l'entrée standard de pwd qui l'ignore. Le résultat de ls est donc perdu. < fic NOTE Seules certaines commandes acceptent une redirection de l'entrée.Initiation à l’utilisation du système d’exploitation Unix 14 La liste des fichiers du répertoire /usr/lambda/textes est ajoutée à la fin du fichier liste. rediriger l'entrée Les données nécessaires à la commande sont lues dans fic au lieu d'être lus au clavier. les accents graves ` Elies Jebri (backquotes) Toute commande incluse entre deux "`" est d'abord exécutée et son résultat lui est substitué. rediriger la sortie d'erreur 2> fic ou 2>> fic Fonctionne comme la redirection des résultats. Exemple: (more est une commande qui affiche page par page le contenu d'un fichier) Les deux commandes suivantes HOST% ls /usr/dev > liste HOST% more liste peuvent être remplacées par HOST% ls /usr/lambda | more Il est évident que le pipeline ne fonctionne que si commande1 fournit un résultat sur le fichier standard de sortie et que commande2 attend une entrée sur le fichier standard d'entrée. pour chaque nom de fichier incorrect la commande cat envoie un message d'erreur. Exemple: HOST% cat toto titi > /dev/null 2> erreurs Cette commande envoie le résultat de la concaténation au "trou noir". Une commande du genre cat listfic | rm ne fonctionne pas car la commande rm ne traite pas le contenu du fichier qu'on lui donne en argument.

15 Initiation à l’utilisation du système d’exploitation Unix La solution est la suivante: HOST% rm `cat listfic` HOST% la commande cat listfic est d'abord évaluée et est remplacée par son résultat qui est: /user/lambda/textes/t1 /user/lambda/textes/t2 La commande est donc équivalente à rm /user/lambda/textes/t1 /user/lambda/textes/t2 Les "`" substituent le résultat de la commande dans le texte où ils sont insérés. Aide en ligne man nom_de_commande Cette commande écrit sur la sortie standard une description complète de la commande (son effet. Ils sont souvent utilisés pour fabriquer le texte d'une commande. sa syntaxe. Elies Jebri Janvier 2002 ISET Nabeul . man -k mot_clé Cette commande fournit une liste des commandes en rapport avec le mot clé désigné. la liste exhaustive de ses options). whatis commande Donne une description succincte de la commande. Elle est utile lorsqu'on veut de l'aide sur une commande dont on ne connaît pas le nom. apropos mot_clé Equivalent à man -k.

En effet. NOTE Les commandes évoquées dans ce cours comportent souvent un grand nombre d'options. toutes les données qu'on manipule sont dans des fichiers. Lister un répertoire Les listes fournies par ls sont par ordre alphabétique par défaut ls Donne la liste des fichiers du répertoire courant HOST% cd textes HOST% ls t1 t2 HOST% ls répertoire Donne la liste des fichiers du répertoire désigné HOST% ls /user/lambda essai prog.pas textes HOST% ls fichier Donne la liste des fichiers dont le nom correspond à fichier HOST% ls /user/lambda/*a* essai prog.. Les trois suivantes indiquent les autorisations de l'utilisateur (propriétaire) Les trois suivantes indiquent les autorisations du groupe Les trois dernières indiquent les autorisations de tout le monde Ces autorisations peuvent être changées avec la commande chmod.pas drwxr-xr-x 0 lambda 1024 Jun 29 09:44 textes HOST% Les lettres de la première colonne précisent les autorisations d'accès: utilisateur groupe autres d r w x r w x r w x ..0 lambda 855 Apr 15 15:02 essai -rwxr--r-..16 Initiation à l’utilisation du système d’exploitation Unix 4.La première lettre (d ou -) indique si le fichier est un répertoire. NOTE Elies Jebri Donner le droit d'éxécution à un répertoire signifie donner le droit de l'ouvrir pour en voir le contenu Janvier 2002 ISET Nabeul . Manipulation des fichiers Les manipulations de fichier sont des manœuvres quotidiennes lors qu'on travaille sur un ordinateur. Pour la description complète de toutes les options le lecteur est prié de se reporter à la documentation officielle.0 lambda 351 Jul 16 18:33 prog..pas HOST% ls -l fichier_ou_rep Donne des renseignements complets sur chaque fichier HOST% ls -l /user/lambda -rwxr--r-.... On se contente ici d'évoquer les principales. Il est donc important de bien maîtriser ces commandes..

. Le fichier fic2 est le fichier destination. S'il n'existe pas. Il existe des options qui permettent de détruire un répertoire et son contenu. cp -r rep1 rep2 Tous les fichiers de rep1 (ainsi que tous les sous-répertoires et leur contenu) seront copiés avec le même nom et la même structure dans le répertoire rep2. il est créé. le répertoire désigné sera détruit. HOST% cd HOST% ls essai prog. mais leur emploi est très dangereux car on risque de détruire accidentellement un très grand nombre de fichiers. ils seront effacés. s'il existait déjà.xxx essai prog.17 Initiation à l’utilisation du système d’exploitation Unix Les colonnes suivantes indiquent: .le nombre de links (voir plus loin) .la taille en octets du fichier .") HOST% ls -a /user/lambda . Il doit nécessairement exister. Dès que dans une commande on demande d'écrire dans un fichier qui n'existe pas encore. Détruire un répertoire rmdir nom_du_répertoire Si vous avez l'autorisation d'écriture et si le répertoire est vide.pas textes HOST% mkdir lettres HOST% ls essai lettres prog. il est écrasé par le contenu de fic1.la date et l'heure de dernière modification .pas textes HOST% Créer un répertoire mkdir nom_du_répertoire Le nom du répertoire peut être un chemin absolu ou relatif (par rapport au répertoire courant) Si l'endroit où vous voulez créer le répertoire vous est interdit vous recevrez un message d'erreur. celui-ci est automatiquement créé. Copier des fichiers cp fic1 fic2 Le fichier fic1 est le fichier source. Elies Jebri Janvier 2002 ISET Nabeul .le nom du fichier ls -a fichier_ou_rep Cette commande montre les fichiers normalement cachés (ceux dont le nom commence par ". Mais il est très courant d’utiliser la commande : touch nom_du_fichier Détruire un fichier rm fic1 fic2 … Si vous avez les autorisations d'écriture sur ces fichiers. .profile . .le nom du propriétaire .pas HOST% mkdir /dev/truc mkdir: Permission denied HOST% textes Créer un fichier Il n'y a pas à proprement parler de commande pour créer un fichier.

pas lambda essai  t1 Changer les autorisations chmod r u w g o + x chmod ug . Elies Jebri Janvier 2002 ISET Nabeul .rw fichier_ou_repertoire rx uo wx go rwx ugo Le premier groupe de lettres désigne à qui on veut modifier les droits: u propriétaire (user) g groupe du propriétaire (group) o les autres (others) + signifie qu'on veut accorder les droits qui suivent .pas  essai {  HOST% cd HOST% mv textes/t2 t1 HOST% Après exécution le répertoire aura le schéma suivant: {t1  textes prog.18 Initiation à l’utilisation du système d’exploitation Unix Renommer ou déplacer un fichier Le fichier fic1 sera renommé fic2.signifie qu'on veut retirer les droits qui suivent Le second groupe de lettres désigne les droits modifiés r droit de lecture (read) w droit d'écriture (write) x droit d'éxécution (execute) Exemple: HOST% ls -l /user/lambda/essai -rwxrwxrwx 1 lambda 523 Apr 05 14:50 essai HOST% chmod go-rw /user/lambda/essai HOST% ls -l /user/lambda/essai -rwx--x--x 1 lambda 523 Apr 05 14:50 essai $ Il faut évidemment être le propriétaire du fichier pour avoir le droit de changer les autorisations. Exemple: Supposons que le contenu du répertoire de l'utilisateur lambda soit:  textes t1 t2 lambda prog. HOST% cd /user/lambda HOST% mv textes text mv fic1 fic2 NOTE la commande mv sert aussi à déplacer des fichiers: en effet fic1 et fic2 peuvent être des chemins complets relatifs ou absolus.

Surtout utile dans les scripts. Elies Jebri Janvier 2002 ISET Nabeul . les options sont: find -name fic fic désigne un ou plusieurs fichiers find -user uid uid est soit un nom d'utilisateur soit son numéro find -print On désire voir le résultat de la recherche sur la sortie standard. Séparer le chemin du nom basename fichier Ne garde que la dernière partie de la chaîne fichier (c'est à dire le nom du fichier). la commande a retrouvé deux fichiers qui s'appellent csh. find répertoire options Cette commande recherche dans répertoire les fichiers correspondant aux conditions précisées dans les options. Surtout utile dans les scripts. HOST% whereis csh csh: /bin/csh /usr/man/man1/csh.19 Initiation à l’utilisation du système d’exploitation Unix Retrouver un fichier whereis fic Cette commande permet de retrouver le chemin du ou des fichiers qui correspondent à fic. dirname fichier Ne garde que la première partie de la chaîne fichier (c'est à dire la suite des répertoires qui y aboutissent).1 HOST% Ici.

Janvier 2002 ISET Nabeul . tail -n Elies Jebri fic Renvoie les n dernières lignes du fichier fic. Voir le contenu des fichiers Cette commande envoie sur la sortie standard (en général l'écran) le contenu du fichier.20 Initiation à l’utilisation du système d’exploitation Unix 5. elles comportent souvent un grand nombre d'options. Manipulation du contenu des fichiers NOTE Les commandes évoquées dans ce chapitre sont une sélection des commandes disponibles dans Unix. Pour la description complète de toutes les commandes et de leurs options le lecteur est prié de se reporter à la documentation officielle. Ecrire sur la sortie standard echo chaîne Ecrit la chaîne sur la sortie standard. Pour voir l'écran suivant: espace more fic Pour avancer d'une ligne: Return Pour quitter more: q more fic1 fic2 … Affiche le contenu de fic1 comme précédemment. Si le fichier ne tient pas dans l'écran. elle peut servir à créer un fichier. clear Efface l'écran. Si elle est redirigée. cette commande est surtout utile dans les scripts. head -n fic Renvoie les n premières lignes du fichier fic. Si elle n'est pas redirigée. On se contente ici d'évoquer les principales. Exemple: HOST% echo "truc machin chouette" > toto HOST% le fichier toto est créé et contient la chaîne de caractères truc machin chouette. Pour visualiser le fichier suivant : n file fic1 fic2 … Renvoie une description du contenu des fichiers. la commande affiche le premier écran. banner chaîne Ecrit la chaîne en gros caractères sur la sortie standard. De plus.

Dans un fichier organisé en tableau. l'option -h supprime l'impression de la page d'entête. lpq -Pimp Donne la file d'attente de l'imprimante imp. Chaque ligne a évidemment le même nombre de colonnes. 1 Il existe des fichiers organisés en tableaux dont les séparateurs de colonne sont différents. S'informer auprès de l'administrateur du système pour les noms des imprimantes et les options éventuelles à utiliser. S'informer auprès de l'administrateur du système pour les noms des imprimantes et les options éventuelles à utiliser. Elle fournit sur le fichier standard de sortie toutes les lignes du fichier qui contiennent chaîne. Dans ce fichier. il faut l'enfermer dans des "". Tableaux Dans beaucoup de commandes les fichiers de caractères peuvent être traités comme des tableaux. Elies Jebri Janvier 2002 ISET Nabeul . hexadécimale. Recherche dans un fichier grep chaine fichier La commande grep recherche dans le fichier toutes les occurrences de chaîne . lpr -Pimp fichiers Met les fichiers désignés sur la file d'attente de l'imprimante imp. Imprimer un fichier lp imp fichiers Met les fichiers désignés sur la file d'attente de l'imprimante imp. Supposons qu'il existe un fichier nommé administrateurs qui contienne la liste des administrateurs du système. Notamment . Exemple d'un tableau à trois colonnes et deux lignes: donnée tab donnée tab donnée Return donnée tab donnée tab donnée Return expand -n fichier Permet de remplacer les caractères tab de fichier par n espaces . décimale ou ascii suivant les options demandées. lprm -Pimp fichiers Enlève les fichiers désignés de la file d'attente de l'imprimante imp.Initiation à l’utilisation du système d’exploitation Unix 21 od options fichier Renvoie le contenu du fichier sous forme octale. les séparateurs de colonne sont des tab (1) et les séparateurs de ligne sont lf ou Return ou les deux. HOST% grep "elies jebri" administrateurs technologue elies jebri: ISET Nabeul HOST% Cette commande possède un grand nombre d'options très utiles permettant d'affiner la recherche. Si la chaîne recherchée contient des espaces ou des caractères spéciaux qui risquent d'être interprétés. Cette commande possède beaucoup d'options permettant d'affiner le travail. Un tableau est un ensemble de lignes organisées en colonnes. Elle est souvent utilisée dans les pipelines. lpstat Renvoie l'état des imprimantes. les données sont rangées ligne par ligne. le séparateur de colonnes est le caractère ":" (colon). Normalement. Le fichier /etc/passwd qui contient la liste des utilisateurs en est un exemple.

les changements (c) et les numéros de ligne où ces changements sont détectés: a num_lign_de_fic1 d num_lign_de_fic2 e Elies Jebri Janvier 2002 ISET Nabeul . Exemples: HOST% cat fic affiche le contenu de fic à l'écran.n3 -dsépa fic Cette commande permet d'extraire une partie des informations dans un fichier organisé en tableau.22 Initiation à l’utilisation du système d’exploitation Unix unexpand fichier Remplace les espaces ou les chaînes d'espaces par un caractère tab . Cette commande permet de préparer des fichiers pour un traitement sous forme de tableaux. Cette commande détecte les ajouts (a). les effacements (d). HOST% cat fic1 fic2 > fic3 concatène le contenu de fic1 et de fic2 et les met dans fic3. wc option fichier Cette commande est un compteur. Cette commande est une autre manière de consulter le contenu des fichiers. paste fic1 fic2 Concaténation de tableaux: les colonnes de fic2 sont ajoutées à la droite des colonnes de fic 1. Comparaison diff fic1 fic2 Cette commande permet de comparer le contenu de deux fichiers. Les séparateurs de colonne sont supposés être des caractères tab .5 -d: /etc/passwd > toto va écrire dans le fichier toto des lignes ne comprenant que les champs nom (1er champ) et renseignements (5ème champ). Exemple: le fichier /etc/passwd est organisé de la manière suivante: nom:password_crypté:uid:gid:renseignements:homedir:shell La ligne de l'utilisateur lambda pourrait être: lambda :x :500 :500 :Utilisateur lambda:/user/lambda:/bin/csh La commande: cut -f1. consulter les références. Extraction cut -fn1.n2. En général on redirige le résultat dans un fichier. Suivant l'option: -l compte les lignes du fichier -w compte les mots du fichier -c compte les caractères du fichier colrm startcol endcol Enlève du fichier en entrée standard les colonnes dont les numéros vont de startcol à endcol. Surtout utile quand les entrées et sorties standards sont redirigées. Le résultat de la comparaison est envoyé sur le fichier standard de sortie. Concaténer des fichiers cat fic1 fic2 … Cette commande renvoie le contenu des fichiers dans l'ordre des arguments sur le fichier standard de sortie. Avec l'option -a seules les chaines de plus de deux espaces sont remplacées par un tab . La ligne relative à lambda sera: lambda:Lambda Mohamed EA3GM La commande cut supporte beaucoup d'options.

dircmp rep1 rep2 Compare les fichiers de même nom dans les deux répertoires. Par défaut. Avec les options. La place gagnée varie suivant la nature du fichier. Suivant les options on peut connaître les différences ou seulement savoir si les fichiers sont identiques ou non. Compactage Les gros fichiers peuvent être comprimés par une opération de compactage. Tri sort options fic Trie les lignes du fichier fic. Il peut exister d'autres éditeurs de texte mais on n'est pas certain de les trouver sur tous les systèmes Unix. Couper un fichier en morceaux csplit fichier Cette commande lit le fichier et crée des fichiers contenant des parties du fichier d'origine. pack fichier Compacte le fichier désigné. unpack fichier Décompacte le fichier désigné. vi est de loin le plus pratique. Cette commande peut comparer des fichiers de tous types (ASCII ou binaire). Les noms des fichiers créés et les règles de coupure sont définies dans les options et les arguments complémentaires. Cette commande est surtout utile en programmation pour découper un gros texte source en petits fichiers contenant chacun une routine. fichiers de données etc…). comm fic1 fic2 Donne les lignes communes aux deux fichiers. Avec l'option -d la comparaison est celle de diff. la comparaison est celle de la fontion cmp. pascal. On gagne ainsi de la place sur le disque. Les éditeurs de texte Un éditeur de texte est un programme permettant de créer ou de modifier un fichier contenant du texte (textes de programmes fortran.23 Initiation à l’utilisation du système d’exploitation Unix Exemple: 3c3 (changement entre la ligne 3 de fic1 et la ligne 3 de fic2) < la_ligne_3_de_fic1 -->la_ligne_3_de_fic2 diff3 fic1 fic2 fic3 Comme diff mais pour trois fichiers. Le fichier compacté doit être décompacté pour être à nouveau exploitable. Elies Jebri Janvier 2002 ISET Nabeul . on peut limiter la comparaison à certaines colonnes. sdiff fic1 fic2 Comme diff mais avec une présentation différente des résultats cmp fic1 fic2 Compare le contenu des deux fichiers octet par octet. Sous Unix on trouve toujours au moins deux éditeurs de texte: ed et vi. La taille d'un fichier texte peut être réduite de 50%. ed est un éditeur en mode ligne vi est un éditeur en mode page. La commande comporte de nombreuses options pour définir le tri à faire.

La (les) frappe(s) de touches qui suivent sont interprétées comme des commandes.24 Initiation à l’utilisation du système d’exploitation Unix 6. pour réaliser efficacement certaines opérations qu'on en apprend de nouvelles. le texte de la commande s'écrit (pour contrôle) sur la dernière ligne de l'écran et se termine nécessairement par la frappe de la touche Return . Ce qui se trouve sur la dernière ligne ne fait jamais partie du texte. son apprentissage est utile car on est certain de le trouver partout. dans ce cas. Pour passer en mode écriture. Il n'est pas nécessaire de les connaître toutes. Cet éditeur de texte permet de créer et de modifier n'importe quel fichier texte: programmes en tous langages. Les frappes de touches qui suivent sont écrites dans le texte à l'endroit où se trouve le curseur. fichiers de données. Son nom est une abréviation de "visual display editor". en se référant au mode d'emploi. •mode écriture: les touches frappées au clavier sont écrites là où se trouve le curseur. Démarrer vi Il suffit de taper la commande: vi nom_de_fichier nom_de_fichier peut en fait être tout chemin compréhensible par UNIX. etc… Tout fichier de caractères en code ASCII est lisible et modifiable par vi. Ce qui suit est donc une description des commandes de vi. Seules les premières sont indispensables. vi ignore la souris. il suffit de taper la touche Escape . Par conséquent. On se rend compte alors que cet éditeur de texte est finalement assez puissant. il suffit de taper une commande d'insertion ou d'ajout. Cependant. La plupart des commandes se résument à la frappe de quelques touches. Si on était déjà en mode commande la touche Escape est sans effet. vi peut réagir de deux façons: 1 Ce sont les commandes commençant par / ? : ou ! Elies Jebri Janvier 2002 ISET Nabeul . C'est pendant l'utilisation. Utilisation de vi vi (prononcer "vi-aïe") est un éditeur de texte qui est présent sur tous les systèmes UNIX. Bien qu'il puisse exister d'autres éditeurs de texte plus ergonomiques fonctionnant sous ce système d'exploitation. jusqu'à la prochaine frappe de Escape . Toutes les commandes se font donc au clavier. certaines d'entre elles(1) demandent un nombre indéterminé de caractères. Pour passer en mode commande. fichiers de configuration du système. vi possède un grand nombre de commandes. vi se trouve toujours dans l'un des deux états: •mode commande: les touches frappées au clavier sont interprêtées comme des commandes et ne sont donc pas écrites dans le texte.

Initiation à l’utilisation du système d’exploitation Unix 25 •Si nom_de_fichier désigne un fichier qui n'existe pas. A insertion de texte à la fin de la ligne du curseur. vi comprend qu'il s'agit de la création d'un nouveau fichier. O (lettre "O" majuscule) ouvre une ligne au-dessus de la ligne du curseur. i insertion de texte à gauche du curseur. Le reste de la ligne s'il existe sera poussé vers la droite. vi reste alors en mode écriture jusqu'à la prochaine frappe de Escape . Il suffit de quitter vi en demandant de ne pas enregistrer sur disque (aucun fichier ne sera créé) et de recommencer la commande avec le nom correct. Le reste de la ligne s'il existe sera poussé vers la droite. Il se peut que votre intention était de modifier un fichier existant. Exemple: 2h ou 2 déplace le curseur de 2 caractères vers la gauche. On peut aussi changer de fichier sans quitter vi (voir plus loin: travailler sur un autre fichier) Quitter vi Pour quitter vi. Selon le choix de la commande le texte s'insère à différents endroits par rapport à la position courante du curseur. I insertion de texte au début de la ligne du curseur. vi repasse alors en mode commande. quitter avec sauvegarde :wq Return quitter sans sauvegarde :q Return ou ZZ ou :x Return ou :q! Return Entrer du texte Lorsqu'on est en mode commande. Un message sur la ligne de commande vous signale qu'il s'agit d'un nouveau fichier (new file) •Si nom_de_fichier désigne un fichier qui existe. vi vous présente donc un texte vide et se met en mode commande. vi vous présente à l'écran le début du fichier et se met en mode commande. o (lettre "o" minuscule) ouvre une ligne au-dessous de la ligne du curseur. par mots w b e Elies Jebri déplace le curseur au début du mot suivant déplace le curseur au début du mot précédent déplace le curseur à la fin du mot courant Janvier 2002 ISET Nabeul . mais qu'une faute de frappe dans nom_de_fichier fasse croire à vi qu'il s'agit d'un nouveau fichier. a insertion de texte à droite du curseur. il faut d'abord passer en mode commande (si vous n'y êtes pas déjà) en tapant Escape . Déplacer le curseur Passer en mode commande (si vous n'y êtes pas déjà) par la frappe de Escape puis: par caractères ou h ou l On peut se déplacer de plusieurs caractères en tapant un nombre avant la commande. vi comprend qu'il s'agit de la modification du fichier. il suffit de taper une commande d'insertion de texte parmi les commandes suivantes. Le reste de la ligne s'il existe sera poussé vers la droite.

l'utilisateur est interrogé pour accepter (y) ou refuser (n) le remplacement. Consulter la documentation. ? ' " ! etc… Si on veut utiliser la notion de mot au sens littéraire (séparés par des espaces) il faut employer les commandes W B E à la place de w b e. par lignes 0 (zéro) $ déplace le curseur en début de ligne déplace le curseur en fin de ligne ou k déplace le curseur une ligne vers le haut  ou j déplace le curseur une ligne vers le bas + déplace le curseur au début de la ligne suivante déplace le curseur au début de la ligne précédente On peut se déplacer de plusieurs lignes en tapant un nombre avant la commande. Chaque fois qu'une occurrence de chaine_cherchée est trouvée. Il existe de nombreux caractères spéciaux qu'on peut mettre dans chaine_cherchée pour affiner la recherche. La recherche/remplacement s'arrête avec Ctrl-D . :n Return déplace le curseur à la ligne n° n. Exemple: 3ou 3k déplace le curseur de 3 lignes vers le haut. Cette option est dangereuse car il arrive souvent que certains remplacements ne soient pas désirables. G déplace le curseur à la dernière ligne du texte H L M déplace le curseur en première ligne de l'écran déplace le curseur en dernière ligne de l'écran déplace le curseur en milieu de l'écran Ctrl-F déplace le curseur au début de l'écran suivant Ctrl-B déplace le curseur au début de l'écran précédent Ctrl-D déplace le curseur 1/2 écran plus bas Ctrl-U déplace le curseur 1/2 écran plus haut Rechercher un texte vers le bas /texte_à_rechercher Return ou /texte_à_rechercher/ vers le haut ?texte_à_rechercher Return ou ?texte_à_rechercher? répéter la recherche n dans l'autre sens N recherche et remplacement :g/chaine_cherchée/s/remplacement/gc Le caractère "c" placé à la fin de la commande signifie "avec confirmation".Initiation à l’utilisation du système d’exploitation Unix 26 Il est à noter que la notion de mot est prise à son sens informatique: un mot est une suite de caractères alphanumériques comprise entre deux séparateurs <espace> . Elies Jebri Janvier 2002 ISET Nabeul . On peut se déplacer de plusieurs mots en tapant un nombre avant la commande. Si le caractère "c" n'est pas présent. Exemple: 2w déplace le curseur de 2 mots vers la droite. . ( ) { } . le remplacement est fait partout automatiquement sans confirmation. par écrans nG déplace le curseur à la ligne n° n.

Une copie du buffer est insérée au-dessous la ligne. (c'est à dire remplacer un morceau de texte par un autre) il faut commencer par amener le curseur au début de la partie à changer. lignes Pour déplacer une ou plusieurs lignes il faut: •Déplacer le curseur sur la ligne à déplacer. Il est prudent de ne faire que des déplacements ou des recherches. changer une ligne cc nouvelle_ligne Escape changer la fin d'une ligne C nouvelle_fin_de_ligne Escape couper une ligne en deux Placer le curseur entre les mots à séparer et taper r Return (remplacement d'un espace par un Return ) . lignes Pour recopier une ou plusieurs lignes il faut: •Déplacer le curseur sur la ligne à copier •Taper yy ou Y (yank). On peut donc encore les insérer à d'autres endroits. le buffer contient toujours une copie de la (des) ligne(s). •Taper dd (delete). changer un caractère r nouveau_caractère changer un mot cw nouveau_mot Escape Si le curseur n'était pas au début du mot. Une copie du buffer est insérée au-dessus de la ligne. on met la ligne et les n-1 lignes qui suivent dans le buffer). Remarque 2: Après ces opérations. Une copie du buffer est insérée au-dessus de la ligne. Remarque 1: Après avoir mis la (les) ligne(s) à recopier dans le buffer on peut aussi •Déplacer le curseur sur la ligne au-dessous de la ligne à insérer •Taper P. joindre deux lignes Placer le curseur sur la ligne du dessus et taper J Effacer un / plusieurs caractères x nx n est le nombre de caractères à effacer un / plusieurs mots dw ndw n est le nombre de mots à effacer une / plusieurs lignes dd ndd n est le nombre de lignes à effacer la fin d'une ligne D Déplacer du texte recopier une/plus. Une copie du buffer est insérée au-dessous la ligne. seul le reste du mot est changé. Une copie de la ligne est mise dans un buffer (en tapant ndd on met la ligne et les n-1 lignes qui suivent dans le buffer).27 Initiation à l’utilisation du système d’exploitation Unix Changer du texte Pour changer du texte. •Déplacer le curseur sur la ligne au-dessus de la (des) ligne(s) à insérer •Taper p (put). •Déplacer le curseur sur la ligne au-dessus de la (des) ligne(s) à insérer •Taper p (put). Remarque 1: Après avoir mis la (les) ligne(s) à déplacer dans le buffer on peut aussi •Déplacer le curseur sur la ligne au-dessous de la ligne à insérer •Taper P. déplacer une/plus. il ne faut pas faire de commandes qui en changent le contenu. Elies Jebri Janvier 2002 ISET Nabeul . Remarque 3: Après avoir copié dans le buffer la (les) ligne(s). Une copie de la ligne est mise dans un buffer (en tapant nyy ou nY.

a. On peut donc encore les insérer à d'autres endroits. nous avons fait une recherche de "val" et un remplacement par "valeur". Les autres vont être très rapides: n (recherche du "val" suivant) . le curseur se place sur le v) cw (on veut changer la fin du mot. Il est prudent de ne faire que des déplacements ou des recherches. Remarque 3: Après avoir copié dans le buffer la (les) ligne(s). Voici la liste des commandes qui peut résoudre le problème: :1 (aller en première ligne) /val (rechercher la première occurrence de val. Il faut donc changer toutes les chaînes "val" (ou seulement certaines d'entre elles) en "valeur".d.(point) n N répète le dernier effacement ou changement répète la dernière recherche répète la dernière recherche en sens inverse La combinaison de ces deux commandes permet de résoudre un problème courant: Supposons qu'un programme utilise une variable nommée "val" et qu'on veuille changer son nom en "valeur". vi vous propose de le faire. :e! nom_de_fichier Cette commande force vi à changer de fichier sans proposer la sauvegarde. le buffer contient toujours une copie de la (des) ligne(s). il ne faut pas faire de commandes qui en changent le contenu. Elies Jebri Janvier 2002 ISET Nabeul . c. Sauvegardez le fichier si vous le désirez. Répéter la dernière commande .28 Initiation à l’utilisation du système d’exploitation Unix Remarque 2: Après ces opérations. (remplacement du mot par "valeur" si on le désire) etc… Annuler la dernière commande u U annule la dernière commande annule tous les changements effectués sur la ligne actuelle Travailler sur un autre fichier :e nom_de_fichier (edit) Si le fichier actuel n'est pas sauvegardé. tout le mot) valeur (on tape le nouveau mot) Escape (pour terminer la commande cw) A ce stade. si numéro_de_ligne n'est pas présent l'insertion se fait à la position courante du curseur. insérer un fichier :numéro_de_ligne r fichier Return Le contenu de fichier sera inséré à la ligne numéro_de_ligne .

A la fin de l'éxécution de la commande. recouvrant éventuellement une partie de l'écran de vi. surtout sur le même fichier! Des effets de bord indésirables pourraient entraîner la perte du fichier. un message hit Return to continue vous invite à retourner dans vi en tapant Return . La commande(1) s'exécute. 1 Il n'est pas interdit mais fortement déconseillé de relancer vi sous vi.29 Initiation à l’utilisation du système d’exploitation Unix Lancer une commande Unix sous vi :! commande Return . Elies Jebri Janvier 2002 ISET Nabeul .

ils fonctionnent chacun leur tour. c'est le système d'exploitation qui s'en charge. Il suffit d'ajouter un "&" à la fin de la commande. Remarquez que la commande ps y figure elle-même! 1 Les processus en cours semblent fonctionner simultanément. C'est le système d'exploitation Unix qui se charge de distribuer le temps machine aux différents processus demandeurs. Elies Jebri Janvier 2002 ISET Nabeul . vous recevez un message du genre [numéro] done qui s'inscrit en bas de l'écran. Quels sont les processus en cours? ps Vous pouvez donc avoir simultanément plusieurs processus en cours et il est utile de les connaître. Vous devez attendre la fin de son exécution pour lancer d'autres commandes. c'est à dire qu'on pourra continuer à travailler sans attendre qu'elle soit terminée(1). L'utilisateur n'a pas à se préoccuper de cette distribution. Lorsque qu'une commande en tâche de fond est terminée.30 Initiation à l’utilisation du système d’exploitation Unix 7. Les commandes lancées sans le "&" à la fin de la ligne sont dites en premier plan (foreground). Gestion des processus Lancer une commande en tâche de fond commande & Si on prévoit que l'exécution d'une commande va durer longtemps. il est intéressant de la lancer en tâche de fond (background). En fait. C'est ce que vous donne la commande ps: HOST% ps PID TT STAT TIME COMMAND … … … … … 1282 co R 10:05 toto … … … … … 6006 co R 0:02 ps HOST% La commande ps fournit un tableau des différents processus en cours. HOST% toto & [1] 1282 HOST% (commandes) [1] done (commandes) Unix vous indique un numéro de job [1] et un numéro de processus (PID : Processus IDentifier) Vous avez à nouveau la main sans attendre que la commande soit finie.

la commande ps avec certaines options fournit toujours une liste de processus en fonctionnement. puis lancez la commande at en lui donnant l'heure (et éventuellement la date??) et le nom du fichier de commandes. L'utilisation normale est la suivante: (sleep durée_en_secondes . HOST% kill -9 1282 HOST% Bien entendu vous ne pouvez pas interrompre n'importe quel processus. sleep durée Elies Jebri Suspend l'éxécution pendant un certain temps. Vous ne pouvez agir que sur ceux qui vous appartiennent. control passing to parent W swapped out > exceeded soft memory limits N priority was reduced < priority was raised TIME : temps machine COMMAND : la commande qui a lancé le processus Même si on n'a pas lancé de processus en tâche de fond. réseau etc…). qui sont lancés par le système lui-même (gestion de disque. Stopper un processus en cours kill kill -1 numéro_de_processus Le processus à stopper est identifié par son PID HOST% ps PID TT STAT TIME COMMAND … … … … … 1282 co R 10:05 toto … … … … … 6006 co R 0:02 ps HOST% kill -1 1282 [1] Terminated toto HOST% l'option -1 est en principe suffisante pour stopper le processus. Il peut avoir les valeurs suivantes: R runnable or running T stopped P paging D waiting on disk S sleeping (moins de 20 sec) I idle (plus de 20 sec) Z terminated. commande1 )& Janvier 2002 ISET Nabeul . Lancer un processus plus tard at heure fichier Créez d'abord un fichier (atfic par exemple) contenant les commandes à éxécuter. on peut essayer l'option -9. En cas d'échec (vérifier avec une nouvelle commande ps). HOST% at 14:15 pm atfic HOST% Consulter les références pour connaître les différentes syntaxes d'heure et de date admises par la commande at. PID: Numéro du processus TT: identification du terminal qui a lancé le processus STAT: Etat du processus.31 Initiation à l’utilisation du système d’exploitation Unix Les différentes colonnes sont les suivantes. Il ne faut donc pas s'étonner de la présence de processus qu'on n'a pas commandés.

HOST% atrm 936 936: removed HOST% atrm -a Enlève tous les processus en attente. 1991 0:00 lambda 936 a atfic HOST% atrm n Cette commande retire le processus numéro n de la liste des processus en attente d'éxécution. wait Attend la fin d'éxécution de tous les processus qui ont été lancés en tache de fond (avec &) Durée des processus time commande Elies Jebri A la fin de l'éxécution de la commande commande. time affiche sur la sortie standard trois temps (en secondes): • temps entre le lancement de la commande et la fin de son éxécution (elapsed time) •temps système •durée d'éxécution du code de la commande Janvier 2002 ISET Nabeul .32 Initiation à l’utilisation du système d’exploitation Unix Gestion des processus retardés atq Cette commande donne la liste des processus en attente d'éxécution HOST% atq Rank Execution Date Owner Job# Queue Job Name 1st Jan 1.

on peut modifier sa valeur sans la ré-exporter. les propriétés de l'utilisateur. Ajuster son propre environnement Lorsque l'on exécute une commande (un programme) ou au cours d'une session le système d'exploitation tient compte de certaines caractéristiques qui définissent la configuration de la machine et du système. Affiche la liste des variables d'environnement actuellement définies et les valeurs qui leurs sont affectées.. Pour travailler avec un terminal de type "sun" tapez: HOST% TERM=sun HOST% export TERM NOTE Si une variable d'environnement a déjà été définie et exportée.33 Initiation à l’utilisation du système d’exploitation Unix 8. Exemple: Elies Jebri Janvier 2002 ISET Nabeul . l'ensemble de ces caractéristiques definit ce que l'on appelle "environnement". puis leur validité est étendue à toutes les commandes exécutées au cour de cette session en utilisant la commande export. etc . Les valeurs prédéfinies de ces variables peuvent être modifiées en éditant le fichier $HOME/.. Exemple: La variable d'environnement TERM définit le type de terminal utilisé. env Les variables prédéfinies Lorsqu'on commence une session un certain nombre de variables d'environnement sont déjà définies. La variable PATH contient une liste de répertoires dans lesquels Unix recherche les commandes que vous avez désigné sans préciser leur chemin absolu. Ces variables sont en fait définies comme des variables locales dans la session. Chaque chemin est séparé du suivant par un ":".profile NOTE PATH ATTENTION!!! Ne pas modifier ces valeurs si vous n'êtes pas sûr du résultat. Les variables d'environnement La définition d'un environnement est généralement assurée par l'affectation de certaines valeurs à des variables dites variables d'environnement..

TMPDIR L'horloge date Donne la date et l'heure actuelle. En principe vous n'avez pas à la modifier. Unix la recherche d'abord dans le répertoire /usr/bin. dc fichier Calcule l'expression contenue dans le fichier La commande dc offre un grand nombre d'options (gestion de piles. Si la commande que vous avez tapée n'est pas désignée par son chemin absolu. leave hhmm Le système vous enverra un message à l'heure dite HOST% leave 1535 Alarm set for Wed Mar 7 15:35:07 1984 HOST% … HOST% Time to leave! HOST% leave +hhmm Le système vous enverra le message dans hh heures et mm minutes. Cette variable est surtout utilisée dans les scripts. Cette variable contient le chemin absolu de votre répertoire personnel (home directory). Suivant les options. Les informations sont plus ou moins détaillées suivant les options. différentes bases…) units Programme de conversion d'unités. La calculatrice dc Calcule l'expression reçue sur l'entrée standard. Les disquettes L'utilisation du lecteur de disquettes nécessite les manœuvres suivantes: • introduire la disquette dans le lecteur • faire la commande: mount /dev/fd0 /flop Elies Jebri Janvier 2002 ISET Nabeul . les résultats sont plus ou moins détaillés. Vous risquez de ne plus pouvoir exécuter certaines commandes. puis dans le répertoire /usr/5bin. Exemple: cd $HOME est équivalent à cd . du fichier Donne le nombre de blocs (de 1 Ko) occupés par le fichier (qui peut être un répertoire). Il vous demande interactivement l'unité de départ. last -n Renvoie les dates et heures de vos n derniers login. il vaut mieux ne pas modifier le contenu de la variable PATH .Initiation à l’utilisation du système d’exploitation Unix 34 La variable PATH pourrait contenir: /usr/bin:/usr/5bin:. NOTE HOME Si vous n'êtes pas sûr de ce que vous faites. l'unité d'arrivée et répond en donnant l'opération à faire pour réaliser la conversion Les disques durs df Affiche l'espace libre sur les disques ou le disque désigné. et enfin dans votre répertoire courant (le point final désigne votre répertoire courant).

uname -a Renvoie des renseignements sur la machine sur laquelle vous travaillez. Cette opération est nécessaire pour toute disquette neuve. NOTE On peut reformater une disquette ancienne. eject Ejecte la disquette du lecteur de disquettes. Par défaut. Le formatage est une opération qui consiste à préparer une disquette vierge à recevoir des informations.Initiation à l’utilisation du système d’exploitation Unix 35 On accède alors au contenu de la disquette en visitant le répertoire /flop. fdformat Formate la disquette dans le lecteur de disquette. le numéro d'utilisateur. le groupe et le numéro du groupe. id Renvoie le nom. n vaut 8. Vous et les autres HOSTname Renvoie le nom de la machine sur laquelle vous travaillez. who Renvoie la liste des utilisateurs actuels de la machine whoami ou who am i Qui suis-je? w Renvoie des renseignements sur les utilisateurs actuels de la machine Elies Jebri Janvier 2002 ISET Nabeul . mais toutes les informations qui s'y trouvaient sont perdues! l'option -v vérifie le formatage en fin d'opération l'option -l formate en faible densité (720 Ko) Le clavier tabs -n Place un taquet de tabulation tous les ncaractères. logname Renvoie le nom sous lequel vous avez démarré la session.

Si tel n'était pas le cas. des arguments et peuvent exécuter certaines opérations sous condition. On peut alors penser mettre ces commandes dans un fichier et les exécuter ensuite.36 Initiation à l’utilisation du système d’exploitation Unix 9. Elies Jebri Janvier 2002 ISET Nabeul . On verra dans la suite que les scripts. Une bonne habitude serait de vider le contenu de ce répertoire avant de quitter sa session pour libérer de l'espace disque. et qu'on ait souvent besoin de refaire cette suite de commandes. Il va donc créer (avec vi par exemple) un fichier texte $HOME/nettoie dans lequel il va mettre les commandes suivantes: cd $HOME/tmp rm `ls` echo "Nettoyage terminé" Le fichier nettoie est un fichier texte qui contient des commandes. Un tel fichier de commandes est un script. Exemple: Supposons que l'utilisateur lambda ait créé dans son répertoire un répertoire nommé /user/lambda/tmp. dans lequel il a l'habitude de mettre des fichiers temporaires. Par exemple. cet exemple permet d'imaginer des scripts réalisant des opérations plus complexes. HOST% nettoie nettoyage terminé HOST% Bien que très simple. on pourrait améliorer le script précédent en vérifiant d'abord que le répertoire /user/lambda/tmp existe et est bien un répertoire. Les scripts Qu'est-ce qu'un script ? Il arrive souvent qu'on ait à faire une suite de commandes pour réaliser une opération complète. Pour le rendre exécutable il faut lui donner le droit d'éxécution: HOST% chmod u+x $HOME/nettoie HOST% Avec son droit d'éxécution. il suffira à lambda de lancer la commande nettoie. Ce fichier n'est pas un fichier exécutable. il enverrait un message d'erreur du genre /user/lambda/tmp n'existe pas et ne ferait rien d'autre. comme toute commande Unix peuvent avoir des options. le fichier nettoie est devenu une nouvelle commande! Avant de quitter sa session.

Ces variables ne peuvent contenir que des chaînes alphanumériques. Les variables Dans un script on peut définir des variables. Si la chaine valeur contient des caractères spéciaux(1) il faut l'enfermer entre deux """ (guillemets doubles). export var Cette commande rend la variable var connue dans toute votre session (notamment d'autres scripts pourront s'y référer). Un nom de variable doit commencer par une lettre et peut être constitué de lettres. : ? * | ^ ( ) { } [ ] \ > < # + espace Elies Jebri tab Janvier 2002 ISET Nabeul . 1 Les caractères spéciaux sont: " ' & $. Exemple: Si vous exécutez les lignes suivantes: question="etre ou ne pas etre" echo $question vous verrez s'afficher à l'écran: etre ou ne pas etre Par contre echo question donnera question Portée des variables Une variable définie dans un script n'est reconnue qu'à l'intérieur du script. de chiffres et "_" (underscore).Initiation à l’utilisation du système d’exploitation Unix 37 La possibilité d'exécutions conditionnelles et de boucles permet de regarder les scripts comme de véritables programmes dont les instructions sont les commandes d'Unix. Exemples: var_1 v2 ma_variable Affectation d'une variable NOTE Pour affecter une chaine alphanumérique valeur à une variable var il suffit d'écrire: var=valeur Attention: pas d'espaces de chaque coté du signe "=". Pour la rendre connue à l'extérieur il faut utiliser la commande export. Exemples: question="etre ou ne pas etre" var2=12 (ce n'est pas une valeur numérique!! il s'agit du caractère "1" suivi du caractère "2") var3= (affectation d'une chaine vide ) var4="cat fic1 fic2 > fic3" Substitution d'une variable Le contenu de la variable var est obtenu par $var. . .

En général un état de retour égal à 0 indique que la commande s'est bien passée(1). 1 Consulter les références pour savoir les états renvoyés par les différentes commandes. 0 1 2 3 … $0 donne le nom de base du script $1 donne le premier argument envoyé au script $2 donne le deuxième argument envoyé au script etc… $ $$ donne le numéro du processus (PID) du script. L'état de retour est un entier retourné par toute commande Unix (y compris les scripts). ? Exemple: HOST% grep "elies jebri" administrateurs … (résultat) HOST% echo $? On verra s'afficher 0 si la chaine "elies jebri" a été trouvée 1 si la chaine "elies jebri" n'a pas été trouvée 2 s'il y a eu une erreur(2) # $# donne le nombre (3) d'arguments envoyés au script . ! $! donne le PID du dernier processus exécuté en tâche de fond.38 Initiation à l’utilisation du système d’exploitation Unix Exemple: Supposons qu'un script shksp contienne les lignes question="etre ou ne pas etre" export question HOST% echo $question (avant exécution du script) undefined variable HOST% shksp (exécution du script) HOST% echo $question (après exécution du script) etre ou ne pas etre HOST% Les variables prédéfinies Il existe des variables prédéfinies dont les noms sont: ? # $ ! qui ont une signification spéciale: $? donne l'état de retour de la dernière commande exécutée. 3 Sous forme de chaine de caractères Elies Jebri Janvier 2002 ISET Nabeul . 2 Par exemple si le fichier administrateurs n'existe pas ou est inaccessible. Sa valeur diffère suivant les commandes et donne une indication sur le déroulement de son exécution. NOTE Les variables d'environnement utilisateur sont aussi reconnues par le script (voir plus haut: les variables d'environnement).

if liste_de_commandes_1 then liste_de_commandes_2 else liste_de_commandes_3 fi liste_de_commandes_1 est d'abord exécutée... Déroulement de l'exécution du script Normalement les commandes d'un script sont exécutées en séquence dans l'ordre où elles sont écrites.. Boucle for for nom in nom1 nom2 nom3 … nomn do liste_de_commandes done La liste de commandes liste_de_commandes est exécutée n fois en affectant à chaque fois à la variable nom une nouvelle valeur prise dans la liste nom1 nom2 nom3 … nomn.. plus de deux arguments". Janvier 2002 ISET Nabeul .. un argument".39 Initiation à l’utilisation du système d’exploitation Unix Commandes Toutes les commandes Unix sont utilisables dans un script." ou liste_de_commandes un Return .. NOTE L'état de retour d'une liste_de_commandes est celui de la dernière commande de la liste. une ou plusieurs commandes de liste_de_commandes utilise la valeur de nom .. Cependant il est possible d'avoir des exécutions conditionnelles et des boucles. Exemple: cd /user/lambda/textes for fic in t1 t2 do chmod ugo+x $fic done Sélection case case $variable in val1) liste_de_commandes_1. la liste de commandes correspondante est exécutée. deux arguments". Exemple: case $# 0) 1) 2) *) esac exécution conditionnelle if Elies Jebri in echo echo echo echo "Il "Il "Il "Il n'y y a y a y a a pas d'argument". On note liste_de_commandes une suite de commandes séparées par un". esac Si variable a l'une des valeurs val1 …valn . sinon liste_de_commandes_3 est exécutée.. *) liste_de_commandes_x. En général. Si son état de retour est 0. liste_de_commandes_2 est exécutée. val2) liste_de_commandes_2. Sinon liste_de_commandes_xest exécutée. … valn) liste_de_commandes_n.

la commande test sert à tester l'état des fichiers comparer des chaînes comparer des entiers Elle renvoie la valeur 0 pour "vrai" et 1 pour "faux" (sauf pour l'option -l) Quelques options utiles: test -f fic Renvoie 0 si le fichier fic existe et n'est pas un répertoire. test chaine1 != chaine2 Renvoie 0 si les chaînes sont différentes.ge lt le = ≠ > Renvoie 0 si l'entier n1 est ≥ à l'entier n2 < ≤ n2 [ options commande ] NOTE Est équivalent à test options commande La commande test est très utilisée dans les exécutions conditionnelles if. test chaine1 = chaine2 Renvoie 0 si les chaînes sont identiques.Initiation à l’utilisation du système d’exploitation Unix Exemple: if mkdir monrep then echo "le répertoire monrep est créé" else echo "la création de monrep a échoué" fi test options commande Suivant les options choisies. eq ne gt test n1 . Exemple: cd /user/lambda/textes if test -f t1 #équivalent à if [ -f t1 ] then echo "le fichier t1 existe" fi multi-test if if liste_de_commandes_1 then liste_de_commandes_01 elif liste_de_commandes_2 then liste_de_commandes_02 … elif liste_de_commandes_n then liste_de_commandes_0n else liste_de_commandes_x fi Elies Jebri Janvier 2002 ISET Nabeul 40 .

il arrive qu'un script ait besoin de se terminer ailleurs qu'à sa dernière ligne. il faut employer la commande exit. exit code_retour Elies Jebri Lorsqu'un script exécute sa dernière ligne. Dans ce cas. Exemple: echo -n "Quel est votre nom:" read lenom echo "Votre nom est: "$lenom La variable lenom contient la chaîne de caractères tapée par l'utilisateur. l'usage est de mettre un exit 1. read var Permet d'arrêter le déroulement du script dans l'attente d'une donnée au clavier. Le script peut ainsi tenir compte de ces options. Exemple: Janvier 2002 ISET Nabeul . Consulter la documentation officielle. Si la fin d'éxécution que l'on a programmé est due à la détection d'une erreur. Attention ce que l'exécution de Pour éviter le risque de boucle infinie il faut impérativement que le comportement de l'exécution de liste_de_commandes_1 évolue!! Quelques commandes utiles dans les scripts expr expression Evalue expression. getopts Permet de connaître les options qui ont été données lors du lancement de l'éxécution du script. Si on omet code_retour exit est équivalent à exit 0. Cette commande comprend de nombreuses options et a une syntaxe possible de expression très riche. Attention Boucle until Pour éviter le risque de boucle infinie il faut impérativement que le comportement de l'exécution de liste_de_commandes_1 évolue!! until liste_de_commandes_1 do liste_de_commandes_2 done liste_de_commandes_2 est exécutée jusqu'à liste_de_commandes_1 ait un état de retour 0. liste_de_commandes_2 est exécutée. Le code retour du script est donc un 0. Le déroulement du script reprend dès que l'utilisateur a tapé un Return . il exécute automatiquement un exit 0. Cependant.Initiation à l’utilisation du système d’exploitation Unix Exemple: if [ $# = then echo elif [ $# then echo elif [ $# then echo else echo fi Boucle while 41 "0" ] "Il n'y a pas d'argument" = "1" ] "Il y a un argument" = "2" ] "Il y a deux arguments" "Il y a plus de deux arguments" while liste_de_commandes_1 do liste_de_commandes_2 done Tant que l'exécution de liste_de_commandes_1 a un état de retour d'exécution 0.

Initiation à l’utilisation du système d’exploitation Unix echo -n "Quel est votre nom:" read lenom if [ $lenom ] then echo "Vous n\'avez pas repondu" exit 1 fi echo "Votre nom est: "$lenom Elies Jebri Janvier 2002 ISET Nabeul 42 .