Aide-mémoire Unix : Généralités


Table des matières de chapitre

  1. Historique d'Unix
  2. Conventions de notations
  3. Caractéristiques et composants d'Unix
  4. Système de fichiers
  5. Syntaxe des commandes
  6. Début et fin de session, mot de passe
  7. Touches spéciales et clavier Sun
  8. Outils d'aide et d'information
  9. Forums Usenet/News
  10. Les shells
  11. Prologues et épilogues
  12. Rappel et édition des commandes
  13. Alias

1. Historique d'Unix

Quelques dates


2. Conventions de notations dans ce document

Nous utiliserons, dans ce support de cours, les conventions typographiques suivantes :
En police de caractère machine à écrire (police "Courier" à espacement fixe)
Texte qui doit être entré tel quel au clavier (ex: "ls")
En itallique
Vous devez substituer vous-même l'information indiquée
(ex: "cp fich_source fich_destination")
Entre accolades { }
Eléments optionnels (ex: "ls {-al} {path}")
Entre < >
Touche du clavier ou combinaison de touches (ex: <CR>, <ctrl-C>)
Entre [ ]
Origine, au sens étymologique, des mnémoniques de commandes et des options
(ex. pour la commande "rm" : [remove])
Texte souligné
Liens hyper-texte vers d'autres documents (exploitables depuis browser WWW)


3. Caractéristiques et composants d'Unix

Un système d'exploitation est un ensemble de programmes qui contrôlent et organisent l'usage des ressources d'un ordinateur. Ces ressources consistent en composants matériels (hardware) tels que processeur, mémoire, disques, imprimantes, terminaux... et en logiciels d'application spécifiques (software).

Quelques caractéristiques essentielles du système d'exploitation Unix :

Unix se compose principalement de :
  1. Noyau d'exécution (kernel) (partie du système chargée en mémoire vive s'occupant de la gestion des processus, de la mémoire, des entrées/sorties)
  2. Système de gestion de fichiers hiérarchisé
  3. Interpréteurs de commandes (shells)
  4. Commandes et utilitaires (programmes exécutables externes au shell)
  5. Gestionnaire de processus (multi-tâches, multi-utilisateurs)
  6. Services de communication (basés sur le protocole internet TCP/IP)
S'ajoute à Unix, sur une station de travail, un environnement graphique (système de fenêtrage) basé sur X-window composé de :
  1. Serveur X-window
  2. Librairies et widgets Motif
  3. Gestionnaire de fenêtre (p.ex. CDE Window Manager)
  4. Applications graphique de base (gestionnaire de fichiers, émulateur terminal, outils de bureau...) (p.ex. outils CDE)


4. Système de fichiers

Généralités

Sous Unix, "tout est fichier" : les programmes et données de l'utilisateur, mais aussi les commandes et utilitaires-système, et même les désignateurs des périphériques d'entrée/sortie. Pour le Kernel, un fichier n'est qu'une suite de caractères identifiée par un nom. On distingue 3 types de fichiers :
  1. fichiers ordinaires : données, programmes exécutables, scripts...
  2. fichiers spéciaux : dispositifs d'entrée/sortie (écran, clavier, bande, imprimante...)
  3. répertoires (directoires) : servent à regrouper les fichiers (contiennent les références des fichiers et répertoires de niveau immédiatement inférieur : noms, adresses disque...)
Le système de fichier est une organisation logique d'un ensemble de disques physiques. L'ensemble des répertoires forme une structure hiérarchique. Le système de gestion de fichiers Unix est arborescent et n'a qu'une seule racine : "/" (root directory, sommet de la hiérarchie).

Unix contient un certain nombre de répertoires-système spéciaux (/usr, /etc, /dev, /var...). Dans l'environnement Unix ENAC-SSIE, tous les utilisateurs se trouvent sous l'arborescence /USERS/nom_utilisateur

Nom d'un fichier et path

Un fichier est désigné par son nom et par le chemin d'accès (path) menant, depuis la racine, jusqu'à son emplacement dans la hiérarchie de répertoires. Le nom de fichier est composé d'une suite de 1 à 255 caractères (seulement 14 sur les anciens Unix System V). Dans la pratique, on se limite généralement aux caractères : a-z, A-Z, 0-9, "_", "-" et "."

