Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Gildas PERROT
Institut de Génie Biomédical
Local A630.5.5
Tél : 340-4184
Fax : 340-4611
E-mail : perrot@grbb.polymtl.ca
École Polytechnique
Octobre 1994
1- Présentation d'UNIX
1.1- Historique
L'histoire d'UNIX débute dans les années 60 et peut être résumée de la façon suivante :
- 1966 : les laboratoires Bell (filiale d'AT&T) ont besoin pour leur usage interne, d'un
système d'exploitation pour le traitement de textes et le développement d'applications.
Ken Thomson et son équipe sont chargés de ce travail.
- 1973 : nécessité de rendre UNIX portable sur d'autres ordinateurs. Denis Ritchie réécrit
alors entièrement UNIX en langage C qui a d'ailleurs été créé dans ce but précis. Ceci
explique les liens profonds entre le langage C et UNIX.
- 1974 : AT&T propose les 1ères licences aux universités ce qui apporta un
enrichissement en extensions et en utilitaires variés à UNIX (en particulier, l'Université
de Berkeley). Cette date correspond au début de la popularité et de la diversité d'UNIX.
Ce qui a fait le grand succès d'UNIX, c'est le fait d'être un système d'exploitation multi-
tâches et multi-utilisateurs. En effet, sous UNIX, le temps d'utilisation du processeur de
l'ordinateur est réparti entre différentes tâches ce qui se traduit par l'exécution simultanée
de programmes. D'autre part, UNIX traite les commandes de plusieurs utilisateurs en
même temps. Dans ce contexte, il doit répartir les ressources entre les différentes tâches
et utilisateurs de façon transparente pour ces derniers.
C'est par exemple le courrier électronique ou les transferts de fichiers dont l'utilisation est
expliquée plus loin.
On suppose ici, que l'utilisateur a déjà été enregistré sur le système et que donc, son
identité est présente dans des fichiers particuliers gérés par l'administrateur du système.
La connexion logique doit avoir lieu entre le terminal (écran + clavier) et l'ordinateur sur
lequel on veut travailler. Le terminal peut être aussi un autre ordinateur (stations UNIX,
PCs, Macintosh, etc.). Cette connexion dépend de la liaison matérielle entre le terminal et
l'ordinateur. Dans le cas le plus simple de la liaison directe, il suffit d'allumer le terminal.
C'est durant cette étape que l'utilisateur va devoir s'identifier auprès du système. Cette
identification a lieu de la façon suivante :
- affichage du message login: après lequel il faut rentrer son nom d'utilisateur (ou
logname) ;
- affichage du message Password: après lequel il faut rentrer son mot de passe. Celui-
ci n'est pas affiché pendant la frappe pour éviter bien sûr que quelqu'un d'autre puisse
l'apercevoir.
Puis, souvent, apparaît un message demandant de spécifier le type de terminal utilisé (ex
: vt100) et ceci de façon à ce que les éditeurs fonctionnent correctement ; si ce message
n'est pas affiché, un type de terminal est pris par défaut.
Après la connexion, différents messages en provenance de l'administration du système
(mots du jour, présence de courrier dans la boîte à lettres, etc.) sont affichés.
L'utilisateur est effectivement prêt à travailler quand il reçoit l'invite du système
consistant en un marqueur en début de ligne. Ce marqueur est variable selon les machines
(ex : $ ou nom_utilisateur@nom_machine>)
Le changement de mot de passe s'effectue en entrant d'abord le mot de passe actuel puis
en entrant le nouveau mot de passe que l'on doit retaper pour confirmation.
perrot@von-neumann>yppasswd
Changing NIS password for perrot on von-neumann.
Old password:
New password:
Retype new password:
NIS entry changed on von-neumann
Des personnes peuvent essayer d'accéder de façon illégale à un système UNIX. Un des
moyens dont ils disposent est d'entrer sur un compte utilisateur en déterminant son mot
de passe. Pour cela, ils utilisent des chaînes de caractères appartenant à des dictionnaires
ou correspondant à des informations personnelles sur l'utilisateur (prénom, nom, numéro
de téléphone, etc.). Il est donc nécessaire que votre mot de passe respecte certaines règles
de sécurité :
- il doit posséder au moins 7 caractères et contenir au moins une lettre majuscule, un
chiffre et un caractère de ponctuation, et ceux-ci à l'intérieur et non en début ou fin de
mot de passe. Généralement, seuls les 8 premiers caractères sont pris en compte ;
- il ne doit pas contenir des données relatives à votre identité comme votre nom
d'utilisateur ou une information livrée par la commande finger (voir plus loin) ;
- il ne doit pas appartenir à des dictionnaires, tel quel ou sous sa forme canonique (c'est à
dire, épuré de tous les caractères non-alphabétiques), à moins qu'il contienne des
majuscules autres que le premier caractère ;
- il ne doit pas contenir des répétitions de caractère ;
- il doit être suffisamment simple pour s'en rappeler ; il ne faut pas le noter sur papier ou
dans un fichier ni le donner à quelqu'un d'autre.
Ex. de "bons" mots de passe (2 mots courts séparés par un ou plusieurs caractères de
ponctuation ou chiffres) : ble!1the ou si%@sol.
Celle-ci dépend du type de session qui a été ouverte. Si un environnement graphique (tel
que celui créé par X Windows, l'environnement multi-fenêtrage) est en place, il existe
généralement un menu "logout" (ou "exit") qui permet de quitter cet environnement et
ainsi de terminer la session de travail. Parfois aussi, ce menu ne permet simplement que
de quitter l'environnement graphique. Il faut ensuite procéder à l'étape de déconnexion ci-
dessous.
En l'absence d'un environnement graphique, une simple commande telle que logout ou
exit, entrée après l'invite du système, suffit pour terminer la session de travail.
L'utilisateur peut taper des commandes lorsqu'il se trouve au niveau commande, c'est-à-
dire lorsque l'invite du système apparaît. Toute commande entrée sera interprétée par
l'interpréteur de commandes (ou shell). Le terme shell veut dire coquille pour exprimer
l'idée d'interface entre utilisateurs et système UNIX et a été donné par opposition au
noyau du système.
Il existe des dizaines d'interpréteurs de commandes sous UNIX mais les 2 principaux
(qu'on retrouve sur la plupart des systèmes) sont le Bourne-shell (sh) et le C-shell (csh).
Le choix de l'interpréteur activé à la connexion est fait à l'enregistrement de l'utilisateur
dans le système. Dans la plupart des cas, c'est le C-shell.
À noter que tous les shells font la distinction entre les lettres minuscules et majuscules
pour les commandes et les noms de fichiers contrairement au MS-DOS.
Si on veut de l'aide sur les règles d'utilisation ou encore sur les fonctionnalités d'une
commande, on peut utiliser l'aide en ligne grâce à la commande man (comme MANual
pages) de la façon
suivante : man nom_commande
Ex :
man ls
man man
Note : l'affichage des "manual pages" se fait à l'aide de la commande more, afficheur
page par page dont on verra l'utilisation plus loin. Pour faire avancer l'affichage, il suffit
de taper la barre d'espace.
Si on ne connaît pas la syntaxe de la commande, il est possible de faire une recherche par
mot-clé dans le système de "manual pages") à l'aide de la commande suivante :
man -k mot-clé
Généralement, les commandes lisent l'entrée standard et/ou écrivent sur la sortie
standard. Normalement, l'entrée standard est le clavier et la sortie standard est l'écran. Il
est possible de rediriger ces entrée et sortie standards vers des fichiers.
Pour que le résultat d'une commande soit rangé dans un fichier au lieu d'apparaître à
l'écran, il faut utiliser la syntaxe :
nom_commande [options] [arguments] > fichier_sortie
On voit que si le fichier de redirection existe déjà, son contenu est écrasé avec la
redirection >. Si on veut que ce contenu soit préservé et y ajouter des résultats d'une
commande, il faut utiliser la redirection >>.
Ex :
wc (imprime le nombre de lignes, de mots et de caractères fournis à l'entrée standard)
ls -l fic? > poub ; wc < poub
Dans le même ordre d'idées, on peut utiliser le mécanisme de «pipe» qui permet de
prendre la sortie standard d'une première commande et de la rediriger sur l'entrée
standard d'une 2ème commande. La syntaxe est :
nom_commande1 [options] [arguments] | nom_commande2
[options] [arguments]
Ex :
ls -l fic? | wc (raccourci de la série de redirections vu précédemment)
ls /etc | more
L'unité d'information gérée par le système est le fichier et celui-ci peut contenir n'importe
quoi et être éventuellement vide. Selon leur utilisation, les fichiers sont appelés
répertoires («directories») ou fichiers tout court («files»). Un répertoire est un catalogue
de fichiers contenant leurs caractéristiques comme les droits d'accès, la taille, la date de
création, etc.
L'ossature du système est une structure arborescente de fichiers et de répertoires. Chaque
utilisateur peut ajouter dans son coin de nouvelles branches.
/ est le nom du répertoire racine («root») de l'arbre.
vision
users
perrot
fic2
Le nom absolu d'un fichier est formé de tous les noms de répertoires traversés depuis la
racine pour l'atteindre, noms séparés par des obliques avant / (contrairement au MS-
DOS qui utilisent des obliques arrière \). Chaque fichier a un nom absolu unique dans le
système.
Ex : 2 fichiers de même nom, fic1, peuvent coexister s'ils sont dans 2 répertoires
différents et ont donc un nom absolu différent :
/home/vision/users/perrot/fic1 et
/home/vision/users/perrot/rep1/fic1.
Chaque fichier (ou répertoire) possède un ensemble d'attributs définissant les droits
d'accès à ce fichier pour tous les utilisateurs du système.
En combinant les 3 types d'accès et les 3 classes d'utilisateurs, il y a donc 9 droits d'accès
différents qui existent sous UNIX.
Pour cela, on utilise la commande ls -l. Le 1er caractère spécifie si le fichier est un
répertoire (caractère d) ou un fichier tout court (caractère -). Les 9 caractères suivants
identifient les droits d'accès (présence du droit si lettre r, w ou x ; absence de droit si
caractère -) et sont structurés de la façon suivante :
Lecture
Écriture
Exécution
Ex :
perrot@von-neumann>ls -l
total 7
-rw------- 1 perrot 49 Sep 18 12:37 fic
-rw------- 1 perrot 50 Sep 18 12:35 fic1
-rw------- 1 perrot 50 Sep 18 12:37 fic2
-rw------- 1 perrot 50 Sep 18 12:37 fic3
-rw------- 1 perrot 51 Sep 18 12:38 fic33
Seul, le propriétaire d'un fichier peut modifier ses droits d'accès. Pour cela, il utilise la
commande chmod avec la syntaxe suivante :
chmod mode nom_fichier
mode indique de quelle façon les droits d'accès doivent être modifiés. Il se décompose en
[qui] op accès.
qui (optionnel) indique quelles classes sont concernées par la commande chmod et est
composé de 1 ou plusieurs lettres parmi u, g et o. Si aucune classe n'est spécifiée, toutes
les classes sont concernées.
op peut être :
+ pour ajouter des droits d'accès
- pour enlever des droits d'accès
accès est une combinaison des lettres r, w et x qui spécifient les types d'accès.
Note : les droits du propriétaire d'un fichier sont uniquement déterminés par la partie
propriétaire de la protection (même s'il est membre d'un groupe).
Au moment où l'utilisateur crée un fichier, des droits d'accès par défaut sont donnés à ce
fichier. C'est la commande umask qui permet de définir la protection maximale que l'on
donne par défaut aux nouveaux fichiers. La syntaxe est la suivante : umask masque.
masque est une valeur octale qui joue le rôle de masque sur les droits d'accès d'un
fichier à sa création. Les droits d'accès sont déterminés sont obtenus après l'opération
logique suivante : mode & (~masque) avec &, le ET logique et ~ le NON logique.
En standard, une commande shell de création de fichier, comme cat >
nom_fichier (ce fichier n'existant pas) initialise le mode de ce fichier à rw-rw-rw-.
C'est à ce mode par défaut qu'est appliqué le masque.
Ex :
umask 22 (le masque est ici, 022, soit en codage binaire, 000 010 010 => les fichiers
créés auront la protection rw-r--r--).
umask 77 (le masque est ici, 077, soit en codage binaire, 000 111 111 => les fichiers
créés auront la protection rw-------).
Avec cette recette, si le fichier existe déjà, son précédent contenu est détruit.
La procédure ci-dessus est simple mais manque de fonctionnalités en ce qui concerne
l'édition du fichier (correction d'erreurs impossible sur les lignes précédentes).
rm nom_fichier
Note :
Quelquefois, le système demande confirmation avant d'effacer un fichier et si la réponse
de l'utilisateur ne commence pas par 'y' ou 'Y' alors le fichier est préservé. Toutefois, la
commande Undelete sous DOS n'existe pas sous UNIX. Il est en effet impossible de
récupérer un fichier effacé et ceci rend les sauvegardes sur bandes magnétiques
cat nom_fichier
more nom_fichier qui permet un affichage page par page (h pour connaître les
commandes possibles de more, RETURN pour la ligne suivante, ESPACE pour la page
suivante et q pour terminer l'affichage).
cp nom_fichier1 nom_fichier2
cp nom_fichier1 nom_répertoire
L'adresse d'une machine connectée au réseau Internet est unique et s'écrit sous 2 formats
possibles :
- numérique : xxx.xxx.xxx.xxx. (4 nombres correspondants à un code 32 bits = 4 octets ;
chaque nombre étant donc compris entre 1 et 255) ;
Note : le début de cette adresse donne le numéro du réseau alors que la fin de l'adresse
correspond au numéro de la machine sur ce réseau.
Ex :
perrot@von-neumann>hostname
von-neumann
6.3- Adresse d'un utilisateur
L'adresse d'un utilisateur sur une machine (son adresse e-mail, voir plus loin) est elle
aussi unique et s'écrit : nom_utilisateur@domaine_internet ou parfois
nom_utilisateur@adresse_machine.
Ex : perrot@info.polymtl.ca.
Notes : généralement, il importe peu que les noms de machines et d'utilisateurs soient en
majuscules et minuscules (à part de rares exceptions pour certains noms d'utilisateurs).
D'autre part, il n'est pas nécessaire de spécifier le domaine internet d'une machine ou d'un
utilisateur lorsque l'on veut effectuer une requête à ces derniers si ceux-ci sont dans le
même domaine.
Chaque utilisateur a à sa disposition une boîte à lettres où sont stockées les lettres qui lui
sont envoyées par d'autres utilisateurs. Il existe différents logiciels pour lire et envoyer du
courrier électronique mais on va parler ici de l'outil standard présent sous tout système
UNIX : mail.
Ex : mail perrot
1ère ligne
2ème ligne
.
dernière ligne
^D
Ex :
perrot@von-neumann>mail
Mail version SMI 4.0 Wed Oct 13 18:37:02 PDT 1993 Type ?
for help.
Le curseur > pointe vers la lettre courante, celle sur laquelle les
commandes mail agissent par défaut. Si on tape sur la touche RETURN,
le contenu de cette lettre courante est affichée.
Les 1ères lignes, dites d'en-tête ("headers"), de la lettre donnent de l'information de
base sur la lettre et sont directement utilisées par l'outil mail (pour afficher la liste des
lettres par ex.).
En tapant une seconde fois sur la touche RETURN, la seconde lettre dans la liste (elle est
devenue la lettre courante) est affichée.
& ?
cd [directory] chdir to directory or home
if none given
d [message list] delete messages
e [message list] edit messages
f [message list] show from lines of messages
h print out active message
headers
m [user list] mail to specific users
n goto and type next message
p [message list] print messages
pre [message list] make messages go back to
system mailbox
q quit, saving unresolved
messages in mbox
r [message list] reply to sender (only) of
messages
R [message list] reply to sender and all
recipients of messages
s [message list] file append messages to file
t [message list] type messages (same as
print)
top [message list] show top lines of messages
u [message list] undelete messages
v [message list] edit messages with display
editor
w [message list] file append messages to file,
without from line
x quit, do not change system
mailbox
z [-] display next [previous] page
of headers
! shell escape
Notes :
- il est conseillé de ranger son courrier dans plusieurs fichiers spécifiques, de façon à
retrouver facilement un ancien courrier pour une consultation ultérieure, plutôt que
d'avoir un fichier mbox qui contient des dizaines de lettres sans lien entre elles ;
- des logiciels plus conviviaux (elm, pine, etc.) que mail existent souvent sur les
systèmes UNIX.
On a la possibilité, à partir d'une machine sur laquelle on a déjà ouvert une session de
travail, de se connecter à un autre ordinateur via le réseau (local ou Internet). La
commande à utiliser est la suivante :
telnet adresse_machine
Pour pouvoir se connecter, il faut bien sûr avoir un compte sur cette machine distante. Il
faut alors s'identifier de la même façon qu'on le fait pour se connecter une première fois
sur une machine. Une fois logé sur la machine distante, les commandes entrées sont
exécutées sur cette machine.
login: perrot
Password:
FTP (File Transfer Protocol) est un programme permettant de transférer des fichiers entre
2 machines.
FTP fonctionne un peu comme la commande telnet. Il faut d'abord lui fournir en
argument l'adresse de la machine avec laquelle on désire effectuer des transferts de
fichiers de la façon suivante :
ftp adresse_machine
Par contre, contrairement au service Telnet, FTP peut donner un accès (restreint) à des
machines où l'on n'a pas de compte utilisateur. Pour cela, il faut que la machine permette
ce qu'on appelle les FTP anonymes. Dans ce cas, on fournit comme nom d'utilisateur, le
nom anonymous et comme mot de passe, son adresse e-mail (ce qui permet de faire des
statistiques sur l'utilisation du site FTP). L'accès au site FTP est alors restreint puisque
que l'on n'a pas de compte utilisateur dessus. Il est possible par exemple que l'on ne
puisse que retirer des fichiers sur cette machine (généralement présents dans le répertoire
/pub).
Ex :
ftp ftp.umontreal.ca
login: anonymous
Password: adresse_e-mail
Une fois logé sur le site à l'aide de FTP, on accède aux commandes FTP quand on voit
l'invite ftp>. La liste de ces commandes est obtenue avec la commande help. Pour
obtenir de l'aide sur une commande en particulier, il faut taper la commande :
help nom_commande.
Les commandes importantes à connaître sont :
- ls (liste des fichiers du répertoire courant); les caractères génériques sont utilisables ici
aussi ;
- cd nom_répertoire (changement de répertoire) ;
- get nom_fichier : récupère un fichier sur la machine distante. Il y a possibilité
de sauver le fichier sous un autre nom sur la machine locale ;
- put nom_fichier : transfert un fichier de la machine locale à la machine distante ;
- mode de transfert : ascii (par défaut) ou binary ; en effet, en mode ascii, certains
caractères sont traduits entre 2 systèmes différents pour les rendre plus lisibles. Par
contre, pour les fichiers binaires (pas de caractères ascii), cette traduction ne doit pas
avoir lieu ;
- transfert multiple : mget et mput. Avec ces 2 commandes (dont la fonction est
identique à celle de leur équivalents, get ou put), on peut transférer plusieurs fichiers à
la fois. L'utilisation des caractères génériques est alors intéressante ;
- confirmation : prompt. Dans le cas de l'utilisation de mget et mput, le système
demande, pour chaque fichier concerné, de valider ou non son transfert. Si on veut
annuler cette demande systématique de confirmation, on utilise la commande : prompt.
Ex :
perrot@von-neumann>finger perrotg@eole.ere.umontreal.ca
[eole.ere.umontreal.ca]
Login name: perrotg In real life: Perrot Gildas
Mail to perrotg goes to perrotg@eole.ERE.UMontreal.CA
Project: Traitement d'images par methodes statistiques.
Plan:
Cours UNIX du 17 au 29 octobre.
Remarques :
- la commande finger affiche en plus du nom de la personne, le contenu des fichiers
textes .plan (plan de travail) et .project (projet sur lequel travaille cette personne)
s'ils sont présents dans le répertoire personnel de l'utilisateur ;
- pour des raisons de sécurité, certaines machines ne permettent pas l'accès par finger
aux informations concernant les utilisateurs qui y ont un compte.
Cette commande permet de vérifier s'il existe une connexion possible entre la machine où
l'on travaille et celle spécifiée en argument : ping adresse_machine.
Ex : ping von-neumann
von-neumann is alive
Elle permet aussi de déterminer l'adresse numérique d'une machine avec la syntaxe
suivante : ping -s adresse_machine (envoi d'un paquet par seconde et affichage
de la présence de réponse de la machine).
Ex :
perrot@von-neumann>ping -s vision
PING vision: 56 data bytes
64 bytes from vision (132.207.12.129): icmp_seq=0. time=2.
ms
64 bytes from vision (132.207.12.129): icmp_seq=1. time=4.
ms
UNIX offre la commande grep pour afficher les lignes de fichiers donnés en arguments et
qui contiennent un motif donné. La syntaxe à utiliser est :
grep [option] motif [nom_fichier]
Ex :
perrot@von-neumann>grep son fic?
fic1:Ceci est le fichier fic1 du repertoire personnel.
fic3:Ceci est le fichier fic3 du repertoire personnel.
options :
-v : affichent les lignes qui ne contiennent pas le motif ;
-i : ignore la distinction minuscule/majuscule dans les comparaisons.
Ex :
perrot@von-neumann>grep -i est fic?
fic1:Ceci est le fichier fic1 du repertoire personnel.
fic2:echo Il est : `date | awk '{printf "%s\n", $4}'`
fic3:Ceci est le fichier fic3 du repertoire personnel.
fic4:CECI EST LE FICHIER fic4.
perrot@von-neumann>grep -v est fic*
fic2:#!/bin/sh
fic4:CECI EST LE FICHIER fic4.
fic4:
Les éléments de l'expression peuvent être connectés par les opérateurs logiques suivants :
- négation : ! ;
- et : simple juxtaposition des éléments ;
- ou : -o ;
Dans ce cas, il est nécessaire d'entourer l'expression complète avec des parenthèses (qu'il
faut précédées d'une contre-barre pour qu'elles ne soient pas interprétées par le shell).
Note : on peut utiliser la commande grep comme filtre pour éliminer les informations
inintéressantes produites par une commande précédente comme dans l'exemple suivant :
La commande who affiche la liste des utilisateurs connectés sur la machine où l'on
travaille. Le nom d'utilisateur, le nom du terminal utilisé et la date de début de session de
travail sont fournis.
Ex :
perrot@von-neumann>who
Lartis ttyp1 Oct 23 22:25 (mistral.ERE.UMon)
perrot ttyp3 Oct 24 08:52 (San-A.grbb.polym)
Une utilisation pratique de la commande who est la commande who am i qui permet de
connaître le nom de l'utilisateur connecté à partir d'un terminal et qui l'a quitté.
Ex :
perrot@von-neumann>who am i
von-neumann!perrot ttyp3 Oct 24 08:52 (San-
A.grbb.polym)
Le but d'un éditeur de textes est de créer et de modifier des fichiers textes qui peuvent
être des documents ou des programmes sources (programmes C, Fortran, etc.).
Il existe de nombreux éditeurs sous UNIX mais les 2 éditeurs standards généralement
disponibles sont ed et vi. Le premier est un éditeur interactif fonctionnant en mode
ligne : le fichier traité n'est pas affiché à l'écran et l'utilisateur doit donc fournir des
requêtes en indiquant les adresses des lignes que l'éditeur doit traiter. On n'étudiera pas
cet éditeur vu son manque de convivialité. Il faut quand même savoir que ed est un vieil
éditeur qui a servi de référence pour d'autres éditeurs comme vi.
vi (Visual), contrairement à ed, est un éditeur pleine page puisqu'il affiche le fichier
traité sur une page d'écran (au moins 24 lignes de 80 caractères).
Pour ouvrir un fichier existant ou pour créer un nouveau fichier, il suffit d'utiliser la
syntaxe suivante : vi nom_fichier.
À l'appel de l'éditeur, on se trouve dans le mode commande. Plusieurs commandes
d'insertion de texte permettent de passer en mode insertion, alors que pour passer du
mode insertion au mode commande, on tape le caractère d'échappement ESC
(ESCAPE).
Les commandes sont nombreuses et ici, on ne verra que les plus importantes (voir en
annexe, le manuel d'utilisation de vi). Elles sont de plusieurs types :
Toutes ces commandes (sauf 0, $ et G) peuvent être précédées d'un entier qui sert de
facteur de répétition.
Note : on voit en fin de fichier, la présence de tildes (~) en première colonne de chaque
ligne : c'est pour indiquer que ces lignes ne font pas partie du fichier édité.
Toutes les commandes d'insertion de chaînes de caractères font passer en mode insertion
et doivent être terminées par le caractère ESC pour repasser en mode commande.
Ex : 3dw (détruit la fin du mot courant et les 2 mots suivants) ; dG (détruit la fin du
fichier à partir de la ligne courante y compris) ; d/fic (efface les caractères entre la
position du curseur et la 1ère chaîne fic).
Déplacer un bloc se fait par une requête d où il est placé dans un tampon. Puis, le curseur
est positionné là où on veut insérer le bloc, insertion qui se fait avec la requête p (Put)
après le curseur (ou sur la ligne suivante) ou avec la requête P avant le curseur (ou sur la
ligne précédente).
Copier un bloc se fait par une requête y (Yank), d'utilisation similaire à la commande d,
qui initialise le tampon sans ôter le bloc adressé du texte puis par une requête p ou P
d'insertion à l'endroit où le curseur a été positionné.
Pour effectuer une substitution dans tout le texte (ou seulement une partie), on peut
procéder de 2 façons :
L'éditeur vi a une mauvaise réputation : il est jugé difficile et mal commode. Cette idée
vient surtout du fait qu'aucune commande n'est disponible en mode insertion à part la
commande ESC de sortie du mode d'insertion. En particulier, on ne peut déplacer le
curseur en mode insertion. Toutefois, il ne faut pas perdre de vue que l'éditeur vi est
présent sur la plupart des systèmes UNIX et qu'il est quelque fois le seul éditeur
accessible.
Mais, si on en a la possibilité, il est préférable d'utiliser des éditeurs graphiques
(fonctionnant sous X Windows par ex.) qui permettent, entre autres, l'utilisation de la
souris et de menus.
Un des éditeurs les plus puissants en terme de fonctionnalités est emacs. De plus, il peut
être utilisé en mode texte (certains terminaux n'offrent que ce mode) ou sous
environnement graphique.
- Big Dummy's Guide to the Internet par EFF (Electronic Frontier Foundation) (version
texte disponible sur de nombreux sites FTP anonymes comme
ftp.eff.org:/pub/Net_info/EFF_Net_Guide/netguide.*) ;
- Zen and the Art of the Internet de Brendan P. Kehoe (version PostScript disponible sur
de nombreux sites FTP anonymes : ftp.cs.widener.edu:/pub/zen/zen-1.0.PS).