Toutes les commandes et applications cherchent et déposent par défaut leurs fichiers dans le répertoire courant (défini par l'utilisateur). Lorsque l'on veut accéder à un fichier qui n'est pas dans le répertoire courant, il faut faire précéder son nom du path qui est la séquence des noms de répertoires conduisant à ce fichier, chaque nom étant séparé du suivant par le caractère "/".

Caractères spéciaux dans nom de fichier et path, interprétés par le shell :

Exemples : Un path peut être "absolu" ou "relatif" :

Unix étant multi-utilisateur, le système de fichier maintient également des informations indiquant :


5. Syntaxe des commandes

Prompt

Par l'affichage de son "prompt", le shell "invite" l'utilisateur à entrer une commande. Dans l'environnement ENAC-SSIE, le prompt par défaut est du type :
[NoCommande]username@machine:/répertoire_courant>

La commande est interprétée puis exécutée lorsque l'utilisateur presse la touche <CR>.

Forme d'une commande

prompt> verbe {-option(s)} {paramètre(s)} <CR>

Notations spéciales

Les notations ci-dessous sont valables en C-shell et en Bourne-shell
commande ... \<CR>
continuation de la même commande
Lorsqu'une commande doit s'étendre sur plusieurs lignes, on utilise le caractère d'échappement "\" juste avant de passer à la ligne avec <CR>
commande ... # commentaire
Ce qui suit le caractère # n'est pas interprété (commentaire)
commande1 ; commande2
On peut introduire plusieurs commandes sur la même ligne en les séparant par ";". Elles s'exécuteront séquentiellement dans le shell courant.
Exemple : cd projet2 ; ls -l *.txt
(commande1 { ; commande2} )
Entourée(s) de parenthèses (command grouping), la(les) commande(s) s'exécutera(ont) dans un shell-fils et le shell principal ne sera pas affecté.
Exemple : (cd projet2 ; ls -l *.txt). Dans ce cas, contrairement à l'exemple précédent, le répertoire par défaut du shell principal ne sera pas modifié.
commande1 && commande2
N'exécute commande2 que si commande1 s'est bien déroulée (a retourné variable $status=0)
commande1 || commande2
N'exécute commande2 que si commande1 s'est mal terminée (a retourné variable $status=1)

Implémentation des commandes

Du point de vue interne, les commandes Unix sont implémentées de l'une ou l'autre façon suivante :


6. Début et fin de session, mot de passe

Pour qu'un utilisateur puisse travailler sur un système Unix, il doit posséder un compte mis en place par l'administrateur-système (root). Les attributs de ce compte sont notamment définis dans le fichier-système /etc/passwd : username (nom d'utilisateur), password (mot de passe encrypté), uid (No d'utilisateur), gid (No de groupe), champ gecos (infos. sur l'utilisateur), home (path de son répertoire principal), shell par défaut. L'éventuelle appartenance de l'utilisateur à des groupes secondaires et définie dans le fichier-système /etc/group.

L'environnement Unix ENAC-SSIE étant géré de façon centralisée, c'est auprès du Service informatique (ENAC-SSIE) que vous vous adresserez notamment pour :

Le mécanisme du login identifie l'utilisateur par son username et son password (veillez à introduire ces éléments en respectant les minuscules et majuscules) puis démarre une session de travail en lançant un shell.

Sur stations Sun ENAC-SSIE

Début de session :
  1. enclencher l'écran et bouger la souris (pour "réveiller" le système d'économie d'écran)
  2. puis entrer, dans la zone "Please enter your username:", son username suivi de <CR>
  3. puis entrer "à l'aveugle", dans la zone "Please enter your username:", son password suivi de <CR>
  4. le système de fenêtrage est alors automatiquement démarré (serveur X11, gestionnaire de fenêtres CDE/Motif et "clients" X11 définis par votre "home session")
  5. on peut ensuite ouvrir des fenêtres terminal supplémentaires ou toutes autres applications (à partir du "root-menu" ou du "front panel" CDE...)
Fin de session :
  1. sortir proprement de toutes les applications ouvertes (en sauvant fichiers si nécessaires)
  2. dans le root-menu, choisir "Log out..." (ou presser sur le bouton "EXIT" du "front panel")
  3. éteindre l'écran de la station mais laisser l'unité centrale enclenchée (Unix continue de fonctionner pour d'autres utilisateurs éventuellement connectés à distance sur la même machine !)

Depuis un terminal

Début de session :
  1. se connecter sur la machine, c-à-d. passer la commande : "telnet nom_machine <CR>" (p.ex. "telnet dgrsun15")
  2. puis introduire son "username" et "password" lorsque le système vous y invite
Fin de session :
  1. commandes exit, logout ou <ctrl-D>
  2. éteindre le terminal

Arrêt d'un système Unix

Il faut lancer une procédure d'arrêt spéciale ("shutdown") avant d'éteindre le système, procédure que seul l'administrateur-système (root) est autorisé à exécuter. L'une des tâches importantes de cette procédure est le vidage des buffers-mémoire sur disque (commande sync), faute de quoi le système de fichiers risque d'être corrompu. Donc n'arrêtez (ou ne redémarrez) jamais vous-mêmes un système Unix !

Mot de passe

Le mot de passe est strictement personnel. Il protège l'accès au compte de l'utilisateur (système de fichiers) et au réseau de machines. Il faut le changer périodiquement (combiner caractères de l'alphabet minuscules et majuscules avec chiffres et caractères spéciaux) et ne jamais utiliser de mots du langage courant (noms, prénoms, mots du dictionnaire...). La procédure de changement de mot de passe, dans l'environnement NIS+ ENAC-SSIE, est la suivante dans une fenêtre d'émulation terminal (en gras, ce que vous devez frapper, mais notez que les mots de passe sont entrés "à l'aveugle", c-à-d. sans écho à l'écran des car. frappés) :

nispasswd
nispasswd: Changing password for username
Enter login(NIS+) password: ancien_mot_de_passe
New password: nouveau_mot_de_passe
Re-enter new password: nouveau_mot_de_passe
        NIS+ password information changed for username
        NIS+ credential information changed for username

Dans un environnement Unix standard, on utiliserait la commande passwd.


7. Touches spéciales et clavier Sun

Caractères spéciaux

L'effet de la plupart de ces caractères spéciaux peut être (re)défini avec la commande stty (voir leur définition avec la commande "stty -a").

Clavier Sun

Sur clavier Sun "Type 5 Suisse-romand", pour accéder aux caractères spéciaux notés au bas à droite de certaines touches, utiliser simultanément la touche <AltGraph> (située deux touches en-dessous de la touche <CR>). Exemple : pour obtenir le caractère "|" (pipe), frapper <AltGraph-1>

Sous Motif, les raccourcis-clavier de type <Alt+Fi> s'obtiennent par la combinaison de la touche <diamant> (de part et d'autre de la touche <espace>) avec les touches de fonction <Fi>


8. Outils d'aide et d'information

Introduction à CDE

L'utilisateur débutant, souhaitant se familiariser avec l'environnement CDE (Common Desktop Environment) et ses outils de base trouvera toutes les informations nécessaires en parcourant le "Help Viewer" (à lancer à partir du "front panel" CDE, avant dernière icône à gauche icône Poubelle).

Manuel Unix

Le "manuel Unix" est le système interactif d'aide en-ligne standard du monde Unix. Les pages d'information Unix sont subdivisées en sections :

Sous Solaris 2 (Unix System V) :

  1. commandes utilisateur
    1b. commandes compatibilité SunOS/BSD
    1c. commandes communication
    1m. commandes d'administration
    1s. commandes spécifiques SunOS
  2. appels systèmes
  3. fonctions librairie C
  4. formats de fichiers
    4b. diverses man-pages
  5. environnements, tables et troff macros
  6. jeux et démos
  7. fichiers spéciaux
  8. -
  9. informations sur device drivers
    n. nouveau
Sous SunOS 4 (Unix BSD) :
  1. commandes utilisateur
  2. appels systèmes
  3. bibliothèques
  4. fichiers spéciaux, périphériques
  5. formats de fichiers
  6. jeux et démos
  7. informations diverses
  8. commandes d'administration
Commandes
man {-s No_Section} sujet (Solaris 2)
man {No_Section} sujet (SunOS 4)
Accès au manuel concernant sujet (pages affichées à l'aide de la commande more). Si on ne précise pas No_Section, man affiche la première référence trouvée de sujet. La documentation de chaque sujet comporte un résumé repéré dans le texte par NAME.
(Ex: "man passwd", "man -s 4 passwd")
man -s No_Section Intro (Solaris 2)
man No_Section Intro (SunOS 4)
Liste de tous les sujets documentés dans la section spécifiée
man -k mot_clef ou
apropos mot_clef
Recherche par mot clefs : affiche les références de toutes les pages du manuel contenant des informations relatives à mot_clef (ex: "man -k passwd"). Les "cat files" doivent avoir été créés par l'administrateur (commande catman)
man -f sujet ou
whatis sujet
Affiche les "résumés" de toutes les pages du manuel traitant de sujet (ex: "man -f passwd")
La recherche des man-pages s'effectue dans les répertoires désignés par la variable d'environnement MANPATH. Les options -M et -f de la commande man permettent de modifier ce comportement.
xman
Version X-window du manuel
which commande
Indique quel fichier sera exécuté si l'on lance commande : which nous informe s'il s'agit d'un alias ou d'un exécutable se trouvant dans l'un des répertoires spécifiés dans la variable d'environnement PATH.
whereis commande
Indique emplacement de tous les fichiers relatifs à commande : exécutables, sources et man-pages
Vous pouvez aussi accéder au Manuel Unix depuis Netscape ou Mosaic en cliquant ici.

Les commandes internes aux shells (built-in) sont décrites dans les pages relatives à ces shells (voir "man csh", "man sh"...).

Pour visualiser/imprimer des fichiers de man-page :

nroff -man fichier_man_page | more
Affichage à l'écran d'un fichier de man-page
man sujet { | col -b } | commande d'impression
Impression de qualité moyenne
groff -man fichier_man_page | commande d'impression
Impression de plus haute qualité (rechercher les fichiers sources des man-pages dans les différents répertoires pointés par var. d'env. MANPATH)

AnswerBook

Outil propriétaire de Sun donnant accès à toute la documentation Sun (système d'exploitation, compilateurs, autres produits...). On ne peut y accéder que depuis une station graphique (act. uniquement sous CDE ou OpenWindows). Le lancer depuis le root-menu du gestionnaire de fenêtres (sous-menu Programs) ou depuis le front panel CDE ("tirroir" au-dessus de l'icône se trouvant à gauche de la Corbeille).

Navigateur WWW (Netscape...)

Outil "hypermédia" (hypertexte et multimédia) de navigation à travers le réseau Internet mondial, permettant l'affichage de texte, images, vidéo, son... et offrant un accès transparent aux services (protocoles) : Le lancement du navigateur (browser) Netscape sur les stations ENAC-SSIE s'effectue depuis le root-menu (dans le sous-menu "Applications DGR"). (Remarque : l'application Netscape est aussi disponible de façon native sur plateformes Macintosh et MS-Windows). Sur terminaux alphanumériques, il existe divers navigateurs (lynx...) permettant également d'accéder au monde WWW.


9. Forums Usenet/News

Généralités

Les forums ou conférences électroniques Usenet/News constituent une immense base de données de messages groupés par thèmes d'intérêt ("newsgroups"). L'utilisateur "s'abonne" aux thèmes de discussion de son choix (actuellement plusieurs milliers de newsgroups internationaux différents). L'utilisateur est informé de l'arrivée de nouveaux messages ("news"). A la différence de la messagerie électonique (E-mail), l'auteur d'un message ne connaît à priori pas les noms de ses lecteurs. Les messages sont distribués par innondation progressive, de machine en machine ("serveurs de news"), dans le monde entier via le réseau "Internet". Les messages ne sont conservés sur les serveurs que pendant une durée limitée.

Il existe plusieurs applications-clientes de lecture des news. Les fonctions offertes sont, entre autres : parcourir la liste des newsgroups, s'abonner ou se désabonner à un newsgroup, afficher, imprimer ou archiver dans un dossier une news, marquer une news comme étant lue, rédiger et "poster" une nouvelle news ou une réponse ("followup"), répondre par E-mail à l'auteur d'une news...

Lecteurs de news

Parmi les applications les plus utilisées dans le monde Unix, citons : La plupart des lecteurs de news (sauf mosaic) font usage du fichier ~/.newsrc qui contient les informations relatives aux différents forums auxquels l'utilisateur à souscrit (numéros des articles qui ont été lus...). Initialement, ce fichier n'existe pas et vous pouvez gagner du temps en le créant à la main en introduisant, à raison d'une ligne par forum, le nom des forums qui vous intéressent, par exemple :
       epfl.general
       epfl.petites-annonces
       epfl.comp.unix
Ne touchez ensuite plus à ce fichier, le lecteur de news s'en charge ! Il y ajoutera p.ex. les forums auxquels vous souscrirez ultérieurement...

Classification des forums

Liste de tous les forums

On peut accéder à la liste de tous les newsgroups internationaux et des newsgroups locaux epfl, ch.unil et cern en cliquant ici.

Poster des news ?

Faites vos premiers essais dans le newsgroup epfl.test qui est prévu pour cela. Consultez le document FAQ (Frequently Asked Questions) du forum avant de poster un article sur une question triviale (vous y trouverez la plupart des réponses). Si vous désirez adresser une réponse, vous avez le choix entre poster un "followup" (si cela intéresse tout le monde) ou une réponse e-mail (reply) directe à l'auteur.

Principaux forums traitant d'Unix

Il suffit de cliquer ci-dessous sur le nom du forum pour y accéder :


10. Les shells

Le shell est l'interpréteur de commandes sous Unix. Interface entre l'utilisateur et le système d'exploitation Unix, il procède à la reconnaissance des commandes (interprétation/expansion des métacaractères...) et leur passe la main pour exécution. C'est le programme dans lequel se trouve automatiquement l'utilisateur une fois qu'il est connecté. Sur station, un shell est démarré dans chaque fenêtre d'émulation terminal. Le shell est aussi un environnement de programmation (voir chapitre Shell-scripts).

Plusieurs shells sont disponibles sous Unix. Ils forment deux familles :

Le document pointé par ce lien décrit les grandes différences entre les principaux shells : usage des variables, structures de contrôle, built-in commands qui leurs sont propres... L'usage d'un shell particulier relève d'un choix très personnel. On peut démarrer un nouveau shell simplement en le lançant par son nom (tcsh, csh, sh...). Lorsque l'on passe la commande exit, on retourne dans le shell précédent.


11. Prologues et épilogues

L'environnement-utilisateur peut être personnalisé. Le Shell interactif utilisé au DGR est le T-shell (tcsh) qui utilise le même mécanisme de "prologue" et "épilogue" que le C-shell.

Lors de l'initialisation d'un T-shell (p.ex. chaque fois que vous ouvrez une fenêtre d'émulation terminal), 2 scripts s'exécutent avant de vous ayez la main (fichiers-prologues ou fichiers de startup) :

  1. le prologue-système, identique pour tous les utilisateurs (définition du PATH, de diverses autres var. d'environnement et d'alias de commandes spécifiques à l'environnement Unix ENAC-SSIE...), puis
  2. le prologue propre à l'utilisateur : script ~/.cshrc
Par contre, les mécanismes suivants sont désactivés dans l'environnement Unix ENAC-SSIE : Voir chapitre prologue .cshrc pour davantage de détails.


12. Rappel et édition des commandes

Possibilités offertes par le T-shell pour reprendre/éditer les dernières commandes : Usage de l'historique de commandes (en C-shell et T-shell) :

set history=n
Défini le nombre de commandes qui seront mémorisées dans l'historique
history
Affiche la liste des n dernières commandes passées (mémorisées dans l'historique)
!! {chaîne}
Rappel et exécution de la commande précédente {en la complétant par chaîne}
!n {chaîne}
Rappel et exécution de la commande de No n {en la complétant par chaîne}
!-n {chaîne}
Rappel et exécution de la n-ème commande précédente {en la complétant par chaîne}
!chaîne
Rappel et exécution de la plus récente commande commençant par chaîne
!?chaîne?
Rappel et exécution de la plus récente commande contenant chaîne
^chaîne1^chaîne2
Dans la dernière commande passée, remplace chaîne1 par chaîne2 et exécute la commande ainsi modifiée
...:p
En faisant suivre les commandes ci-dessus par :p, affiche la commande sans l'exécuter
!$
Récupère le dernier argument de la commande précédente
(ex : "more toto.dat" puis "vi !$")
!*
Récupère tous les arguments de la commande précédente
!:n
Récupère le n-ème argument de la commande précédente
!^
Récupère le 1er argument de la commande précédente


13. Alias

Le mécanisme des alias (surnoms) offre à l'utilisateur la possibilité de définir (ou redéfinir) des commandes. L'exécution de l'alias prime sur la commande Unix originale. La "durée de vie" d'un alias étant limitée à celle du shell dans lequel il a été défini, les alias que l'on veut utiliser ultérieurement dans d'autres sessions doivent être définis dans le fichier-prologue ~/.cshrc.

Création et destruction d'un alias :

alias nom_alias 'commande {options} {paramètres}' (en C-shell)
alias -x nom_alias='commande {options} {paramètres}' (Korn-shell)
Crée un alias nom_alias pour la commande spécifiée (avec ses éventuels options et paramètres). Exemple : alias dir 'ls -alL | more'
nom_alias
Exécute commande correspondante
(dans le cas de l'ex. ci-dessus, simplement frapper : dir)
alias {nom_alias}
Affiche la définition de l'alias spécifié sur la sortie standard. Sans paramètres, affiche la liste de tous les alias définis
unalias nom_alias
Détruit l'alias spécifié
Passage d'arguments dans un alias (C-shell) : Exemple :

si on a défini : "alias sg 'sort \!:1 | grep \!:2 | more'"
la commande : "sg fichier chaîne" a le même effet que
la commande : "sort fichier | grep chaîne | more"

Si une commande a été redéfinie par un alias de même nom, il reste possible d'accéder à la commande originale en la faisant précéder du caractère "\". Exemple : si la commande "rm" a été redéfinie par "alias rm 'rm -i'", on peut accéder à la commande originale en frappant : "\rm"


© Jean-Daniel BONJOUR, ENAC-IT, EPF-Lausanne. Révision: 23.7.96.