Vous êtes sur la page 1sur 155

Octobre 2003

Petit Manuel Unix

Jacques MADELAINE
Dpartement dinformatique
Universit de CAEN
14032 CAEN CEDEX

Ce manuel en est sa septime version. La premire dition dcrivait SMX un Unix dvelopp lINRIA pour la
machine franaise SM90. La deuxime dition est une adaptation pour SPIX, un Unix pour SM90 bas sur System
V et dvelopp par Bull. Il a t ensuite modifi et corrig pour SunOS lUnix de Sun Microsystems, puis pour Solaris. La cinquime version a t adapte pour tenir compte des particularits du systme GNU-Linux. Cette dernire
version contient un chapitre supplmentaire ddi aux accs rseau. Rappelons que presque toutes les commandes
dcrites vont fonctionner comme indiqu sur tout systme Unix commercial (Solaris, HP-UX, AIX, ...) ou libre
(Linux, OpenBSD, FreeBSD, NetBSD, ...).

Mes remerciements Sara Aubry pour sa relecture attentive et Franois Girault pour avoir fourni la mise en
tableau des commandes demacs.

Mes remerciements Davy Gigan pour mavoir pouss publier la version html en octobre 2003.

INTRODUCTION()

INTRODUCTION()

Petit manuel Unix 2002

INTRODUCTION

NOM

intro introduction to the mini manual introduction au petit manuel

DESCRIPTION

Ce manuel donne les principales commandes de Unix. Unix est une famille de systmes dexploitation ; les
commandes dcrites existent, sauf prcision contraire, sous Linux et Solaris, les deux systmes disponibles
au dpartement. Chaque commande est dcrite par trois sections :
NOM qui donne le nom de la commande, son nom en anglais (le nom Unix tant un mnmonique anglais
ne correspondant pas toujours bien avec le franais) et en franais.

SYNTAXE donne la syntaxe. Les parties entre crochets ([ ]) sont optionnelles. Les noms en caractres gras
dsignent la commande ou des options. Les arguments en italique dsignent des noms de fichiers, les autres
arguments sont en police normale.
Les arguments de contrle sont traditionnellement, sous Unix, introduits par le caractre tiret (-), et sont
composs dune seule lettre, ex. : -alx. Avec les commandes GNU est apparu la possibilit de donner
loption de contrle en format long (un mot) introduit par deux tirets ; on est oblig alors de donner les
options une par une, cela donnera sur lexemple prcdent : --all --long. Les commandes qui suivent le
standard GNU doivent avoir les options --help et --version qui donnent respectivement une petite aide en
ligne et le numro de version de la commande sans lexcuter.
DESCRIPTION est la section qui donne les effets de la commande et de ces arguments.
Les commandes sont regroupes en chapitres :
GESTION DE LACCS UTILISATEUR
login stty passwd
ACCS EN RSEAU
ssh scp
MANIPULATION DE RPERTOIRES
cd mkdir rmdir
MANIPULATION DE FICHIERS
a2ps ar basename bzip2 cat comm compress convert cp cut diff expand head tr gzip lpr more paste
pr recode sox split tail tar tee uniq wc
MANIPULATION DATTRIBUTS DE FICHIERS
chgrp chmod chown ln mv rm touch
PARCOURS DE HIRARCHIE
df du find locate whereis which
LANGAGES
cc cl f77 hugs javac pc perl php python
OUTILS DE DVELOPPEMENT
cpp cplus-dem doxygen gdb gprof grep indent javadoc ld ldd lint make nm od patch prof ranlib
size strace strip time
EXCUTION DE PROGRAMMES
echo kill killall nice nohup script sleep
DEMANDES DTATS
date file id ls ps pwd rusers tty users w who
DIVERS
bc cal expr man test
COMMUNICATION ENTRE USAGERS
mail mesg talk write
OUTILS RSEAUX
ftp sftp web
MESURES ET SURVEILLANCE DE SYSTME
arch free host lsof netstat perfmeter rup top uname uptime vmstat

Petit manuel Unix 2002

INTRODUCTION
DITEURS DE TEXTES
ae emacs vi
COMPOSEURS DE TEXTES
groff latex
OUTILS GRAPHIQUES

Petit manuel Unix 2002

INTRODUCTION
xterm, emacs, gnuplot, gv,
xedit, xfd, xlsfonts, xmag, xman, xwd, xwdtopnm, xwininfo, xxgdb,
abiword, dia, gnumeric, guppi, eog, gqview, gimp
xfm, tkdesk, mc, nautilus,
gv, xfig, xpaint, xv,
esd.
Enfin (uniquement dans la version papier) quelques pages de manuels originales de GNU pour les commandes : bash, ed, gawk, join, sed, sort.
La page de ed contient en particulier la dfinition des expressions rgulires utilises par grep.
Pour finir nous donnons la table des codes ASCII et iso-latin1 (en attendant iso-latin9), obtenue comme
page du manuel standard asciii(7) et iso_8859_1(7).

Petit manuel Unix 2002

GESTION DE LACCS UTILISATEUR

NOM

login login connexion

SYNTAXE

login [utilisateur]

DESCRIPTION

Enregistre la connexion dun utilisateur au systme. Vrifie le mot de passe et tablit lidentit de lutilisateur et celle du groupe auquel il appartient. Fait linitialisation du terminal. tablit le catalogue de travail.
Annonce la prsence de courrier. Affiche les messages du jour. Excute le fichier ".login" de lusager.
Lance linterprteur de commande ou un autre programme initial suivant ce qui est indiqu dans le fichier
"/etc/passwd". Si ce programme est un shell, ce dernier excutera le fichier "/.profile" ou "/.bash_profile"
sil sagit de bash ; notons que par dfaut au dpartement le bash_profile se contente dexcuter le ".bashrc"
de lutilisateur.

NOM

stty set terminal type positionner des options de terminal

SYNTAXE

stty [options]

DESCRIPTION

Positionne certaines options dentres-sorties pour le terminal. Les options sont donnes en argument de la
commande. Sans argument cette commande donne ltat actuel du terminal.
Voici quelques options :

-a

imprime toutes les options du terminal ( utiliser seul).

vitesse

change la vitesse de transmission. En gnral vitesse est 1200, 9600 ou 19200.

ctrlcar c

"c" devient le caractre de contrle donn. Si "c" est prcd du chapeau "", la valeur utilise
est le caractre de contrle correspondant. Voici la liste des contrles possibles avec leur valeur
par dfaut :
erase
annulation du dernier caractre (DEL).
kill
annulation de la ligne (U).
werase annulation du dernier mot (W).
eof
fin de fichier (D).
eol
fin de ligne (J).
intr
interruption , envoie le signal SIGINT(C).
quit
quit, envoie le signal SIGQUIT (\).
start
caractre de contrle de flux : reprend laffichage (Q).
stop
caractre de contrle de flux : arrte laffichage (S).
susp
suspend la tche courante (Z).
rprnt
raffiche la ligne courante (reprint) (R).
flush
prise en compte immdiate de lentre (O).
lnext
supprime le sens particulier du caractre suivant (V).

echo

fait lcho de tout caractre tap (pas dcho avec -echo).

echoe

fait lcho du caractre "erase" de faon telle que le caractre annul soit effac dun cran
vido (fonctionne trs mal sur un terminal papier). Pas dcho spcial de "erase" avec -echo.

echok

envoie (nenvoie pas avec -echok) un caractre de nouvelle ligne sur rception du caractre
"kill".

icanon

les caractres sont disponibles aprs rception dune fin de ligne. Les caractres erase, kill,
rprnt et werase sont traits.

-icanon

les caractres erase, kill, rprnt et werase nont plus de signification particulire. Le code du caractre eof indique le nombre de caractres taper pour quils soient disponibles. Il suffit de
prendre "A" pour eof pour que les caractres soient immdiatement disponibles au

Petit manuel Unix 2002

GESTION DE LACCS UTILISATEUR


programme :
$ stty -icanon eof "A"
Si on veut que le programme gre lcho lui mme (comme more, vi, emacs, ...), faire :
$ stty -icanon eof "A" -echo Cf raw.
isig

les caractres INTR et QUIT envoient des signaux.

-isig

les caractres INTR et QUIT nenvoient pas de signaux.

ixon

permet (ne permet pas avec -ixon) darrter la sortie avec "S" et de la faire repartir avec "Q".

ixany

permet de faire repartir la sortie avec nimporte quel caractre. Seul "Q" est autoris avec
-ixany.

ixoff

demande que le systme envoie (nenvoie pas avec -ixoff) les caractres de contrle de flux
("S" et "Q") quand la file dentre est presque vide ou pleine.

tabs

prserve le caractre de tabulation ("I"). Avec -tabs ou tabs3, les caractres de tabulation sont
remplacs par des espaces (un taquet de tabulation toutes les 8 colonnes).

lcase

ne transforme plus les minuscules en majuscules. Utile si on a tap un nom de login en majuscules.

Les options suivantes sont les combinaisons qui sont le plus souvent utilises :

NOM

sane

positionne des options juges "saines" par le systme. tant donn quen gnral la ligne nest pas
"saine", il faut taper stty sane entre des control-J et non des retours-chariot.

raw

littralement : le mode cru ; tous les caractres sont disponibles immdiatement au programme
sans traitement de erase ou kill. Attention ceci est valable aussi pour D donc on ne peut plus
spcifier fin de fichier, et bien sr pour C et on ne peut plus arrter lexcution en envoyant un signal laide du clavier. Pour lancer un programme qui veut grer toutes les entres faire :
stty raw; programme; stty sane
Ainsi aprs la fin dexcution du programme, stty sane remet tout en place.

passwd password mot de passe

SYNTAXE

passwd

DESCRIPTION

Change le mot de passe de lusager. Lancien mot de passe est demand et le nouveau mot de passe est
demand deux fois. Un mot de passe doit avoir au moins 6 caractres, dont au moins 3 caractres
alphabtiques et un caractre spcial ou numrique. Rappelons quil faut choisir son mot de passe comme
ntant pas un mot dun dictionnaire franais ou tranger.
Lorsque la station est cliente NIS (Network Information System), la commande passwd va en fait changer
le mot de passe valable sur toutes les stations du rseau.

Petit manuel Unix 2002

ACCS EN RSEAU

NOM

ssh OpenSSH secure shell client shell de scurit distance

SYNTAXE

ssh [-X] [utilisateur@]machine [commande]

DESCRIPTION

Excute la commande sur la machine distante. Si la commande est vide ssh ouvre une session comme
login. ssh rend rsh et rlogin obsoltes, sans parler de telnet ; en effet ces deux commandes transmettent
les mots de passe en clair sur le rseau ce qui peut permettre des personnes malveillantes de rcuprer des
mots de passe.
Premier exemple dutilisation : lutilisateur jacques a une session ouverte sur flupke et veux en ouvrir
une distance sur quick avec galement lidentit jacques. Comme la machine flupke ne connait pas
la machine quick elle demande lutilisateur dajouter son empreinte (Key fingerprint) compose de 128
bits crits ici en hexadcimal. Cette empreinte sera ajoute au contenu du fichier
/.ssh/known_hosts. Ensuite le mot de passe Unix de jacques sur quick est demand.
flupke: $ ssh jacques@quick
The authenticity of host quick.info.unicaen.fr cant be established.
Key fingerprint is 1024 b2:c7:72:59:12:cd:c7:14:e6:05:12:1a:f6:62:0a:24.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added quick.info.unicaen.fr,193.55.128.152
to the list of known hosts.
jacques@quick.info.unicaen.frs password: mot de passe Unix
Last login: Mon Aug 20 14:53:04 2001 on :0
Linux quick 2.2.19pre17 #2 Sat Apr 21 06:59:50 MEST 2001 i686 unknown
You have mail.
quick: $

ssh a lavantage de permettre lutilisation des protocoles RSA (avec la version 1 de ssh) ou DSA (avec la
version 2) pour sauthentifier. Ces protocoles ncessitent une paire de cls prive et publique que lon doit
dabord gnrer. En utilisant la ligne de commande ssh-keygen -t dsa, la cl publique gnre sera
stocke dans le fichier /.ssh/id_dsa.pub, tandis que la cl prive sera stocke dans le fichier
/.ssh/id_dsa pralablement encrypte laide de la "phrase de passe". Cette phrase est une ligne
dau plus 255 caractres (quil est conseill de choisir ASCII imprimables) ; on peut donc sans problme
choisir une phrase complte facile mmoriser et difficile deviner par un tiers.
flupke: $ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/jacques/.ssh/id_dsa):
Created directory /home/jacques/.ssh.
Enter passphrase (empty for no passphrase): vrai secret
Enter same passphrase again: faux secret
Passphrases do not match. Try again.
Enter passphrase (empty for no passphrase): laphrasesecretequilfautserappeller
Enter same passphrase again: laphrasesecretequilfautserappeller
Your identification has been saved in /home/toto/.ssh/id_dsa.
Your public key has been saved in /home/toto/.ssh/id_dsa.pub.
The key fingerprint is:
b2:d4:0f:bd:43:bd:dc:90:6d:1a:cd:ef:a9:33:82:dc jacques@flupke

Vrifions le contenu de /.ssh/id_dsa.pub


flupke: $ cat /.ssh/id_dsa.pub
ssh-dss AAAAB3NzaC1kc3MAAACBANzk2EnXa3We7m4M0/W39YwydTxdnKqHvB9Bsd8Mkrscv7Web+yCI
0Ri4FzIBDKev5JIGiuDxotgAqk78IVeB8boa0M6PzWoMeMfRHLrl4eUMUeRw7aeaPVEbKlCOpE2ShBUXb
6vFIGBnZ7S4phGy7I10rkVuVWEqSBnlS9lTEZbAAAAFQCQiZaAQ9WNv164wLiH8S0S0xVtWwAAAIEAgPk
KuxCqI4AP+kGSsUNixosyNig35HEMC83FZBpinh8c5YYFuV4e63SLgw2814drHnVyHoRAX04UtwFiMIxL

Petit manuel Unix 2002

ACCS EN RSEAU

IsgrMF6QOlgUZn2ZHgLcw583lm/oAdzzAhwfCI89SK0J4OGfF1ZDtCUdHkngkrsfuKsKG5ufXWSGdqyOg
j6ka7EAAACBAKpBVB3eMkWHasKuo8TkvNTuRNFf9V7BdqoST9sMpA+2FQb0Pj9T+jmuA/enezdSHmWxDm
S0coC4HoeFDRkEtYSuoFGG3Lj5S0L/IX24z0RrR/IzpbDFak/oELwzcwvMDitYN4PhpflHxcfFIQpwiPy
L2t+vnQY98na97Baxk1NI jacques@flupke

Je naffiche pas le contenu de /.ssh/id_dsa ni la "passphrase" car ils constituent eux deux la cl
prive ( toujours garder secret, notons dailleurs les droits -rw------- sur ce fichier).
La cl publique doit maintenant tre contenue dans la fichier /.ssh/authorized_keys du compte
distant. Il existe plusieurs solutions pour transmettre cette ligne. On peux choisir les pigeons voyageurs, le
courrier de surface ou lectronique, une disquette ou la commande scp. Il est plus simple sur notre rseau
de profiter de NFS et du fait que les comptes utilisateurs des stations partagent le mme rpertoire de login,
en faisant :
flupke: $ cat .ssh/id_dsa.pub >>.ssh/authorized_keys
Le fichier /.ssh/authorized_keys peut bien sr contenir diffrentes cls publiques pour diffrents
comptes utilisateurs, do lutilisation de >>. Lauthentification dune connexion distance se fera maintenant avec RSA :
flupke: $ ssh jacques@quick
Enter passphrase for key /home/jacques/.ssh/id_dsa: **************
Last login: ...
Le fonctionnement de lauthentification est le suivant : le serveur sshd gnre une phrase, lencode avec la
cl publique de lutilisateur et lenvoie au client qui doit la dcoder avec la cl prive (que lon obtient avec
le contenu de /.ssh/id_dsa et la "passphrase") pour la renvoyer pour comparaison au serveur ; il ny
a ainsi aucun rel transfert de secret quun tiers malveillant pourrait acqurir.
On peut galement maintenant se servir de ssh-agent qui peut se rappeler pour la session des "passphrase"
et les fournir sans intervention de lutilisateur. Les "passphrase" sont ajoutes la connaissance de lagent
par ssh-add. Si vous utilisez Gnome, un agent ssh est lanc et connu de tous les processus que vous
lancerez, sinon il faut le lancer explicitement (dans le shell du login, avant de lancer X, pour que tous les
processus le connaissent) :
flupke: $ eval ssh-agent
Agent pid 3834
Le eval et les accents graves sont l pour que lenvironnement du shell soit augment de deux variables ;
la sortie de ssh-agent tant :
SSH_AUTH_SOCK=/tmp/ssh-IzYV9651/agent.9651; export SSH_AUTH_SOCK;
SSH_AGENT_PID=9652; export SSH_AGENT_PID;
Il faudra donc toujours faire :
flupke: $ ssh-add /home/jacques/.ssh/id_dsa
Enter passphrase for /home/jacques/.ssh/id_dsa: **************
Identity added: /home/jacques/.ssh/id_dsa (/home/jacques/.ssh/id_dsa)
Tout futur appel ssh ne ncessitera plus de taper ni mot de passe ni "passphrase" :
flupke: $ ssh jacques@quick
Last login: ...
Pour terminer la session distance il suffit, comme dhabitude, de terminer le shell avec un contrle D ou la
commande exit.
Loption -X permet dacheminer les messages du protocole X11 par le canal ouvert par ssh au lieu de se
servir directement de TCP/IP, en utilisant ce canal comme un tunnel (tunelling). Ceci est ralis en positionnant la variable denvironnement DISPLAY machinedistante:10.0, 10 correspond un cran virtuel
qui est ralis par le passage des messages X11 par le canal ssh et laffichage sur le serveur X du client ssh.
Notons que le serveur distant doit lautoriser , ce qui est le cas de nos machines mais qui nest pas toujours
le cas dune installation par dfaut de ssh.

Petit manuel Unix 2002

ACCS EN RSEAU

NOM

scp secure copy copie sre

SYNTAXE

scp [-prvC] [[utilisateur1@]hte1:]fichier1 [[utilisateur2@]hte2:]fichier2

DESCRIPTION

scp permet de copier un fichier de la machine hte1 de lutilisateur1 sur la machine hte2 pour le compte
de lutilisateur2. Par dfaut utilisateur et hte sont lutilisateur courant et la machine courante. scp utilise le
mme mcanisme de scurit que ssh et demande des mots de passe ou phrases de passe ; cette dernire
peut tre fournie par un agent ssh.

Loption -p permet de conserver pour la copie, les dates daccs, de modification et les protections du
fichier original. Loption -r permet de copier rcursivement un rpertoire en entier. Loption -C demande
dutiliser le mode compression pour le transfert.

Pour grer des copies de sauvegarde facilement, voir la commande rsync (qui nest pas encore dcrite dans
ce petit manuel).

10

Petit manuel Unix 2002

MANIPULATION DE RPERTOIRES

NOM

cd change working Directory change le rpertoire de travail

SYNTAXE

cd [rpertoire]

DESCRIPTION

cd change le rpertoire de travail. En labsence darguments, le nouveau rpertoire de travail est la valeur de
la variable HOME.

NOM

mkdir make directory cration de rpertoire

SYNTAXE

mkdir rpertoire

DESCRIPTION

Cre un nouveau rpertoire. Il contient les deux entres . pour le rpertoire lui mme et .. pour son pre
dans la hirarchie. L utilisateur doit avoir le droit w dans le rpertoire pre.
Loption -p permet de crer les rpertoires parents intermdiaires sils nexistent pas ; cette option est utile
dans des scripts dinstallation.

NOM

rmdir remove directory destruction de rpertoire

SYNTAXE

rmdir rpertoire

DESCRIPTION

Dtruit un rpertoire. Ce dernier doit tre vide (plus exactement, ne contenir que les deux entres . et ..).

Petit manuel Unix 2002

11

MANIPULATION DE FICHIERS

NOM

a2ps anything to PostScript nimporte quoi en PostScript

SYNTAXE

a2ps[options]fichiers

DESCRIPTION

a2ps permet de transformer les fichiers en PostScript et de visualiser (avec gv) le rsultat avant impression.
Cette commande est assez intelligente pour raliser un rendu laide de diffrentes polices afin de faciliter
la lecture des textes de programmes. Elle est cependant parfois trop intelligente quand, par exemple, au lieu
dimprimer un source HTML, elle va imprimer son rendu par un navigateur. Les principales options sont :
-1, -2, ...,-9 pour demander limpression dune neuf pages de texte par feuille (2 par dfaut).

NOM

-s 1

pour une sortie en recto seul.

-s 2

pour une sortie en recto-verso.

-Elangage

force le langage du fichier. Utiliser -Etext pour imprimer du source HTML et -Ejava pour du
source PHP.

-Lnombre

adapte la taille de la fonte pour obtenir nombre lignes par page.

-lnombre

adapte la taille de la fonte pour obtenir nombre caractres par ligne.

ar archive archive

SYNTAXE

ar cls fichier_archive [ fichiers]

DESCRIPTION

ar permet de crer et de maintenir un groupe de fichiers dans un seul fichier archive. Un fichier archive permet, entre autre, de regrouper les diffrents modules dun programme (cf ranlib).
cl est un caractre parmi d, r, t ou x, ventuellement suivi de c, u ou v. fichier_archive est le nom du fichier
archive. fichiers sont les noms des composants. La signification des cls est la suivante :
c

cre larchive.

dtruit les fichiers de larchive.

met jour (remplace) ou ajoute les composants fichiers. Si la cl optionnelle u est utilise, seuls les
composants ayant une date de modification plus tardive que dans larchive seront remplacs.

affiche une table du contenu de larchive.

ne remplace que les fichiers qui sont modifis.

extrait une copie des composants "fichiers" de larchive. Si aucun fichier nest prcis, tous les composants de larchive sont copis dans le catalogue de travail.

option "verbeuse" : ar affiche tout ce quil fait.

Par exemple, pour crer une archive utilisable par ld faire :


$ ar ruv libexemple.a ex1.o ex2.o ex3.o
puis
$ ranlib libexemple.a

NOM

basename base name nom de base

SYNTAXE

basename fichier [suffixe]

12

Petit manuel Unix 2002

MANIPULATION DE FICHIERS

DESCRIPTION

basename dtruit tout prfixe se terminant par / et le suffixe sil est prsent dans le nom de fichier. Cette
commande est surtout utile dans des procdures shell. Par exemple, la procdure suivante appele avec
largument /users/bernard/lib/toto.c compile un programme C et renomme le fichier objet "toto" dans le
rpertoire de travail :
#!/bin/sh
gcc $1
mv a.out basename $1 .c
Notons que lon pourrait faire simplement : gcc $1 -o basename $1 .c

NOM

bzip2 bunzip2 compress compresse

SYNTAXE

bzip2 fichiers
bunzip2 fichiers
bunzip2 -c fichiers

DESCRIPTION

bzip2 produit un fichier dextension ".bz2". Le taux de compression est encore meilleur quavec gzip grce
lutilisation de lalgorithme de compression de Burrows-Wheeler et un codage de Huffman. Loption -c
permet dutiliser bzip2 et bunzip2 comme un filtre ( la faon de zcat). Voir aussi la commande gzip.

NOM

cat catenate concatner

SYNTAXE

cat [-vte] fichiers

DESCRIPTION

cat lit chaque fichier en squence et lcrit sur la sortie. Exemples :


$ cat fich
imprime le fichier fich, et
$ cat fich1 fich2 >fich3
concatne les deux fichiers fich1 et fich2 et crit le rsultat dans
fich3. Il est illgal dutiliser en entre et en sortie le mme fichier, ainsi on ne peut pas faire :
$ cat fich1 fich2 >fich1
Pour ajouter le contenu de fich2 fich1, faire : $ cat fich2 >>fich1 .

Loption -v permet de visualiser les caractres de contrle. Si on prcise -t en plus, les caractres de tabulation sont visualiss "I". Avec -e, les fins de lignes sont signales par un dollar ($). -t et -e nont aucun effet
sans loption -v. Voir od pour une visualisation plus complte des caractres de contrle.

NOM

comm common commun

SYNTAXE

comm [ - [123] ] fichier1 fichier2

DESCRIPTION

comm lit les fichiers dont les lignes doivent tre tries suivant le code ASCII (cf la commande sort), et produit une sortie sur trois colonnes : les lignes prsentes uniquement dans fichier1, les lignes prsentes
uniquement dans fichier2 et les lignes en commun dans les deux fichiers.
Les arguments de contrle 1, 2 et 3 suppriment limpression de la colonne correspondante.
Gag : comm -123 f1 f2 est une opration nulle.

Petit manuel Unix 2002

13

MANIPULATION DE FICHIERS

NOM

compress uncompress zcat compress compresse

SYNTAXE

compress fichiers
uncompress fichiers
zcat fichiers

DESCRIPTION

compress rduit la taille dun fichier en utilisant lalgorithme de codage adaptatif de LZW. Le taux de
compression typique dun texte source est de 50 60%. Le fichier compress lextension ".Z".
uncompress restaure les fichiers dans leur contenu original. zcat se contente dafficher le contenu dcompress.

pack, unpack et pcat utilisent le codage de Huffman et produisent des fichiers lextension ".z". Ce
codage donne en gnral de moins bons rsultats que Lempel-Ziv.
gzip, gunzip et zcat de GNU utilisent Lempel-Ziv qui donnent de meilleurs rsultats que compress.

NOM

convert convert image format convertir des formats dimages

SYNTAXE

convert fichier-source fichier-rsultat

DESCRIPTION

Cette commande fait partie de lensemble Image Magick qui permet de manipuler des images. convert va
crer une image dans le fichier rsultat selon le format dfini par lextension du nom. Voici quelques principaux formats connus avec leurs extensions : Adobe PostScript file (ps), Adobe Encapsulated PostScript
file (eps), Portable Document Format (pdf), Portable Network Graphics (png), Joint Photographic
Experts Group JFIF format (jpeg ou jpg), Group 3 Fax (fax), CompuServe Graphics Interchange Format (gif), Microsoft Windows bitmap image file (bmp).

Ex. pour transformer une image png en PostScript (pour lintgrer dans du LaTeX par exemple) :
convert image.png image.ps
convert connat normment de formats dimage mais ignore tout lheure actuelle du format vectoriel :
Scalable Vector Graphics (svg), mais cela ne saurait tarder ...
convert permet aussi dappliquer des transformations de taille, de couleurs, dajouter des annotations. Il
peut aussi crer des images animes, par exemple : convert -delay 20 tintin.* tintin.gif

NOM

cp copy copier

SYNTAXE

cp [-ip] fichier1 fichier2


cp [-ip] fichiers rpertoire
cp [-ip] -R rpertoire1 rpertoire2

DESCRIPTION

cp copie fichier1 sur fichier2. Si fichier2 existe dj, son contenu est cras par le contenu de fichier1 mais
les attributs de fichier2 sont conservs (droits daccs, propritaire, date de modification). Si le fichier destination nexiste pas ou si loption -p est prcise, les attributs du fichier source sont repris. Tout ceci sous
rserve de droits daccs corrects.
Dans la seconde forme dappel, les fichiers sont copis dans le rpertoire avec le mme nom de base. Dans
la troisime forme dappel, le rpertoire1 est copi rcursivement sur le deuxime.
Loption -i pour interactive demande confirmation avant dcraser un fichier.
cp refuse de copier un fichier sur lui mme.

14

Petit manuel Unix 2002

MANIPULATION DE FICHIERS

NOM

cut cut couper

SYNTAXE

cut -cliste fichiers


cut -fliste [-dc] [-s] fichiers

DESCRIPTION

cut imprime certaines parties des lignes des fichiers donns en arguments, ou dfaut de lentre standard.
De plus, par convention un nom de fichier - signifie lentre standard.

Les listes sont formes dun ou plusieurs nombres ou intervalles spars par des virgules. La numrotation
commencent 1. Un intervalle est donn comme deux nombres spars par un tiret - ; des intervalles
incomplets peuvent tre donns, par exemple : -4 signifie 1-4 et 2- signifie du deuxime jusqu la fin
de la ligne.
Dans la premire forme dappel la liste prcise avec -c les caractres conserver. Dans la deuxime forme,
on prcise derrire -f, les champs conserver. Le sparateur de champ, par dfaut le caractre de tabulation
(I), peut tre prcis avec -d. Loption -s, permet de ne pas imprimer les lignes qui ne contiennent pas le
caractre de sparation de champs.
Exemples : cut -c1 poeme va crire le premier caractre de chaque ligne (vers ?) du fichier ; cut -f1
-d: /etc/passwd imprime tous les comptes locaux la machine.

NOM

diff differences diffrences

SYNTAXE

diff [-ce] fichier1 fichier2

DESCRIPTION

diff donne les diffrences entre les deux fichiers. Si fichier1 (resp. fichier2) est un rpertoire alors un fichier
dans ce rpertoire de mme nom que fichier2 (resp. fichier1) est utilis. On peut galement donn deux
noms de rpertoires, auquel cas tous les fichiers de mmes noms des deux rpertoires sont compars successivement. Loption -c donne trois lignes de contexte.

Si on prcise loption -e, la sortie de cette commande est directement utilisable par lditeur de lignes ed
pour construire fichier2 partir de fichier1. On peut ainsi reconstruire une version dun fichier partir
dune version de base et dune chane de diffrences de version version. Exemple :
$ diff -e f.new f.old >f.diff
$ rm f.old
$ { cat f.diff; echo 1,$p } | ed - f.new
*** affichage du contenu de f.old ***
Note : loption "-" de la commande ed supprime laffichage du nombre de caractres.
La procdure suivante reconstruit une ancienne version partir dune version courante ($1) et des
diffrences successives trouves par diff ($2, $3...). La version reconstruite est affiche sur la sortie.
(shift; cat $*; echo 1,$p) | ed - $1
Note : on utilise des parenthses au lieu des accolades de lexemple prcdent, afin que shift naffecte pas
le premier paramtre pour ed.
Voir aussi la commande patch.

NOM

expand expand expanser

SYNTAXE

expand [-taquet1[,taquet2[,...]]] fichiers


unexpand [-taquet1[,taquet2[,...]]] fichiers

Petit manuel Unix 2002

15

MANIPULATION DE FICHIERS

DESCRIPTION

expand recopie les fichiers ou lentre sur la sortie en remplaant les caractres de tabulation par autant
despaces pour atteindre le taquet suivant. Par dfaut les taquets sont tous les 8 caractres. Si une seule
valeur de taquet est donne, elle change lespacement de tous les taquets. Sinon les taquets sont positionns
aux colonnes taquet1, taquet2, etc. .

unexpand remplace les sries despaces successifs par des tabulations.

NOM

head head tte

SYNTAXE

head [-c nombre] [-n nombre] [fichier]

DESCRIPTION

head liste les 10 premires lignes du fichier argument ou dfaut de lentre standard. Loption -n permet
de spcifier le nombre de ligne afficher. Avec -c le nombre doctets afficher est spcifi ; ce nombre peut
tre suivi dun b pour spcifier des bloc de 512 octets, dun k pour kilo-octets ou dun m pour megaoctets.

NOM

tr translate remplace

SYNTAXE

tr [-cds] ensemble1 [ensemble2]

DESCRIPTION

tr va remplacer chaque occurrence des caractres de ensemble1 de lentre standard par le caractre correspondant dans ensemble2. Un caractre peut aussi tre spcifi par son code octal prcd de \. On peut
spcifier pour les ensembles des intervalles de caractres entre crochets. Ex. :
tr [A-Z] [a-z]
va passer le texte en minuscules en remplaant chaque majuscule par la minuscule correspondante. On peut
avec loption -c ou --complement indiquer que lon spcifie lensemble par son complmentaire. De
plus, tr peux non seulement remplacer des caractres un un, mais aussi en supprimer si on prcise
loption -d ou --delete. Ex. :
tr -cd \012[a-z][0-9]
va supprimer tous les caractres de lentre qui ne sont pas des fins de ligne (012 octal vaut 10 en dcimal,
ce qui correspond au caractre Control-J ou \n) des lettres en minuscules ou des chiffres.

NOM

gzip gunzip zcat compress compresse

SYNTAXE

gzip fichiers
gunzip fichiers
zcat fichiers

DESCRIPTION

gzip produit un fichier dextension ".gz". Le taux de compression sur du texte est de 60 70 % ce qui est
meilleur quavec compress. Ne pas confondre avec zip disponible sur MSDOG (et sur Linux) bien quil
utilise le mme algorithme de compression. Voir aussi la commande bzip2 qui utilise un algorithme plus
performant.

16

Petit manuel Unix 2002

MANIPULATION DE FICHIERS

NOM

lpr off line printer impression en diffr

SYNTAXE

lpr [-Pimprimante] [fichiers]


lprm [-Pimprimante] [id]
lpstat [-u] [-t]

DESCRIPTION

lpr permet limpression sur imprimante des fichiers arguments. Si aucun fichier nest mentionn, lpr utilise
lentre standard. Le fichier nomm - est compris comme tant lentre standard et peut tre ajout
dautres fichiers. lp associe chaque requte dimpression un identificateur qui saffiche sur le terminal.

lprm annule la requte didentificateur "id" ou la requte en cours dimpression sur limprimante
dnomme "imprimante". Sans option, toutes les requtes de lutilisateur sont annules.
lpstat affiche le statut courant du "spooler". Sans option, seul le statut des requtes de lutilisateur
excutant lpstat est fourni.
Les options principales sont :
-u
affichage du statut de toutes les requtes.
-t
statut gnral du "spooler".
Le format dun statut de requte est : id propritaire taille date imprimante. La taille est donne en octets.
La date est la date de cration de la requte.
Les causes de mauvais fonctionnement et leurs remdes :
Le fichier ne sort pas du tout :
Vrifiez que vous attendez votre listing sur la bonne imprimante.
Vrifiez que limprimante est allume.
Vrifiez le nom du fichier.
Vrifiez que votre arborescence a bien les droits x pour tout le monde, sinon utilisez une redirection :
lpr options < fichier
Si vous navez aucun message derreur sur le terminal, dprotgez votre ligne (chmod 666 tty)
ou employez loption -om qui envoie un mail du compte-rendu des oprations.
Vrifiez quil vous reste des crdits imprimante. La commande locale au dpartement lpquota peut tre
utilise pour les contrler.
Si vous suspectez un mauvais droulement de la connexion limprimante, utilisez loption -od qui
indique le droulement de la connexion.
Le fichier sort incompltement :
Vrifiez que vous navez pas supprim le fichier durant limpression.
En dernier recours, appelez ladministrateur systme.
Un dernier conseil : visualisez toujours votre impression avant de lenvoyer vraiment sur limprimante avec
la commande a2ps.

NOM

more more and more de plus en plus

SYNTAXE

more fichiers

DESCRIPTION

more affiche de faon interactive les fichiers donns en arguments cran par cran. Les principales commandes sont :

Petit manuel Unix 2002

17

MANIPULATION DE FICHIERS
ESPACE

affiche lcran suivant

RC

affiche la ligne suivante

/modle

reprend laffichage sur lcran commenant deux lignes avant la ligne contenant une expression
correspondant au modle.

b ou B

affiche lcran prcdent

:p

passe au fichier prcdent

:n

passe au fichier suivant

sort de more

aide en ligne

Note : La commande GNU less, malgr son nom peut en faire plus :-).

NOM

paste paste coller

SYNTAXE

paste fichiers

DESCRIPTION

paste colle les fichiers cte cte en sparant chaque ligne par des tabulations. On peut utiliser la convention - pour lentre standard.

NOM

pr print imprimer

SYNTAXE

pr [options] fichiers

DESCRIPTION

pr imprime un fichier sur la sortie standard avec sur chaque page le titre, la date et le numro de page. Cette
commande permet galement la sortie multi-colonne et la sortie de plusieurs fichiers sur des colonnes parallles suivant les options. Les options sont :

-n

produit une sortie sur n colonnes.

+n

commence la page n.

-h t le texte t est crit comme titre.


-wn la largeur de page est n caractres (72 par dfaut).
-ln

la longueur de page est n lignes (66 par dfaut).

-t

supprime les 5 lignes de tte et de pied de page.

-sc

spare les colonnes par le caractre c (par dfaut un espace).

-m

imprime tous les fichiers simultanment, chacun dans sa colonne.

Cette vieille commande tait prvue pour tre utilise pour prparer la sortie sur des imprimantes chasse
fixe. Avec les imprimantes PostScript, on peut lui prfrer des commandes donnant directement du
PostScript telles que a2ps.

18

Petit manuel Unix 2002

MANIPULATION DE FICHIERS

NOM

recode recode text file recoder des fichiers texte

SYNTAXE

recode -l
recode [-qd] charset [fichier]
recode [-qd] charset1..charset2 [fichier]

DESCRIPTION

recode permet de transcoder les fichiers textes en tenant compte des codages de fins de ligne et des jeux de
caractres. recode -l permet de lister tous les systmes de codage de caractres disponibles. Les principaux
sont : mac pour Macintosh, latin1 pour le code ISO_8859-1, pc pour MicroSoft, html pour le codage avec
des entits comme dans &eacute;, latex pour le codage des accents en LaTeX. Si un fichier est prcis en
argument, le fichier est rcrit en place, sinon recode agit comme un filtre.

Loption -q (quiet) supprime toute sortie derreur sur dventuels non rversibilits dans le codage. Loption
-d (diacritic) est utile pour le format html ou latex car alors recode ne soccupe pricipalement que du
codage des signes diacritiques en ne touchant pas aux balises html ou aux commandes LaTeX.
Pour transformer un fichier venant de DOS, il suffit dutiliser fromdos fichier

NOM

sox sound exchange conversion de fichiers son

SYNTAXE

sox fichier-source fichier-rsultat

DESCRIPTION

Cette commande est aux sons ce que convert est aux images et permet de convertir des fichiers sons, le format tant donn par lextension. sox connait entre autres les formats suivants (avec leur extension) : .au
pour le fichier AU de SUN Microsystems, .gsm pour le format de compression utilis par GSM 06.10, .sf
pour le fichier son de lIRCAM, et enfin .wav pour le format Microsoft.
sox permet aussi dappliquer des effets de toutes sortes sur le son, le tout en ligne de commande, un peu
comme ImageMagick pour les images.

NOM

split split dcouper un fichier

SYNTAXE

split [-n] [-b bytes[bkm]] [ fichier [nom] ]

DESCRIPTION

split lit le fichier donn, et le dcoupe en fichiers de n lignes (par dfaut 1000). Sil ny a pas darguments
ou si largument est - il lit lentre standard. Le nom des fichiers de sortie est construit partir du nom
donn en argument ("x" par dfaut) avec des suffixes allant de aa zz en suivant lordre lexicographique.

La version GNU de split admet aussi largument -b suivi du nombre doctets (b), de kilo-octets (k) ou de
mga-octets (m) suivant la lettre qui suit le nombre. Cette commande est utile pour dcouper une grosse
archive (.tar.gz ou .tgz) pour la recopier sur des disquettes : split -b 1400k fichier.
Pour reconstituer larchive sous Unix, il suffit de faire : cat xaa xab xac xad xae > fichier
Sous Dos, on peut faire : copy /b xaa+xab+xac+xad+xae fichier

Petit manuel Unix 2002

19

MANIPULATION DE FICHIERS

NOM

tail tail queue

SYNTAXE

tail [[nombre][lbc[r][f]]] [fichier]

DESCRIPTION

tail liste le contenu du fichier argument ou dfaut lentre standard partir dun endroit donn. "nombre"
sexprime en lignes, blocs ou caractres respectivement suivant les options l, b ou c. Lunit par dfaut est
la ligne. tail copie lentre partir de +nombre units comptes en partant du dbut ou de -nombre units
comptes en partant de la fin. Avec loption r les lignes sont listes en commenant par la fin. Loption f
permet de forcer une attente lors de la rencontre de la fin de fichier ; tail sera capable dafficher les
ventuels ajouts. Utile pour surveiller la croissance dun fichier en cours dcriture comme un fichier de
journalisation. Il ny a pas doption +f.

NOM

tar tape archive archive sur bande

SYNTAXE

tar [zy] [cxt] [v] f archive fichiers

DESCRIPTION

La commande tar permettait originalement de grer une bande magntique ou un streamer, mais peut grer
des archives dans un fichier ordinaire. Largument archive peut donc tre un nom de fichier ordinaire ou pour lentre ou la sortie standard, /dev/rst0 ou /dev/rmt/0 pour le streamer ", /dev/fd0 pour le lecteur
de disquette. Il faut prciser une des trois options suivantes :

cre larchive avec comme composants les fichiers dont les noms sont donns en argument.

extrait de larchive les composants dont les noms sont donns en argument. Si aucun composant nest
nomm, la totalit des composants sont extraits.

affiche la table du contenu. Les noms peuvent tre utiliss ensuite avec loption x.

On peut de plus prciser loption v qui permet tar dafficher ce quil fait.
tar peut tre utilis pour recopier des arborescences :
( cd dir_source ; tar cf - .) | ( cd dir_destination; tar xvf - )
Cette recopie est diffrente dune recopie faite par cp -R car le contenu des liens ne sont pas recopis.
La plupart des logiciels sont livrs sous forme de "tars compresss" (tarball), cest--dire que les divers
fichiers sont regroups laide de tar puis compresss avec compress (extension .tar.Z) ou de gzip (extension .tar.gz ou .tgz pour faire plaisir MSDOG). Pour extraire le contenu, il suffit de "piper" le tar dans un
zcat ainsi : zcat archive.tar.gz | tar xvf Il est prudent de faire un tar tvf avant, pour vrifier le nom des fichiers crs. Si vous avez la chance
dutiliser la commande tar de GNU, loption supplmentaire z (d)compresse automatiquement et on
peut crire : tar zcvf archive.tgz racine
On peut aussi utiliser loption y pour (d)compresser avec bzip2.

NOM

tee tee t

SYNTAXE

tee [-a] fichiers

DESCRIPTION

tee recopie lentre sur la sortie et sur le(s) fichier(s) dsign(s). Loption -a ajoute la copie aux fichiers; par
dfaut, lancien contenu des fichiers est cras.
Cette commande permet de journaliser les entres et/ou sorties dun programme tout en tapant les entres et
en voyant les sorties normalement lcran comme ceci :

20

Petit manuel Unix 2002

MANIPULATION DE FICHIERS
tee journal-entre | programme | tee journal-sortie
Malheureusement, on ne peut pas avoir un journal dentres/sorties et la ligne de commande suivante ne
fonctionne pas cause des accs concurrents au fichier journal :
tee journal | programme | tee journal
tee est utile pour crer un fichier vide, ce que lon peut faire aussi avec : cp /dev/null fichiervide.

NOM

uniq unique unique

SYNTAXE

uniq [- udc [+n] [-n]] [entre [sortie] ]

DESCRIPTION

uniq compare les lignes adjacentes de lentre. Les duplications de lignes sont supprimes. Avec loption
-u seules les lignes non rptes figurent dans la sortie. Loption -d ne provoque la sortie que des lignes
rptes. Loption -c donne le nombre de duplicata trouvs pour chaque ligne.
Largument +n fait que les n premiers caractres de chaque ligne sont ignors dans la comparaison. Largument -n ignore les n premiers mots (un mot est une chane spare par des espaces ou des tabulations).

NOM

wc word count compte de mots

SYNTAXE

wc [-lwc] [fichiers]

DESCRIPTION

wc compte les lignes (l), les mots (w) et les caractres (c) des fichiers ou dfaut de lentre standard. Par
dfaut les trois sont compts.

Petit manuel Unix 2002

21

MANIPULATION DATTRIBUTS DE FICHIERS

NOM

chgrp change group changer le groupe

SYNTAXE

chgrp [-R] groupe fichiers

DESCRIPTION

Change le groupe propritaire des fichiers (qui peut bien sr tre diffrent du groupe du propritaire). Cette
commande est rserve au super-utilisateur.

NOM

chmod change mode changer le mode

SYNTAXE

chmod [-R] mode fichiers

DESCRIPTION

Le mode des fichiers est chang en fonction de largument mode. Cet argument a la syntaxe suivante :
[catgorie] op droit [op droit] ...
Plusieurs arguments mode peuvent tre donns spars par des virgules.

catgorie est une combinaison des lettres u (pour utilisateur propritaire), g (pour groupe propritaire) et o
(pour les autres : "others"). Si catgorie est omise la combinaison ugo est prise par dfaut.
op est un caractre parmi +, - , =. + ajoute le droit pour la catgorie, - le retire et = assigne les droits de
faon absolue (tous les droits existant avant sont supprims).
droit est une lettre parmi r (lecture : "read"), w (criture : "write"), x (excution : "execute"), s (positionner :
"set"). Le droit s permet de prendre les droits du propritaire pendant lexcution dun fichier. Le droit x
pour un rpertoire permet dexploiter un rpertoire pour accder un fichier connaissant son nom, et non de
le lister entirement.
Les droits daccs ne peuvent tre changs que par le propritaire du fichier ou par le super-utilisateur. Avec
loption -R, chmod change les droits dans toute la sous arborescence.
Le premier exemple retire le droit dexcution du fichier aux utilisateurs non membres du groupe du propritaire. Le deuxime met le droit dexcution pour toutes les catgories, mais retire tous les autres droits y
compris pour le propritaire ! Ces droits peuvent tre remis par le troisime exemple.
$ chmod o-x fichier
$ chmod =x fichier
$ chmod u+r,u+w fichier

NOM

chown change owner changer le propritaire

SYNTAXE

chown [-R] propritaire fichiers

DESCRIPTION

Change le propritaire des fichiers. Cette commande est rserve au super-utilisateur.

NOM

ln link lier

SYNTAXE

ln [-s] [-i] nom1 [nom2]

DESCRIPTION

Un lien est une entre dans un rpertoire faisant rfrence un fichier. Un mme fichier (avec son contenu
et tous ses attributs) peut avoir plusieurs liens dans le mme systme de fichiers. ln cre un lien sur le
fichier donn par nom1. Si nom2 est donn alors le lien porte ce nom, sinon le nom de base du fichier de

22

Petit manuel Unix 2002

MANIPULATION DATTRIBUTS DE FICHIERS


nom1 (cf basename) est plac dans le rpertoire de travail. Du point de vue du systme de fichier, aprs
lexcution de ln, il ny a pas de diffrence entre les deux liens nom1 et nom2.
Ces liens sappellent galement liens physiques par opposition aux liens symboliques cres laide loption
-s. Un lien symbolique est en fait une indirection vers un autre fichier. Ce lien a une nature spciale signale
par la lettre l dans le rsultat de ls en format long.
Loption -i (pour interactif) demande confirmation avant dcraser un nom existant.

NOM

mv move dplacer

SYNTAXE

mv [-i] fichier1 fichier2


mv [-i] fichiers rpertoire

DESCRIPTION

mv dplace (renomme) fichier1 en fichier2. En fait, seul le lien est dplac par rapport la hirarchie, mais
le contenu reste en place (cf. ln). Dans la deuxime forme dappel, tous les liens sont dplacs vers le rpertoire. Il faut bien comprendre que cette commande naffecte que des entres dans des rpertoires (des liens
ou noms de fichiers) et non le contenu des fichiers, sauf si le fichier est dplac au travers de deux systmes
de fichiers diffrents auquel cas il est bien sr recopi avec cp ; notons que certains Unix refusent dutiliser
mv au travers de deux systmes de fichiers.

Loption -i (pour interactif) demande confirmation avant dcraser un nom existant.

NOM

rm remove enlever

SYNTAXE

rm [-ir] fichiers

DESCRIPTION

rm supprime lentre correspondante aux fichiers dans le rpertoire. Si lentre est le dernier lien sur le
contenu du fichier alors ce fichier est dtruit. Supprimer un fichier ncessite le droit w sur le rpertoire,
mais aucun droit spcial sur le fichier (une question est quand mme pose dans ce dernier cas).

Si le fichier est un rpertoire, une erreur sera signale sauf si loption -r est employe. Dans ce cas rm supprime rcursivement tout le contenu du rpertoire et le rpertoire lui-mme (suppression de tout le sous
arbre).
Sous loption -i, rm demande pour chaque fichier sil doit le supprimer et avec loption -r sil doit examiner
chaque rpertoire.

NOM

touch touch touche

SYNTAXE

touch fichiers

DESCRIPTION

touch met jour la date de dernire modification des fichiers avec la date courante. Ceci est trs utile avec
la commande make pour forcer une recompilation.

Petit manuel Unix 2002

23

PARCOURS DE HIRARCHIE

NOM

df disk space on filesystems espace disque des systmes de fichiers

SYNTAXE

df [-l] [-i] [-hkm] [fichiers]

DESCRIPTION

df affiche la taille, lespace utilis, lespace libre, le pourcentage utilis et le point de montage de chaque
systme de fichiers. Sont lists tous les systmes de fichiers contenant les fichiers donns en argument. Si
aucun fichier nest donn, tous les systmes de fichiers monts sont lists.

Loption -l ne va lister que les systme de fichiers locaux en excluant, entre autres, les systmes de fichiers
monts par NFS.
Loption -h affiche les tailles en format lisible par un humain (par ex. : 1K 42M 3G). Les options -k et -m
affiche les tailles respectivement en kilo et mga octets.
Loption -i affiche les informations de tailles relatives aux i-nodes des systmes de fichiers.
Si lon dsire connatre lespace utilis par un sous arbre de la hirarchie, il faut utiliser la commande du.

NOM

du disk usage usage disque

SYNTAXE

du [-hkm] fichiers

DESCRIPTION

du calcule la quantit despace disque utilis par chaque fichier argument et par le sous-arbre pour les
rpertoires. Les options -k et -m utilise le kilo ou le mga octet comme unit au lieu du bloc de 512 octets.
Loption -h affiche les tailles en format lisible par un humain (par ex. : 1K 42M 3G).
La commande df, ne fait pas de parcours de hirarchie et donne lespace libre sur le disque.

Exemple : du -sh /{.[.]*,*} | less donne la place occupe tous les fichiers (cachs ou
non) du rpertoire racine utilisateur ce qui peut tre utile ceux qui utilisent du cache pour leurs navigateurs.

NOM

find find trouver

SYNTAXE

find rpertoire expression

DESCRIPTION

find parcourt rcursivement le sous arbre de racine rpertoire cherchant les fichiers rendant vraie lexpression. Lexpression est forme de termes primaires dcrits ci-aprs, ou de combinaisons de termes primaires
en utilisant les oprateurs suivants (ordre de prcdence dcroissant) :

1) Un groupe de termes primaires et doprateurs parenthss (Attention : les parenthses ayant une signification spciale pour shell doivent tre prcdes de \).
2) La ngation dun terme primaire avec loprateur !.
3) La concatnation : la juxtaposition de termes primaires sous-entend le ET.
4) -o est loprateur OU.
Dans la description des termes primaires n dsigne un entier dcimal. Lentier sans signe n signifie exactement n; +n signifie plus que n et -n signifie moins que n.

24

Petit manuel Unix 2002

PARCOURS DE HIRARCHIE
-name fichier

vrai si fichier correspond au nom du fichier examin ; le nom peut contenir les caractres jokers du shell *, ? et [].

-type c

vrai si le type de fichier est c, o c est b, c, d, f, l ou p pour fichier spcial bloc, fichier
spcial caractre, rpertoire, fichier ordinaire, lien symbolique ou fifo (i.e. "pipe"
nomm).

-links n

vrai si le fichier a n liens.

-user utilisateur

vrai si le fichier a utilisateur pour crateur.

-size n

vrai si le fichier a la taille n (en blocs de 512 octets).

-atime n

vrai si le fichier na pas t accd depuis n jours.

-mtime n

vrai si le fichier na pas t modifi depuis n jours.

-exec commande

vrai si la commande rend le code de sortie 0. La fin de commande est marque par : \;
(le ; est prcd du caractre dchappement). {} comme argument est remplac par le
nom du fichier examin.

-ok commande

idem a "exec" sauf que le systme demande sil doit excuter la commande.

-print

toujours vrai. A comme effet dimprimer le nom du fichier examin (est sous-entendu
avec GNU).

-newer fichier

vrai si le fichier examin a t modifi plus rcemment que largument fichier.

Exemples :
Chercher tous les fichiers de notre compte qui sappelle toto :
$ find -name toto -print
ou simplement sur Linux :
$ find -name toto
Pour chercher tous les fichiers dimages PNG du compte (notez les apostrophes pour empcher lexpansion
de ltoile dans le shell) :
$ find -name *.png
Pour chercher lemplacement de la commande find :
$ find / -name find -print
Pour dtruire tous les fichiers de larborescence de lutilisateur de nom a.out ou *.o qui nont pas t
utiliss depuis une semaine (notez les anti-slashs devant les parenthses et le point-virgule final) :
$ find \( -name a.out -o -name *.o \) -atime +7 -exec rm {} \;
Ce genre de recherche partir de "/" avec find est trs coteux en temps et en ressource si on la lance sur
une machine du dpartement, car elle revient faire une recherche sur plusieurs dizaine de giga octects !
Par contre, pour une simple recherche de nom de fichier la commande locate est trs efficace.

NOM

locate locate localiser

SYNTAXE

locate modle

DESCRIPTION

Recherche dans une base de donnes des fichiers les noms correspondant au modle la manire du shell.
Les mta-caractres *, ?, et [] sont reconnus. La base est mise jour automatiquement la nuit par un
cron laide de la commande updatedb. Les rpertoires personnels ne sont pas explors par updatedb
pour des raisons de confidentialit. Cette commande est disponible sous Linux et nest pas disponible en
standard sous Solaris.

Petit manuel Unix 2002

25

PARCOURS DE HIRARCHIE

NOM

whereis where is o est-ce

SYNTAXE

whereis commandes

DESCRIPTION

Cherche dans les rpertoires systmes les commandes donnes en argument.

NOM

which which lequel

SYNTAXE

which noms

DESCRIPTION

Indique comment sont valus des noms de commande en tenant compte des ventuels alias et de la variable PATH. On peut lui prfrer la commande type intgre (builtin) au shell.

26

Petit manuel Unix 2002

LANGAGES

NOM

cc C compiler compilateur C

SYNTAXE

cc [options] fichiers
gcc [options] fichiers
g++ [options] fichiers

DESCRIPTION

cc est un compilateur C. Il utilise le pr-processeur cpp et lditeur de liens ld et accepte leurs options.
Plusieurs types de fichiers arguments sont accepts. gcc et g++ sont les compilateurs C et C++ de la suite
GNU.

Les fichiers suffixs par .c sont considrs par le compilateur C comme des sources C. g++ considre les
fichiers suffixs par .cc, .C, .cxx, .cpp ou .c++ comme contenant du C++. Ceux-ci sont compils, produisant pour chaque source un fichier objet de mme nom de base suffix par .o. Si on compile un seul programme, le fichier .o est dtruit car cc enchane avec ldition de lien laide de ld qui produit un fichier
excutable de nom a.out par dfaut.
Traits de la mme manire, les fichiers arguments suffixs par .s, sont considrs comme des sources
assembleur, et sont assembls pour produire des programmes objets .o.
Les fichiers arguments suffixs par .o sont considrs comme des programmes objets. Ceux-ci sont lis
(dans lordre o ils sont rencontrs) ventuellement avec dautres fichiers .o issus de la compilation de
fichiers .c arguments, pour produire un fichier excutable nomm par dfaut a.out.
Les options suivantes sont communes aux compilateurs C et C++ :
-c

supprime ldition de liens. Un fichier .o est systmatiquement produit.

-g

gnre une table des symboles complte pour tre utilise par un dbogueur.

-p

aprs compilation et dition de liens, production dun fichier mon.out utilisable par prof (cf prof).

-pg

aprs compilation et dition de liens, production dun fichier gmon.out utilisable par gprof
(cf gprof).

-O

optimiseur.

-S

compilation des programmes sources C et production de sources assembleur dans les fichiers correspondants suffixs par .s.

-E

lance uniquement le pr-processeur (cpp) avec sortie du rsultat sur lcran.

-pipe

utilise des pipes plutt que des fichiers intermdiaires temporaires.

Les autres options sont passes ld.

NOM

cl common lisp lisp commun

SYNTAXE
cl
gcl

DESCRIPTION

Interprte, compilateur et environnement de programmation autour du langage common lisp.

Petit manuel Unix 2002

27

LANGAGES

NOM

f77 fortan 77 fortran 77

SYNTAXE

f77 ...
g77 ...

DESCRIPTION

Compilateur fortran 77. Non disponible en standard. g77 est la version de gcc qui comprend le fortran.

NOM

hugs hugs hugs

SYNTAXE

hugs ...

DESCRIPTION

hugs est un interprte du langage fonctionnel Haskell 98.

NOM

javac java compiler compilateur de java

SYNTAXE

javac fichiers

DESCRIPTION

javac est le compilateur du langage Java distribu par Sun Microsystems.

NOM

pc pascal compiler compilateur pascal

SYNTAXE

pc ...

DESCRIPTION

Compilateur pascal libre smantiquement compatible avec Turbo Pascal 7.0 et supportant certaines extensions utilises par Delphi. Voir http://www.freepascal.org/

NOM

perl practical extraction and report language perle

SYNTAXE

perl fichier

DESCRIPTION

perl est un langage interprt optimis pour lanalyse et lextraction dinformations de fichiers textes quelconques et limpression de rapports bass sur ces informations. Il est galement adapt beaucoup de
tches dadministration systme. Daprs les auteurs du langage, perl combine les avantages de C, sed,
awk et sh. Il existe des traducteurs de sed et awk en perl qui sont a2p et s2p. Il a t beaucoup utilis
pour raliser des scripts CGI pour le Web.

(Un autre acronyme de perl est "Pathologically Eclectic Rubbish Lister" :-).

NOM

php php php

SYNTAXE

php4 [ fichier ]

28

Petit manuel Unix 2002

LANGAGES

DESCRIPTION

php est un langage de programmation objet interprt et interactif. Il est beaucoup plus souvent utilis
comme module apache pour publier des pages web dynamiques.
Certains disent que php est un acronyme signifiant : "People Hate Perl".

NOM

python python python

SYNTAXE

python [ -ccommande | fichier ]

DESCRIPTION

python est un langage de programmation objet interprt et interactif. Cest un langage trs propre que certains prfrent perl pour la programmation de CGI Web. Il existe une nombreuse bibliothque de classes
qui rend ce langage adapt toutes sortes dapplications.

Pour la petite histoire, certaines rumeurs parlent dun nouveau langage qui runirait les avantages de python
et de perl : parrot.

Petit manuel Unix 2002

29

OUTILS DE DVELOPPEMENT

NOM

cpp C language preprocessor pr-processeur de langage C

SYNTAXE

cpp [options] [entre[sortie]]

DESCRIPTION

cpp est un pr-processeur C qui est invoqu par cc en premire passe chaque compilation. On peut galement linvoquer avec loption -E de gcc. cpp accepte optionnellement deux fichiers arguments "entre" et
"sortie" qui sont respectivement lentre et la sortie de cpp. Par defaut, si "entre" (resp. "sortie") nest pas
mentionn, cpp lit lentre standard (resp. crit sur la sortie standard). cpp nest en gnral invoqu qu
partir de cc.

Les options sont les suivantes :


-Dnom=def
-Dnom dfinit la constante "nom" au sens dune directive #define. Si "=def" est omis, "nom" aura la
valeur 1.
-Irep

change le mode de recherche des fichiers arguments des directives #include. Les fichiers arguments dlimits par des guillemets sont recherchs dans le rpertoire de "entre", puis dans les
rpertoires mentionns par les options -I, puis dans le rpertoire /usr/include. Pour les fichiers
dlimits par <>, il ny a pas de recherche dans le rpertoire de "entre".

Toute directive cpp commence avec le caractre # en dbut de ligne. Voici la liste des directives :
#define nom chane
remplace chaque occurrence de "nom" par "chane" dans la suite du programme. "Chane" est une
suite de caractres dlimite par le premier sparateur aprs "nom" et la fin de la ligne. En cas de
longue dfinition, il possible de plier la ligne par "\newline".
#define nom(arg1, ..., argN) chane
definit une macro instruction. Chaque occurrence de "nom" suivi de sa liste darguments ("nom" et
la premire parenthse doivent tre imprativement accols) est remplace par "chane" o chacun
des paramtres "arg1". . . "argN" rencontrs, sont remplacs par leur valeur respective. Exemple,
avec la dfinition :
#define max(a,b) ((a) >(b) ? (a) : (b))
Lappel : max(x,y) donne aprs substitution : ((x) > (y) ? (x) : (y))
Le parenthsage est fortement conseill pour viter les effets de bord. Il faut aussi prendre garde
la manire dont sont valus les arguments. Exemple, lappel : max(x++,y++) donnera aprs
substitution : ((x++) > (y++) ? (x++) : (y++)) et lexcution, on aura incrment x
ou y deux fois, ce qui nest pas forcment ce qui tait dsir.
#undef nom
annule la dfinition de "nom".
#include fichier
#include < fichier>
inclut cet endroit le contenu de "fichier" (ce contenu passera galement dans cpp). Avec la notation <fichier>, les fichiers sont uniquement recherchs dans le rpertoire /usr/include. Lusage
veut que de tels fichiers soient suffixs par .h (head).
#endif termine une section de programme commenant par une directive de test (#if, #ifdef ou #ifndef).
Obligatoire aprs chaque directive de test.
#ifdef name
jusquau premier #endif ou #else rencontr, les lignes suivantes seront prsentes dans le programme si et seulement si "name" a t dfini prcdemment laide de la directive #define et
ceci sans avoir t lobjet dun #undef.

30

Petit manuel Unix 2002

OUTILS DE DVELOPPEMENT
#ifndef name
jusquau premier #endif ou #else rencontr, les lignes suivantes ne seront pas prsentes dans le
programme si et seulement si "name" a t dfini prcdemment laide de la directive #define et
ceci sans avoir t lobjet dun #undef.
#if expression
jusquau premier #endif ou #else rencontr, les lignes suivantes seront prsentes dans le programme si la valeur de "expression" est non nulle. Sont utilisables dans "expression", tous les
oprateurs binaires du C excepts les oprateurs dassignation, loprateur ternaire ?:, les
oprateurs unaires -, ! et . Les oprateurs ont la mme prcdence quen C. Un oprateur unaire
supplmentaire peut tre utilis. La syntaxe est defined nom ou defined ( nom ). Son valuation
est vraie si nom a t lobjet dun #define prcdent. "Expression" peut contenir galement des
constantes entires et des noms ayant t dfinis prcdemment par une directive #define.
#else

NOM

si la directive de test prcdente a pour valeur faux, les lignes suivantes jusquau premier #endif
apparatront dans le programme.

cplus-dem C++ demangler dmangleur C++

SYNTAXE

cplus-dem [noms]

DESCRIPTION

cplus-dem permet de transformer un nom de variable ou fonction C++ encod (mangler) en nom en clair.
En labsence darguments, il dcode les noms lus sur lentre standard. Exemple :
azrael $ cplus-dem __10PsqlstreamPCcT1i
Psqlstream::Psqlstream(char const *, char const *, int)
Cette commande peut tre trs utile pour retrouver des noms que lditeur de liens (ld) ne sait pas rsoudre.

NOM

doxygen documentatin generator gnrateur de documentation

SYNTAXE

doxygen

DESCRIPTION

Ce programme permet de gnrer de la documentation de programmes C++ un peu comme javadoc fait
avec des programmes Java.

NOM

gdb gnu debugger dbogueur de gnu

SYNTAXE

gdb [programme [core | NProcessus]]

DESCRIPTION

gdb est un dgogueur symbolique qui permet dexcuter sous son contrle un programme compil, avec
loption -g. On peut examiner une excution post-mortem en donnant le fichier core ou dboguer un programme qui tourne en donnant le numro du processus excutant ce programme. Les principales commandes sont :
break [fichier:]num_ligne
break [fichier:]fonction
break ... if condition

Petit manuel Unix 2002

pose un point darrt qui arrtera lexcution chaque fois que num_ligne est
atteinte, fonction est appele, la variable change de valeur ou la condition
devient vraie.

31

OUTILS DE DVELOPPEMENT
run [ arguments ]

lance lexcution du programme avec les arguments.

bt

backtrace : trace la pile dexcution.

where

idem.

print expression

affiche la valeur de lexpression qui peut inclure des appels de fonctions.

relance (continue) lexcution arrte par un point darrt.

next

excute la ligne suivante du source.

step [n]

excute la ligne suivante du source en rentrant dans les fonctions.

info break

affiche les points darrt ou de trace.

delete numro

supprime les points darrt ou de trace de numros donns.

tbreak [fichier:]num_ligne

pose un point darrt temporaire, cest--dire valable que pour une seule fois.

display expression

de mme que print, mais sexcute automatiquement chaque arrt.

quit

sort de gdb.

help [commande]

aide en ligne.

gdb peut tre excut sous le contrle dinterface graphique. Il existe le vieux programme xxgdb et le nouveau ddd qui sait mme afficher les donnes structures de faon graphique ; notons que ddd peut utiliser
dautres dbogueurs spcialiss pour dautres languages que le C ou le C++. Les inconditionels demacs
pourront toujours lutiliser pour contrler gdb ; il suffit de lappeler avec la commande emacs : M-x gdb.
emacs prompte alors pour la ligne de commande, un menu permet ensuite de contrler lexcution (break,
cont, run, etc.). emacs charge automatiquement le fichier source et laisse le curseur au point o lexcution
est arrte. De plus, on peut poser un point darrt sur la ligne courante dun source avec la commande Cx espace.

NOM

gprof graph profile profileur graphique

SYNTAXE

gprof [-a][fichier]

DESCRIPTION

gprof interprte le fichier gmon.out produit par le monitor. Ce dernier fichier est produit automatiquement
pour toute excution dun programme compil avec loption -pg. gprof donne en plus dune sortie comparable celle de gprof, le graphe dappel des fonctions avec les temps dexcution cumuls. Loption -a
supprime limpression des donnes lies des fonctions statiques.

NOM

grep global regexp print imprime un expresion rgulire

SYNTAXE

grep [-vni] [-e] expression fichiers


egrep [-vni] [-e] expression fichiers
fgrep [-vni] [-e] expression fichiers

DESCRIPTION

grep dont le nom vient de la commande de ed : g/re/p qui permet dimprimer toutes les lignes qui correspondent lexpression rgulire ralise exactement ceci. La variante egrep utilise les expressions
rgulires tendues telles que dcrites dans la documentation de awk, fgrep est seulement capable de
rechercher des chanes fixes. grep ne comprend pas les mta-caractres + ? | ne sait pas faire des
regroupements avec des parenthses, et ltoile (*) ne peut sappliquer qu une expression rgulire sexprimant sur un caractre.
Loption n permet de numroter les lignes retenues. Loption i permet dignorer les diffrences de casses

32

Petit manuel Unix 2002

OUTILS DE DVELOPPEMENT
majuscules/minuscules (sauf pour les lettres accentues !). Loption e permet de donner une expression
commenant par un tiret, qui ne sera pas prise pour une option. Ex. : grep -e -i fichier permet de
rcuprer les lignes qui contiennent lexpression rgulire -i.
Loption v permet dinverser la mise en correspondance, pour slectionner les lignes ne correspondant pas
au motif donn par lexpression rgulire.

NOM

indent indent indenter

SYNTAXE

indent fichier-source

DESCRIPTION

indent permet de rendre conforme des rgles de prsentation donnes des sources C ou C++. Il existe une
foule de paramtres pour adapter le look de sortie. Ce programme est-il ncessaire quand on a emacs ?

NOM

javadoc java documentatin documentation java

SYNTAXE

javadoc

DESCRIPTION

Ce programme permet de gnrer de la documentation de programmes Java un peu comme doxygen fait
avec des programmes C++.

NOM

ld link editor diteur de liens

SYNTAXE

ld [options] fichiers

DESCRIPTION

ld fusionne plusieurs programmes objets en un seul, rsout les rfrences externes, recherche les bibliothques. Dans le cas le plus simple, plusieurs fichiers objets (.o) sont donns en arguments. ld fait alors
ldition des liens et produit un module objet (nomm par dfaut a.out) directement excutable ou rutilisable par ld (dans ce dernier cas, il faut mentionner loption -r). Le droit x est donn au fichier a.out si
aucune erreur ne sest produite.
Pour chaque bibliothque argument (fichier suffix par .a), ld ne charge uniquement que les routines
rsolvant des rfrences externes. La recherche ne seffectue quune seule fois et lendroit o la bibliothque a t mentionne. Une bibliothque doit donc tre mentionne aprs les fichiers lui faisant
rfrence.
Les principales options :
-lx

ceci est une abrviation pour la bibliothque libx.so ou dfaut libx.a, avec "x" chane de
caractres (par exemple libm.a pour la bibliothque mathmatique). Cette bibliothque est
successivement recherche dans les rpertoires /lib, /usr/lib, /usr/local/lib. Attention,
pour des raisons susmentionnes la position de loption -l est significative. Dans le cas
dune bibliothque partage ("so" veut dire shared object), il faudra que la variable
denvironnement LD_LIBRARY_PATH contienne le rpertoire o se trouve le fichier ".so".

-Lrpertoire

ajoute le rpertoire la liste des rpertoires utiliss pour chercher les bibliothques donnes
par loption -l.

-o

la chane argument de loption -o est utilise pour nommer le fichier de sortie de ld


(nomm par dfaut a.out).

Petit manuel Unix 2002

33

OUTILS DE DVELOPPEMENT

NOM

-Bstatic

nutilise pas les bibliothques partages.

-shared

permet de crer une bibliothque partage.

ldd shared libraries dependencies dpendances par rapport aux bibliothques partages

SYNTAXE

ldd fichier-excutable

DESCRIPTION

ldd imprime les bibliothques partages ncessaires au chargement dynamique du programme excutable.

NOM

lint C program checker vrificateur de sources C

SYNTAXE

lint [options] fichiers

DESCRIPTION

lint effectue une vrification de type beaucoup plus svre que cc. Il dtecte les instructions non-portables,
les bogues, les instructions jamais excutes, les variables automatiques dclares mais jamais utilises, les
expressions logiques valeur constante. Il effectue de plus des vrifications sur les fonctions. Dtection des
fonctions appeles avec un nombre ou des types darguments diffrents, des fonctions retournant une valeur
certains endroits et rien dautres, des fonctions dont la valeur retourne nest pas utilise ou est utilise
mais pas retourne.
Ce programme est rendu obsolte avec le C ANSI et loption -Wall de gcc ou de g++ qui signalent alors
tous les warnings.

NOM

make make fabriquer

SYNTAXE

make [-f fichier_make] [noms]

DESCRIPTION

make permet le contrle de la cration et la mise jour de gros programmes modulaires. Il utilise les dates
de dernires modifications des fichiers sources pour minimiser le travail.

fichier_make (par dfaut makefile) est constitu dune suite dentres spcifiant les dpendances entre
modules et dcrit les commandes excuter pour faire les mises jour. Une entre est constitue dune liste
de noms (spars par des espaces) suivi de :, puis dune liste de noms dont dpendent les noms prcdants
: ; cette liste est termine par une fin de ligne ou un point virgule (Rappel : une ligne peut tre continue si
elle se termine par \). Toutes les lignes suivantes qui commencent par un caractre tabulation (I) constituent des ordres Bourne-shell excuter pour mettre jour les noms de lentre. Chaque ligne doit tre
une commande shell complte ; par exemple, for do done doivent tre sur la mme ligne (ou sur des
lignes termines par \).
Exemple : le fichier_make suivant spcifie que turlututu dpend des deux fichiers toto.o et titi.o construits partir de source C++ et que ldition de liens ncessite lutilisation de la bibliothque

34

Petit manuel Unix 2002

OUTILS DE DVELOPPEMENT
mathmatique.
turlututu : toto.o titi.o
g++ toto.o titi.o -o turlututu -lm
toto.o : toto.cc toto.h
g++ -c toto.cc
titi.o : titi.cc titi.h toto.h
g++ -c titi.cc
make met jour les fichiers dont les noms sont passs en arguments; si aucun nom nest donn, il met
jour les noms de la premire entre du fichier_make. Il est dusage de nommer cette premire entre all.
Dans un fichier_make une entre peut tre constitue dune dfinition de macro de la forme :
chaine1=chaine2
ou c=chaine2
Les occurrences suivantes de $(chaine1) ou $c seront remplaces par chaine2. De plus toute ligne
commenant par # est un commentaire ignor par make.
Il est galement dusage davoir un entre clean permettant de faire le mnage, comme :
/bin/rm -f *.o *.out core *
Il peut y avoir une entre install pour installer le logiciel.

NOM

nm name nom

SYNTAXE

nm [-gu] [fichiers_objets ou archive]

DESCRIPTION

nm affiche la table des symboles des fichiers. Un nom prcd de U signifie un symbole utilis et non
dfini. D signifie un nom dfini dans la section data, B un nom dfini dans la section bss (donnes non initialises) et T un nom dfini dans la section texte de programme. Avec loption -g seuls les symboles
externes (globaux) sont affichs. Loption -u naffiche que les symboles non dfinis.

NOM

od octal dump impression en octal

SYNTAXE

od [-bcdox] [fichier]

DESCRIPTION

od imprime le contenu dun fichier en un ou plusieurs formats spcifis. Si largument fichier nest pas
prcis, lentre standard est utilise. Les options de format sont :
b

interprte les octets en octal.

interprte les octets en ASCII. Les caractres non affichables sont donns comme trois chiffres octal
ou comme caractre dchappement du langage C.

interprte les mots en dcimal.

interprte les mots en octal.

interprte les mots en hexadcimal.

Petit manuel Unix 2002

35

OUTILS DE DVELOPPEMENT

NOM

patch patch rustine

SYNTAXE

patch < fichier-rustine

DESCRIPTION

patch permet dappliquer des diffrences produites par diff un ou plusieurs fichiers. Les modifications
sont faites en place ; on peut demander une copie de sauvegarde des fichiers avant modification avec
loption -b. patch dtecte automatiquement si les diffrences sont contextuelles (produites avec loption
-c) ou au format admissible par ed. Il fonctionne aussi sur des fichiers binaires.

NOM

prof profile profil

SYNTAXE

prof [-a] [-l] [fichier]

DESCRIPTION

prof interprte le fichier mon.out produit par le monitor. Ce dernier fichier est produit automatiquement
pour toute excution dun programme compil avec loption -p. prof donne en sortie pour chaque
procdure externe le pourcentage de temps pass excuter cette procdure, le nombre dappels et le temps
en millisecondes par appel. Par dfaut, la table des symboles de a.out est utilise.

Avec loption -a, tous les symboles sont utiliss et non seulement les symboles externes. Avec loption -l, la
sortie est trie sur les noms des symboles et non par ordre dcroissant des pourcentages du temps
dexcution.

NOM

ranlib make a random library fabriquer une bibliothque

SYNTAXE

ranlib fichier-archive

DESCRIPTION

ranlib permet de crer une table dindex des symboles contenus dans les composants dun fichier-archive
(cf ar). Cette table __.SYMDEF devient le premier composant. Cette bibliothque peut tre utilis ensuite
par ld si elle a le suffixe .a.

Sous Solaris ranlib est inutile car ralis automatiquement par ar ; pour que les makefiles ne posent pas de
problmes ranlib est un alias de true dans /usr/local/bin.

NOM

size size taille

SYNTAXE

size [fichier-objet]

DESCRIPTION

size donne le nombre (en dcimal) doctets occups par le texte et les donnes dun fichier-objet. Par dfaut
a.out est utilis.

NOM

strace system call trace trace des appels systmes

SYNTAXE

strace ligne de commande

36

Petit manuel Unix 2002

OUTILS DE DVELOPPEMENT

DESCRIPTION

strace va lancer la ligne de commande et tracer chaque appel systme avec leurs arguments et leur code
retour.

NOM

strip strip enlever

SYNTAXE

strip fichier-objet

DESCRIPTION

strip supprime la table des symboles contenus par dfaut dans un fichier objet. Cette opration permet de
gagner de la place (et donc du temps) quand un programme est au point (est ce que cela arrive parfois ;-).

NOM

time time temps

SYNTAXE

time commande

DESCRIPTION

La commande est excute normalement. time donne ensuite en secondes le temps rel coul pendant la
commande, le temps pris par le systme et le temps pass en excution pour la commande. time ne donne
pas lheure.

Petit manuel Unix 2002

37

EXCUTION DE PROGRAMMES

NOM

echo echo cho

SYNTAXE

echo [-ne] arguments


echo arguments

DESCRIPTION

echo crit ses arguments spars par des espaces sur une ligne de la sortie standard. Sous les unix drivs
de BSD, si largument -n est employ, la fin de ligne nest pas ajoute. Sous les unix drivs de System V
ou avec loption -e sous GNU, echo comprend galement quelques squences dchappement du langage
C:
\b "backspace"
\c impression sans fin de ligne (identique loption -n)
\f "form-feed"
\n fin de ligne ("new-line")
\r retour chariot
\t tabulation
\\ "backslash"
\n Le caractre dont le code ASCII est le nombre octal n de 1, 2 ou 3 chiffres, le tout prcd dun
zro (ex : "\033" pour "escape")

Les \ doivent tre protgs de lvaluation par le shell, soit en les doublant, soit en les encadrant par des
". Attention, comme echo est une commande intgre au shell, les effets de /bin/echo et de echo sont en
gnral diffrents.

NOM

kill kill tuer

SYNTAXE

kill [-signal] NProcessus


kill -l

DESCRIPTION

kill envoie un signal au processus de numro NProcessus. Par dfaut, le signal 15 (SIGTERM) est envoy.
On peut spcifier le signal par son numro ou par son nom (sans SIG). kill -l rappelle la liste des signaux. Avec bash sous Linux, on obtient
felix: $ kill -l
1) SIGHUP
2) SIGINT
3) SIGQUIT
4) SIGILL
5) SIGTRAP
6) SIGIOT
7) SIGBUS
8) SIGFPE
9) SIGKILL
10) SIGUSR1
11) SIGSEGV
12) SIGUSR2
13) SIGPIPE
14) SIGALRM
15) SIGTERM
17) SIGCHLD
18) SIGCONT
19) SIGSTOP
20) SIGTSTP
21) SIGTTIN
22) SIGTTOU
23) SIGURG
24) SIGXCPU
25) SIGXFSZ
26) SIGVTALRM
27) SIGPROF
28) SIGWINCH
29) SIGIO
30) SIGPWR
En gnral, le processus est tu lors de la rception dun signal sauf sil le prend en compte ; mais il existe
le signal 9 (SIGKILL) qui ne peut pas tre dtourn, et kill -9 nnn ou kill -KILL nnn tue toujours le processus identifi par nnn.

Par convention, le numro de processus 0 signale tous les processus du groupe courant (cest--dire en
gnral fils du login courant ou contrls par le terminal).
Les processus "signals" (ils ne sont pas toujours tus, contrairement au nom de la commande) doivent
appartenir lusager, sauf si lusager est le super utilisateur. Les numros de processus peuvent tre
obtenus par la commande ps. Voir aussi la commande killall.

38

Petit manuel Unix 2002

EXCUTION DE PROGRAMMES

NOM

killall kill all tuer les tous

SYNTAXE

killall [-signal] [-i] commande


kill -l

DESCRIPTION

killall fonctionne comme kill mais envoie des signaux aux processus faisant tourner la commande donne,
ce qui permet de navoir pas chercher leurs numros. Loption -i demande confirmation avant denvoyer le
signal chaque processus.

NOM

nice nice mignon

SYNTAXE

nice [-nombre] commande

DESCRIPTION

nice excute la commande avec une priorit faible. La priorit est incrmente de la valeur de nombre (10
par dfaut), un nombre lev donnant une plus faible priorit.

Cette commande est utile pour excuter une commande en arrire plan.

NOM

nohup no hangup ne pas raccrocher

SYNTAXE

nohup ligne de commande

DESCRIPTION

nohup permet de lancer une excution qui pourra se poursuivre aprs la fin de session, car les signaux
SIGHUP et SIGTERM sont ignors. La priorit est incrmente automatiquement de 5 (correspond
nice -5). Si les sorties standard et derreur ne sont pas dtournes dans un fichier, elles se retrouvent
dvies dans le fichier ./nohup.out ou dfaut de droits dcriture dans $HOME/nohup.out.

NOM

script script script

SYNTAXE

script [ fichier ]

DESCRIPTION

script fait une copie dans le fichier (typescript par dfaut) de tout ce qui saffiche lcran. Attention,
il y a bien stockage de tous les caractres taps ou affichs y compris les caractres deffacement de caractre, de mot ou de ligne). Pour conserver limage dune session, on pourra prfrer le mode shell de
emacs.

NOM

sleep sleep dormir

SYNTAXE

sleep temps

DESCRIPTION

sleep suspend lexcution du processus pendant un certain temps exprim en secondes.

On peut utiliser sleep pour excuter une commande aprs un certain temps :
{ sleep 500; commande } &
ou pour excuter une commande priodiquement :

Petit manuel Unix 2002

39

EXCUTION DE PROGRAMMES
while true; do commande ; sleep 60; done
ou mieux :
while commande; do sleep 60; done
qui permet darrter lexcution priodique lors du premier chec de la commande.

40

Petit manuel Unix 2002

DEMANDES DTATS

NOM

date date date

SYNTAXE

date

DESCRIPTION

date crit comme son nom le laisse supposer la date mais aussi lheure courante. Attention time donne des
temps machine et non lheure courante.

NOM

file file fichier

SYNTAXE

file fichiers

DESCRIPTION

file essaie de dterminer le type des fichiers (texte, binaire, C, ...) par examen des 512 premiers caractres
et du systme de fichiers.
Note : il arrive que file se trompe!

NOM

id identifier identifiant

SYNTAXE
id

DESCRIPTION

id imprime les noms et les numros didentifiants (ID) rels et effectifs de lutilisateur et de ses groupes.

NOM

ls list lister

SYNTAXE

ls [-abCcdFfgilmnopqRrstux] [noms]

DESCRIPTION

Pour chaque nom de rpertoire argument ls liste leurs contenus. Pour chaque fichier argument, ls redonne
le nom du fichier et, suivant les options, fourni dautres informations. Par dfaut, ls donne une liste trie
par ordre alphabtique. Si aucun nom nest donn en argument, le rpertoire de travail est list. Voici une
description des options les plus importantes :
-a

toutes les entres sont listes y compris celles dont le nom commence par ".".

-c

utilise la date de dernire modification du "i-node" (droits, crateur,. . .) la place de la date de


dernire modification du fichier pour le tri (-t) ou laffichage (-l).

-C

force la sortie en multi colonne.

-d

si un argument est un rpertoire, liste juste son nom et non son contenu.

-g

liste en format long comme -l mais indique le nom du groupe du crateur au lieu du crateur. -lg
donne les deux.

-F

met un "slash" (/) aprs chaque rpertoire, une toile (*) aprs chaque fichier excutable et une
arobace (@) aprs des liens symboliques.

-i

imprime le "i-number" en premire colonne pour chaque entre.

-l

liste en format long donnant le type (d, b, c, p, l, s ou -), les droits (pour le crateur, le groupe du
crateur, les autres), le nombre de liens, le nom du crateur, la taille en octets, la date de dernire
modification et le nom de lentre.

Petit manuel Unix 2002

41

DEMANDES DTATS
-m

la liste est spare par des virgules.

-n

identique loption -l lexception du nom du crateur et de son groupe, qui ont remplacs par leurs
numros (UID et GID).

-R

liste rcursivement les sous rpertoires.

-r

renverse lordre du tri.

-s

donne la taille en blocs de 512 octets (tient compte des blocs indirects).

-t

la liste est trie par date de dernire modification (les plus anciens dabord).

-u

utilise la date de dernire utilisation pour le tri (-t) ou pour laffichage (-l).

Notons enfin loption h non standard bien pratique avec loption l qui affiche la taille en format plus lisible
pour un humain.

NOM

ps process status statut des processus

SYNTAXE

ps [options]

DESCRIPTION

ps donne la description des processus en cours. Sans option, ps fournit des informations sur les processus
associs au terminal courant. Ces informations sont le numro de processus, le nom de la ligne associ au
terminal, le temps total dexcution (min:sec) et le nom de la commande.
Cette commande na pas les mmes options, ni les mmes sorties sous les unix drivs de BSD (SunOs 4.1)
et sous SVR4
Description de ps sous System V :
Certaines options utilisent des listes en argument. Ces listes peuvent tre spcifies sous deux formes : une
liste ditems spars par des virgules ou une liste dlimite par des doubles quotes, contenant des items
spars soit par des virgules, soit par un ou plusieurs blancs.
Les principales options sont les suivantes :

-e

description de tous les processus.

-d

description de tous les processus, excepts les processus pres dun groupe de processus.

-a

identique loption -d, sans la description des processus associs un terminal.

-f

gnre un listing complet (voir ci-dessous).

-l

gnre un listing en format long (voir ci-dessous).

-tlisterm

description uniquement des processus attachs aux terminaux spcifis par "listerm". Un terminal peut tre identifi soit par le nom de base du fichier spcial associ (ex : tty14), soit seulement par le numro de la ligne si le nom de base du fichier spcial commence par "tty" (ex :
14).

-plistproc

description uniquement des processus dont le numro (pid) est contenu dans "listproc".

-ulistuid

description uniquement des processus dont le numro de propritaire (uid) est contenu dans
"listuid".

Avec loption -f, ps tente pour chaque processus de donner le nom complet de la commande ainsi que ses
arguments. En cas dchec, ps affiche entre crochets le nom de la commande tel quil apparat sans loption
-f.
Le nombre de colonnes affiches varie avec les options -f et -l. Elles sont notes entre parenthses en face
des colonnes quelles font apparatre. La liste vide "()" signifie que la colonne apparat dans tous les cas.
F

42

(l)

flag associ au processus. 0: "swapp", 1 : en mmoire, 2 : processus systme, 4 : en

Petit manuel Unix 2002

DEMANDES DTATS
attente, 10 : en cours de "swapping".
S

(l)

tat du processus. 0 : non existant, S : endormi, W : en attente, R : en excution, I :


intermdiaire, Z : termin, T : arrt, X : en croissance.

UID

(f,l)

numro dutilisateur du propritaire. Sans loption -f, celui-ci est remplac par le
nom de lutilisateur.

PID

()

numro du processus (utile pour le tuer).

PPID

(f,l)

numro du processus pre.

(f,l)

utilisation du processeur.

PRI

(l)

priorit du processus; un grand nombre donne une faible priorit.

NI

(l)

lanc avec une priorit calcule.

ADDR

(l)

adresse du processus en mmoire si rsident ou sur disque.

SZ

(l)

taille en blocs de limage mmoire du processus.

WCHAN

(l)

vnement pour lequel le processus attend ou est endormi.

STIME

(f)

date de cration du processus.

TTY

()

numro du terminal contrlant le processus.

TIME

()

temps total dexcution du processus.

COMMAND ()

le nom de la commande.
Description de ps sous BSD :

ps sans autre option liste les processus de lutilisateur courant avec leur identifiant PID, le terminal de
contrle TT, le temps total unit centrale utilis TIME, ltat du processus STATE et le nom de la commande COMMAND.
Ltat est donn avec 4 lettres, exemple "RWNA".
La premire lettre indique si le processus est ligible ou non :
R ligible
T processus stopp
P en attente dune page
D attente non interruptible
S endormi depuis moins de 20 secondes
I (idle) endormi depuis plus de 20 secondes
Z (zombie) termin et attendant un wait du pre.
La deuxime lettre indique si le processus est "swapp"
un espace signifie que le processus est charg en mmoire.
W swapp
> le processus a prcis une limite sur ces besoins en mmoire et les a dpass, ce processus ne peut
pas tre swapp.
La troisime lettre donne des informations sur sa priorit (cf nice)
espace pour une priorit ordinaire
N la priorit du processus est rduite

Petit manuel Unix 2002

43

DEMANDES DTATS
<

la priorit du processus est augmente

La dernire lettre donne des indications sur le remplacement des pages tel quil peut tre spcifi par le programme :
un espace pour un traitement ordinaire
A

spcifie que le processus fait des rfrences alatoires sur toutes les pages, typiquement un
programme qui fait du ramasse miettes.

pour un programme qui utilise la mmoire virtuelle pour traiter squentielement une grande
quantit de donnes.

Les principales options supplmentaires sont :


-a

description des processus possds par un utilisateur quelconque.

-x

description des processus non associs un terminal.

-tterm

description uniquement des processus attachs au terminal spcifis par "term". Un terminal
doit tre identifi de la mme faon que ps laffiche. Doit tre la dernire option.

Laffichage peut tre contrl par les options jlun. Avec j on a un affichage utile pour le contrle des
tches : PPID, PID, PGID, SID, TT, TPGID, STAT, UID, TIME et COMAND. Avec l sont affichs : F,
PPID, CP, PRI, NI, SZ, RSS et WCHAN. Loption u donne plus dinformations sur les usagers : USER,
%CPU, %MEM, SZ, RSS et START. Loption v donne des informations sur lutilisation de la mmoire
virtuelle : RE, SL, PAGEIN, SIZE, RSS, LIM, %CPU et %MEM.
USER

nom de lutilisateur.

%CPU

pourcentage de temps CPU utilis (moyenne sur la dernire minute).

NI

modification de la priorit (cf nice).

SZ

44

SIZE

taille totale des segments de donnes et de la pile en kilo-octets.

RSS

taille mmoire physique utilise.

LIM

limite logicielle la taille mmoire.

%MEM

pourcentage de la mmoire physique de la machine utilise par le processus.

RE

temps en secondes pendant lequel le processus a t rsident en mmoire.

SL

temps pendant lequel le processus a t endormi.

PAGEIN

nombre dentres sorties disques rsultant de dfaut de pages.

UID

identifiant de lutilisateur.

PPID

identifiant du processus pre.

SID

identifiant du processus initiateur de la session.

PGID

identifiant du groupe de processus du processus.

TPGID

identifiant du groupe de processus associ au terminal TT.

Petit manuel Unix 2002

DEMANDES DTATS

NOM

CP

utilisation CPU court terme utilis pour lordonnancement.

PRI

priorit du processus (valeur ngative en cas dattente ininterruptible).

START

date et heure de cration.

WCHAN

vnement sur lequel le processus est bloqu.

tat donn par un nombre correspondant ltat du processus STAT.

pwd print working directory imprime le rpertoire de travail

SYNTAXE

pwd

DESCRIPTION

pwd imprime le nom du rpertoire de travail ou courant.

NOM

rusers remote users utilisateurs distants

SYNTAXE

rusers

DESCRIPTION

Donne le nom de login des utilisateurs connects sur les machines du rseau local.

NOM

tty terminal terminal

SYNTAXE
tty

DESCRIPTION

tty donne le nom du terminal de contrle du processus.

NOM

users users utilisateurs

SYNTAXE

users

DESCRIPTION

Donne le nom de login des utilisateurs connects.

NOM

w who and what qui et quoi

SYNTAXE

w [utilisateur]

DESCRIPTION

w fait un rsum de lutilisation du systme. Si utilisateur est prcis, seule son activit est rapporte.

Petit manuel Unix 2002

45

DEMANDES DTATS

NOM

who who qui

SYNTAXE

who [am i]
whoami

DESCRIPTION

who donne pour chaque usager connect : le nom de login, le nom de la ligne associe au terminal, la date
de connexion. whoami donne le nom de lutilisateur connect.

46

Petit manuel Unix 2002

DIVERS

NOM

bc basic calculator calculette basique

SYNTAXE
bc

DESCRIPTION

bc est une calculette interactive en prcision illimite. Elle affiche la valeur des expressions tapes en
entre. Il est galement possible de dfinir des fonctions, et il existe des ordres de contrle ressemblant
ceux du C.
Un programme bc est compos de dfinitions de fonctions et dune suite dinstructions. Les expressions
sont des instructions particulires. Les expressions peuvent utiliser des noms de variables. Voici une dfinition plus formelle du langage :
Nom

Variables simples sur une lettre : l.


lment de tableau : t[expr], o t est le nom du tableau et lexpr est une expression valide de bc. Les
mots obase ibase et scale qui reprsentent respectivement les bases de sortie, dentre et le nombre
de chiffres dcimaux aprs la virgule afficher.

Expressions
Un nom
Un nombre de longueur quelconque
( expression )
sqrt( expression )
length( expression )
scale( expression )
l( expression, expression, ...)

pour la racine carre


pour le nombre de chiffres significatifs
pour le nombre de chiffres aprs la virgule
pour un appel de fonction

Oprateurs
+ - * / %
++ -== <= >= != < >
= += -= *= /= %= =

% pour le reste, pour la puissance


pr et post incrmentation
oprateurs relationnels
affectations

Instructions

linstruction vide est une instruction


expression
{ instruction ; instruction ... }
if ( expression ) instruction
while ( expression ) instruction
for ( expression ; expression ; expression ) instruction
break
quit

Dfinition de fonction
define l (l, ..., l ) {
auto l, ...,l
instruction; ... instruction
return( expression )
}

Petit manuel Unix 2002

le nom est sur une lettre l


dfinition de variables locales

47

DIVERS

NOM

cal calendar calendrier

SYNTAXE

cal [mois] anne

DESCRIPTION

cal imprime un calendrier de lanne donne comprise entre 1 et 9999. Si mois est spcifi (un nombre de 1
12) le calendrier de ce seul mois est produit.
Ce calendrier est valable pour lAngleterre et ses colonies.
Essayez septembre 1752.

NOM

expr expression expression

SYNTAXE

expr arguments

DESCRIPTION

expr crit sur la sortie standard le rsultat de lvaluation de lexpression donne en argument. Est surtout
utilis dans des procdures de commandes du Bourne shell. Chacun des mots de lexpression est un argument spar, ainsi les termes de lexpression doivent tre spars par des espaces.

Dans la liste des oprateurs qui sont donns ensuite, les mta-caractres du shell quil est ncessaire de
quoter sont prcds de \. Les oprateurs sont donns par ordre de priorit croissante. Les oprateurs de
mme priorit sont regroups entre accolades {}.
expr \| expr
Retourne la premire expression si elle nest ni vide ni gale 0, la deuxime sinon.
expr \& expr
Retourne la premire expression si aucune des deux ne sont vides ou gales 0, renvoie 0 sinon.
expr { =, \>, \>=, \<, \<=, != } expr
renvoie le rsultat de la comparaison numrique si les deux expressions sont entires, lexicale
sinon.
expr { + , - }
rend la somme ou la diffrence des deux entiers.
expr { \*, /, % } expr
rend le produit, le quotient ou le reste de la division des deux entiers.
chane : expression-rgulire
filtrage. Rend le nombre de caractres correspondants, 0 en cas dchec. Une portion de la chane
peut tre extraite en mettant une partie de lexpression rgulire entre \( et \).
match chane expression-rgulire
autre syntaxe plus explicite pour le filtrage.
substr chane entier1 entier2
extrait la sous chane de caractres commenant la position entier1 et de longueur entier2. Ne
pas donner de valeur ngative aux 2 entiers.
index chane liste-de-caractres
renvoie la position du premier caractre de la chane qui est membre de la liste de caractres.
lenght chane
rend la longueur de la chane.

48

Petit manuel Unix 2002

DIVERS
( expression )
parenthsage.
expr ne traite les oprations arithmtiques que sur des entiers. Exemples :

NOM

a=expr $a + 1

ajoute 1 la valeur de a.

expr $a : .*/\(.*\) \| $a

si a contient un nom de fichier, expr renvoie le nom de base du


fichier. Ne marche pas si a vaut seulement /, car expr le comprend comme un oprateur de division.

expr /$a : /.*/\(.*\)

lajout de / supprime lambigut.

expr $VAR : .*

retourne la longueur de la chane de caractres.

man manuel manuel

SYNTAXE

man [chapitre] commande


man -k mot

DESCRIPTION

man trouve et affiche la section du manuel correspondant au titre dans le chapitre donn. Le titre doit tre
donn en minuscules. Si le chapitre nest pas prcis le titre est cherch dans tous les chapitres du manuel.
Pour prciser le chapitre, deux mthodes : sous Linux cest la BSD et il suffit de donner un numro, sous
Solaris cest la System V, il faut faire prcder le numro de loption -s. La variable denvironnement
MANPATH prcise quels sont les rpertoires dans lesquels on peut trouver des chapitres du manuel.
Avec loption -k man affiche les noms des commandes dont le nom ou la description brve contiennent le
mot.
Le manuel unix est dcoup en chapitres qui dcrivent :
1

Les commandes utilisables partir du shell.

Les appels systmes raliss par le noyau.

Les fonctions des bibliothques standards.

Les fichiers spciaux que lon trouve dans /dev.

Le fichiers de configuration (ex. : /etc/passwd).

Les jeux.

En autres choses le code ascii : ascii et iso_8859_1.

Les commandes dadministration systme.

Sur Linux seulement, la description des fonctions internes au noyau.

Exemples, man(1)
du manuel :
$ man
$ man
$ man

Petit manuel Unix 2002

dcrit la commande man, alors que man(7) dcrit le paquetage de macros de formatage
man
7 man
-s 7 man

49

DIVERS

NOM

test test tester

SYNTAXE

test expression
[ expression ]

DESCRIPTION

test value lexpression. Si lexpression est vraie, le code retour est zro, sinon un code retour non nul est
retourn. Lexpression vide est considre comme fausse. La deuxime forme dappel est quivalente la
premire.
L expression est construite partir de :
-r fichier

vrai si le fichier existe avec le droit r.

-w fichier

vrai si le fichier existe avec le droit w.

-x fichier

vrai si le fichier existe avec le droit x.

-f fichier

vrai si le fichier existe et quil nest pas un rpertoire.

-d fichier

vrai si fichier est un rpertoire.

-s fichier

vrai si le fichier existe avec une taille non nulle.

-t [descripteur_de_fichier]
vrai si le fichier de descripteur donn (par dfaut 1 : lentre standard) est ouvert et est
associ avec un terminal.
-z c1

vrai si la longueur de la chane c1 est zro.

-n c1

vrai si la longueur de la chane c1 est non nulle.

vrai si c nest pas la chane nulle.

c1 = c2

vrai si les chanes sont gales.

c1 != c2

vrai si les chanes sont diffrentes.

n1 -eq n2

vrai si les entiers sont gaux. -ne, -gt, -ge, -lt ou -le peuvent tre utilis la place de -eq
pour tester respectivement la non galit, >, >=, < ou <=.

Ces termes primaires peuvent tre combins avec les oprateurs suivants :
!

ngation unaire

-a

et logique

-o

ou logique

( expr )

regroupement; les parenthses ayant une signification spciale pour shell doivent tre
prcdes de "\"

Note : -a a une plus grande priorit que -o.

50

Petit manuel Unix 2002

COMMUNICATION ENTRE USAGERS

NOM

mail mail courrier

SYNTAXE

mail adresse-email
mail

DESCRIPTION

mail permet dchanger du courrier entre les utilisateurs.

Dans la premire forme dappel, mail dpose dans la bote lettres de ou des utilisateurs une copie de
lentre standard jusqu une ligne constitue uniquement dun point ou du caractre fin de fichier (D).
Ladresse e-mail est de la forme alias@domaine ; la vtre est :
Prnom.Nom@etu.info.unicaen.fr
Vos enseignants ont des comptes dans le domaine info et, par exemple, mon adresse est :
Jacques.Madelaine@info.unicaen.fr
La deuxime forme dappel permet la lecture du courrier reu. Si votre bote lettres est vide, vous sortez
automatiquement de mail. Si elle contient des messages, mail affiche leur nombre et le nombre dentre eux
que vous navez jamais lu. Le message courant est alors le dernier message lu.
Aprs avoir lu un message, vous pouvez le dtruire (d). Ceci nest pas irrversible; le message peut tre
rappel (u) par son numro, ou la session peut tre annule (x). Vous pouvez rpondre un message (r
ou R), le faire suivre (f). Vous pouvez terminer une session en mettant jour votre bote lettres (q)
ou non (x). En cas de mise jour, les destructions de messages deviendront effectives (vous ne pourrez
plus les rcuprer).
Il existe des programmes plus conviviaux pour lenvoi et la lecture du courrier : netscape, le mode RMAIL
ou vm sous emacs, pine, ou encore eudora. Notez quau dpartement, comme vos botes lettres ne sont
pas directement accessible sur les stations, vous ne pourrez jamais les lire avec la simple commande mail.

NOM

mesg message message

SYNTAXE

mesg [n] [y]

DESCRIPTION

mesg permet de protger son terminal en criture (option n) ou non (option y). Ceci permet de suspendre
ou non la rception de messages interactifs (cf write).

NOM

talk talk parler

SYNTAXE

talk usager

DESCRIPTION

talk permet de mener une discussion interactive par crit (et non pas par oral) avec lusager. Ce dernier peut
tre connect sur une machine distante, et dans ce cas, il faut prciser le nom de la machine :
usager@machine.

NOM

write write crire

SYNTAXE

write usager [terminal]

Petit manuel Unix 2002

51

COMMUNICATION ENTRE USAGERS

DESCRIPTION

write recopie les lignes entres sur votre terminal sur le terminal de lusager spcifi. Lusager ne doit pas
avoir protg son terminal en criture laide de la commande : mesg n

52

Petit manuel Unix 2002

OUTILS RSEAUX

NOM

ftp file transfer program programme de transfert de fichier

SYNTAXE

ftp machine

DESCRIPTION

Ce programme permet de transfrer des fichiers sur le rseau entre deux machines. Les principales commandes sont :
cd rpertoire
pwd
dir
put nom-local [ nom-distant ]
get nom-distant [ nom-local ]

On peut prfrer utiliser un programme avec interface graphique et menus droulants comme ftptool ou un
navigateur Web en prcisant comme URL : ftp://[login@]machine.

NOM

sftp secure file transfer program programme de transfert scuris de fichier

SYNTAXE

ftp machine

DESCRIPTION

Ce programme de transfert de fichier a une interface identique ftp mais utilise un canal ssh pour le transport.

NOM

web browsers

navigateurs web

SYNTAXE

lynx
mosaic
netscape
mozilla
opera

DESCRIPTION

Ces navigateurs permettent de surfer sur les vagues binaires de linternet. lynx permet de fonctionner sans
mode graphique. mosaic est cit simplement titre historique.

Vous avez la possibilit de crer votre page personnelle. Il vous suffit de crer le rpertoire /public_html et dy mettre un fichier index.html qui contient la description en html de votre page
daccueil dURL (Unique Ressource Locator) :
http://www.etu.info.unicaen.fr/votre_login
Il faut bien sr que "other" ait r sur les fichiers publis ainsi que le droit x sur les rpertoires les contenant.

Petit manuel Unix 2002

53

MESURES ET SURVEILLANCE DE SYSTME

NOM

arch architecture architecture

SYNTAXE

arch

DESCRIPTION

arch affiche le nom de larchitecture de la machine courante. Sous Linux, cette commande est quivalente
uname -m et affiche en fait le type du processeur : "i386", "i686", "sparc", ...

NOM

free free memory mmoire libre

SYNTAXE

free [-t] [-s dlai]

DESCRIPTION

free affiche la mmoire centrale et dchange (swap) libre et utilise. Loption -t ajoute une ligne donnant
le total de la mmoire virtuelle. Loption -s active un affichage priodique tous les dlais secondes la
manire de vmstat.

NOM

host host hte

SYNTAXE

host [options] nom

DESCRIPTION

host permet dinterroger le service de noms de domaines (Domain Name Service). Par dfaut, il donne la
correspondance entre noms et numro Internet. Loption -v ajoute les informations sur les dures de vie
(ttl) des donnes, ainsi que sur les noms de serveurs qui ont autorits pour ces noms. Loption -a va lister
toutes les donnes dfinies pour ce nom (utile pour un nom de domaine). Enfin essayer la ligne suivante
pour avoir un rsum et une validation dune zone entire : host -G -S -C -A -L 1 zone.

NOM

lsof list open files liste des fichiers ouverts

SYNTAXE
lsof

DESCRIPTION

lofs affiche les fichiers ouverts de chaque processus sous forme dun tableau de 9 colonnes :

54

COMMAND

pour le nom de la commande.

PID

pour le numro du processus.

USER

pour le login de lutilisateur.

FD

indique le numro descripteur de fichier ouvert suivi de r, w ou u suivant quil est ouvert en
lecture, criture ou les deux et ventuellement dun caractre indiquant le type de verrou
(lock) appliqu au fichier. Sinon, il est indiqu : cwd pour le rpertoire courant, ltx pour
une bibliothque partage (library text), mem pour un fichier "mapp" en mmoire, txt
pour un fichier programme (segment texte).

TYPE

pour le type, ex. : REG pour un fichier ordinaire, DIR pour un rpertoire, PIPE pour un
pipe, BLK pour un fichier spcial block, CHR pour un fichier spcial charactre, inet
pour une socket internet, unix pour une socket Unix.

DEVICE

pour les numros de priphrique contenant le fichier.

Petit manuel Unix 2002

MESURES ET SURVEILLANCE DE SYSTME

NOM

SIZE

donne la taille en octets.

NODE

donne le numro de i-node.

NAME

donne le nom complet dans la hirarchier du systme de fichiers.

netstat net statistics statistiques rseau

SYNTAXE

netstat [-irgM] [-vnp]

DESCRIPTION

netstat sans argument liste toutes les connexions tablies sur des sockets du domaine IP ou Unix. Avec
largument -a, mmes les sockets sans connexions sont listes. Avec les arguments :

-r

affiche la table de routage comme route.

-g

affiche les appartenances des interfaces aux groupes multicast.

-i

liste les interfaces la manire de ifconfig.

-M liste toutes les sessions.


Les options de contrle v n p permettent respectivement dtre plus bavard (verbeux), de nafficher que les
numros des machines et de ne pas faire la rsolution de noms DNS et enfin dafficher les numros de processus ayant tabli les connexions.

NOM

perfmeter performance meter mesure de performance

SYNTAXE

perfmeter

DESCRIPTION

Cest un outil graphique daffichage de plusieurs mesures dutilisation de la machine locale ou dune
machine distante. Cette commande est spcifique Solaris.

NOM

rup remote time up temps de marche distant

SYNTAXE

rup [machines]

DESCRIPTION

Idem uptime, mais pour toutes les machines du rseau local.

NOM

top top dessus

SYNTAXE
top

DESCRIPTION

top affiche et rafrachit toutes les secondes diverses statistiques dutilisation du systme et les processus les
plus gourmands. Est disponible sur Linux.

Petit manuel Unix 2002

55

MESURES ET SURVEILLANCE DE SYSTME

NOM

uname name of current system nom du systme

SYNTAXE

uname [-snrvma]

DESCRIPTION

uname affiche des informations concernant la machine et le systme dexploitation sur lequel il est
invoqu. Les options :

-s --sysname

affiche le nom du systme dexploitation (ex. : Linux, SunOS).

-n --nodename

affiche le nom de lhte, comme hostname.

-r --release

affiche le numro de version du systme dexploitation.

-v

affiche la version du systme dexploitation (celui de la commande est affich par --version).

-m --machine

affiche le type du processeur (comme arch).

-a --all

affiche toutes les informations prcdentes. Ex. :


Linux london 2.4.9-3-dep #3 ven ao 24 20:45:31 CEST 2001 i686 unknown

NOM

uptime time up temps de marche

SYNTAXE

uptime

DESCRIPTION

Donne lheure, le temps coul depuis le dmarrage du systme, le nombre dutilisateurs, et la charge
("load") exprime comme le nombre moyen de processus actifs dans la dernire minute, les 5 dernires
minutes et les 15 dernires minutes.

NOM

vmstat virtual memory statistics statistique de la mmoire virtuelle

SYNTAXE

vmstat dlai nombre_de_fois

DESCRIPTION

vmstat affiche des statistiques dutilisation de la machine un certain nombre de fois et tous les dlais secondes.

56

Petit manuel Unix 2002

DITEURS DE TEXTES

NOM

ae - ae - ae

SYNTAXE

ae [ fichier ]

DESCRIPTION

ae est un petit diteur plein cran qui peut fonctionner avec des modes dditions (comme vi) ou sans
(comme emacs). Il est hautement configurable et na pas besoin de X11. La configuration par dfaut donne
des commandes qui le font ressembler un petit emacs. Voici la liste des commandes dans laquelle X signifie Contrle-X ou C-X :

File read and write


Quit save, Abort
Macros, Version
Help on and off
Redraw
Insert
Literal escape
Undo

X I XW
XC Q
M XV
XH
L
typed keys
[
_

Left, down, up, right


Word left and right
Page down and up
Front and end of line
Top and end of file
Delete left and right
Block, cut, paste
Invert case

B N P F
<esc>B <esc>F
V
<esc>V
A
E
<esc>< <esc>>
BACKSPACE DEL
@
W
Y
<esc>C

Vous pouvez aussi vous servir directement des flches du clavier pour dplacer le curseur. Vous noterez, par
rapport emacs, labsence de la commande XS, mais la commande XW propose le nom de fichier et il
suffit de rpondre par un retour-chariot.

NOM

emacs - emacs - emacs

SYNTAXE

emacs [ fichier ]

DESCRIPTION

est lditeur plein cran le plus complet du march. Il est disponible sur la quasi totalit des systmes
dexploitation. Il ne diffrencie pas mode de commande ou mode dinsertion, en fait tout caractre est une
commande et laction associe un caractre imprimable est dinsrer ce caractre dans le tampon courant.
Les commandes sont les caractres de contrle ou une squence escape [<esc>,caractre] ; les premiers
sont nots X ou C-X, les squences escape sont notes M-X, car on peut les obtenir en enfonant simultanment la touche Mta (parfois Alt avec certains claviers) et le caractre. Attention les touches contrle et
mta sont des modificateurs quil faut enfoncer simultanment avec une autre touche (comme pour les
majuscules), alors que <esc> est un caractre ASCII.
emacs possde des modes lui permettant, en particulier, de faire de la coloration syntaxique en fonction du
langage dit, et ceci de faon automatique (sil est bien configur :-).

emacs peut grer plusieurs tampons (buffer) qui contiennent des images de fichiers et il vous demandera
denregistrer les modifications si ce nest pas fait lorsque vous le quitterez. Une copie de lancienne version
du fichier est toujours cre avec comme nom le nom du fichier plus un tilde (). En cours de travail, emacs
sauvegarde priodiquement ltat courant du tampon dans un fichier de nom le nom du fichier original
encadr de dises (#).
emacs peut afficher le contenu des tampons dans diffrentes fentres dun ou plusieurs cadres (frame).

Petit manuel Unix 2002

57

DITEURS DE TEXTES
Liste des menus de base
Item

Raccourcis

Buffer->List All Buffers

C-x C-b

Affiche tous les tampons ouverts

Files->Open File
Files->Open Directory
Files->Save Buffer
Files->Save Buffer As

C-x
C-x
C-x
C-x

Ouvre un fichier dans un nouveau tampon


Affiche le contenu dun rpertoire
Enregistre le tampon courant
Enregistre sous un nom diffrent

Files->Revert Buffer
Files->Recover Session
Files->Insert File
Files->Kill Current Buffer
Files->Open New Frame
Files->Open New Display
Files->Delete Frame
Files->Split Window
Files->One Window
Files->Quit Emacs

C-f
d
C-s
C-w

C-x i
C-x k
C-x 5 2
C-x
C-x
C-x
C-x

5 0
2
1
C-c

Tools->Print->Print Buffer
Tools->Print->Print Region
Tools->Print->Postscript Print Buffer
Tools->Print->Postscript Print Region
Tools->Compare->Two Files
Tools->Compare->Two Buffers
Tools->Compare->Three Files
Tools->Compare->Three Buffers
Tools->Compare->Two Directories
Tools->Compare->Three Directories
Tools->Compare->...
Tools->...
Edit->Undo
Edit->Cut
Edit->Copy
Edit->Past
Edit->Text Properties
Edit->Spell
Search->Search
Search->Regexp Search
Search->Search Backwards
Search->Regexp Search Backwards
Search->Repeat Search
Search->Repeat Search Backwards
Search->Query Replace
Help->...

58

Action

Recharge le fichier depuis le disque


Recupre une session Emacs (jamais utilis)
Insre un fichier la position du curseur
Ferme le tampon courant
Ouvre un nouveau cadre
Ouvre un nouveau cadre depuis un autre serveur X
Dtruit le cadre courant
Dcoupe la fentre courante en deux
Passe en mode 1 fentre
Sauvegarde et quitte Emacs
Imprime le tampon courant
Imprime la slection
Imprime le tampon au format PS
Imprime la slection au format PS
Comparer deux fichiers
Comparer deux tampons
Comparer trois fichiers
Comparer trois tampons
Comparer deux rpertoires
Comparer trois rpertoires
Fonctionnalits peu utilises
Fonctionnalits peu utilises

CC-w
C-y
C-espace

C-s
C-r
C-s
C-r
MAide en ligne

Annule la dernire action


Coupe la partie slectionne
Copie la slection
Colle la slection
Dbut de slection
Proprits du texte (couleurs ...)
Correcteur orthographique
Effectue une recherche incrmentale
Effectue une recherche dexpression rgulire
Recherche incrmentale arrire
Recherche arrire dexpression rgulire
Poursuivre la recherche
Poursuivre la recherche
Remplacement interactif
consulter !

Petit manuel Unix 2002

DITEURS DE TEXTES
Les fichiers et les tampons
Squence

Menu

Commande

Action

C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x

Files->Open File

find-file
find-alternate-file
insert-file
save-buffer
write-filed
save-buffers-kill-emacs
switch-to-buffer
list-buffers

charge un fichier
remplace un fichier
insre un fichier sous le curseur
enregistre le fichier
enregistre sous ...
sort dEmacs
affiche le buffer choisi
affiche la liste des tampons

C-f
C-v
i
C-s
C-w
C-c
b
C-b

Files->Insert File
Files->Save Buffer
Files->Save Buffer As
Files->Exit Emacs
Buffers->tampon
Buffers->list All Buffers

Dplacement, dition, suppression, rgions et recouvrement


Squence

Commande

Action

C-a
C-b
C-e
C-f
C-n
C-o
C-p
C-t
C-v

beginning-of-line
backward-char
end-of-line
forward-char
next-line
open-line
previous-line
transpose-chars
scroll-up

dbut de la ligne
caractre prcdent
fin de ligne
caractre suivant
ligne suivante
ouvre la ligne
ligne prcdente
change deux caractres
dfilement vers le haut

C-d ou Suppr
M-d
M-DEL
C-k
C-w
M-w
C-y
C-@ ou C-espace
C-

delete-char
kill-word
backward-kill-word
kill-line
kill-region
kill-ring-save
yank
set-mark-command
undo

suppr. du car. sous le curseur


suppr. du mot suivant
suppr. du mot prcdent
suppr. du reste de la ligne
suppr. de la rgion marque
copie la rgion
Recopie la dernire suppression
Marque la fin ou le dbut dune rgion
annuler

Recherche et substitution
Squence

Suppression

C-s
C-r
RETURN
C-g
DEL
C-s RETURN
C-r RETURN
Mespace ou y
DEL ou n
,
!

Lance une recherche incrmentale


Recherche incrmentale arrire
Sortie de la recherche en cours
Annule la recherche en cours
Efface un caractre de la chane de recherche
Recherche non incrmentale
Recherche arrire non incrmentale
Substitution interactive
Affectue la substitution et reprend la recherche
Neffectue pas la substitution et reprend la recherche
Effectue la substitue et montre le rsultat
Effectue toutes les substitutions sans rien demander
Revient la dernire substitution
Termine la fonction

RETURN

Petit manuel Unix 2002

59

DITEURS DE TEXTES
Les fentres et les cadres
Squence

Suppression

C-x 2
C-x o
C-x 0
C-x 1
C-x
M-C-v
C-x 4 f

Dcoupe la fentre en deux


Passe la fentre suivante
Supprime la fentre courante
Supprime toutes les fentres sauf la courante
Augmente la hauteur
Fait dfiler la fentre suivante
Ouvre un fichier dans la fentre suivante.

C-x
C-x
C-x
C-x
C-x

Active le cadre suivant


Supprime le cadre courant
Cre un nouveau cadre contenant le tampon courant
Cr un nouveau cadre avec un nouveau fichier
Cr un nouveau cadre contenant un autre tampon

5
5
5
5
5

o
0
2
C-f
b

La souris
Squence

Commande

Action

C-down-mouse-3
S-down-mouse-1
C-down-mouse-1
mouse-3
mouse-2
mouse-1
double-mouse-1
triple-mouse-1

mouse-major-mode-menu
mouse-set-font
mouse-buffer-menu
mouse-save-then-kill
mouse-yank-at-click
mouse-set-point
mouse-set-point
mouse-set-point

menu du mode majeur


choix de la fonte
menu tampon
copie et efface
colle
place le curseur
slectionne le mot
slectionne la ligne

Toutes les commandes (Emacs Wall Chart)


Cl

Commande

Cl

Commande

C-@
C-a
C-b
C-d
C-e
C-f
C-g
C-h
TAB
C-k
C-l
RET
C-n
C-o
C-p

set-mark-command
beginning-of-line
backward-char
delete-char
end-of-line
forward-char
keyboard-quit
help-command
indent-for-tab-command
kill-line
hilit-recenter
newline
next-line
open-line
previous-line

C-r
C-s
C-t
C-u
C-v
C-w
C-x
C-y
C-z
ESC
C-\
C-]
C-_
DEL

isearch-backward
isearch-forward
transpose-chars
universal-argument
scroll-up
kill-region
Control-X-prefix
hilit-yank
shell
ESC-prefix
toggle-input-method
abort-recursive-edit
undo
delete-backward-char

view-hello-file
describe-coding-system
describe-input-method
describe-input-method

C-h
C-h
C-h
C-h

C-h
C-h
C-h
C-h

60

h
C
I
C-\

C-f
4
i
F

Info-goto-emacs-command-node
Prefix Command
info
view-emacs-FAQ

Petit manuel Unix 2002

DITEURS DE TEXTES
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h

L
C-l
q
v
w
t
s
p
n
C-n
m
l
TAB
C-k

describe-language-environment
describe-language-environment
help-quit
describe-variable
where-is
help-with-tutorial
describe-syntax
finder-by-keyword
view-emacs-news
view-emacs-news
describe-mode
view-lossage
info-lookup-symbol
Info-goto-emacs-key-command-node

C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h
C-h

f
d
k
c
b
a
C-p
C-w
C-d
C-c
?
f1
help
C-h

describe-function
describe-funct
describe-key
describe-key-briefly
describe-bindings
apropos-command
describe-project
describe-no-warranty
describe-distribution
describe-copying
help-for-help
help-for-help
help-for-help
help-for-help

C-x
C-x
C-x
C-x
C-x

RET
RET
RET
RET
RET

set-language-environment
universal-coding-system-argument
set-input-method
set-next-selection-coding-system
set-selection-coding-system

C-x
C-x
C-x
C-x

RET
RET
RET
RET

set-buffer-process-coding-system
set-keyboard-coding-system
set-terminal-coding-system
set-buffer-file-coding-system

S-C-l
delete
C-down-mouse-3
S-down-mouse-1
C-down-mouse-1
mouse-3
mouse-2
triple-mouse-1
double-mouse-1
drag-mouse-1
mouse-1
down-mouse-1
M-mouse-2
M-mouse-3
M-down-mouse-1
M-drag-mouse-1
M-mouse-1
C-down-mouse-2
S-delete
C-delete
C-left
C-right
M-left
M-right
mouse-movement

hilit-repaint-command
delete-char
mouse-major-mode-menu
mouse-set-font
mouse-buffer-menu
mouse-save-then-kill
mouse-yank-at-click
mouse-set-point
mouse-set-point
mouse-set-region
mouse-set-point
mouse-drag-region
mouse-yank-secondary
mouse-secondary-save-then-kill
mouse-drag-secondary
mouse-set-secondary
mouse-start-secondary
facemenu-menu
kill-region
backward-kill-word
backward-word
forward-word
backward-word
forward-word
ignore

deletechar
deleteline
S-insert
C-insert
insert
M-begin
begin
M-end
end
M-prior
M-next
C-next
C-prior
C-down
C-up
next
prior
down
right
up
left
M-home
home
C-SPC
C-/ C-_

delete-char
kill-line
hilit-yank
kill-ring-save
overwrite-mode
beginning-of-buffer-other-window
beginning-of-buffer
end-of-buffer-other-window
end-of-buffer
scroll-other-window-down
scroll-other-window
scroll-left
scroll-right
forward-paragraph
backward-paragraph
scroll-up
scroll-down
next-line
forward-char
previous-line
backward-char
beginning-of-buffer-other-window
beginning-of-buffer
set-mark-command
undo

C-x
C-x
C-x
C-x
C-x

kill-buffer-and-window
find-tag-other-window
dired-other-window
add-change-log-entry-other-window
display-buffer

C-x
C-x
C-x
C-x
C-x

switch-to-buffer-other-window
find-file-other-window
find-file-read-only-other-window
find-file-other-window
compose-mail-other-window

4
4
4
4
4

l
c
C-\
X
x

0
.
d
a
C-o

Petit manuel Unix 2002

4
4
4
4
4

p
k
t
f

b
C-f
r
f
m

61

DITEURS DE TEXTES

62

C-x
C-x
C-x
C-x
C-x

5
5
5
5
5

C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x

o
0
2
.
d

other-frame
delete-frame
make-frame-command
find-tag-other-frame
dired-other-frame

C-x
C-x
C-x
C-x
C-x

C-b
C-c
C-d
C-e
C-f
TAB
C-k
C-l
C-n
C-o
C-p
C-q
C-r
C-s
C-t
C-u
C-v
C-w
C-x
C-z
ESC
$

(
)
+
.
/
0
1
2
3
4
5

list-buffers
save-buffers-kill-emacs
list-directory
eval-last-sexp
find-file
indent-rigidly
edit-kbd-macro
downcase-region
set-goal-column
delete-blank-lines
mark-page
vc-toggle-read-only
find-file-read-only
save-buffer
transpose-lines
upcase-region
find-alternate-file
write-file
exchange-point-and-mark
iconify-or-deiconify-frame
Prefix Command
set-selective-display
expand-abbrev
start-kbd-macro
end-kbd-macro
balance-windows
shrink-window-if-larger-than-buffer
set-fill-prefix
point-to-register-compatibility-binding
delete-window
delete-other-windows
split-window-vertically
split-window-horizontally
ctl-x-4-prefix
ctl-x-5-prefix

C-x 6
C-x 8
C-x ;
C-x <
C-x =
C-x >
C-x [
C-x ]
C-x
C-x
C-x a
C-x b
C-x d
C-x e
C-x f
C-x g
C-x h
C-x i
C-x j
C-x k
C-x l
C-x m
C-x n
C-x o
C-x q
C-x r
C-x s
C-x u
C-x v
C-x x
C-x z
C-x {
C-x }
C-x DEL
C-x C-SPC

2C-command
8859-1-map
set-comment-column
scroll-left
what-cursor-position
scroll-right
backward-page
forward-page
enlarge-window
next-error
Prefix Command
switch-to-buffer
dired
call-last-kbd-macro
set-fill-column
insert-register-compatibility-binding
mark-whole-buffer
insert-file
jump-to-register-compatibility-binding
kill-this-buffer
count-lines-page
compose-mail
Prefix Command
other-window
kbd-macro-query
Prefix Command
save-some-buffers
advertised-undo
Prefix Command
copy-to-register-compatibility-binding
repeat
shrink-window-horizontally
enlarge-window-horizontally
backward-kill-sentence
pop-global-mark

a
a
a
a
a

expand-jump-to-next-slot
expand-jump-to-previous-slot
expand-abbrev
expand-abbrev
inverse-add-global-abbrev

C-x
C-x
C-x
C-x
C-x

Prefix Command
add-mode-abbrev
add-global-abbrev
add-mode-abbrev
add-mode-abbrev

C-x n p
C-x n d

narrow-to-page
narrow-to-defun

C-x n w
C-x n n

widen
narrow-to-region

ESC C-@
ESC C-a

mark-sexp
beginning-of-defun

ESC <
ESC =

beginning-of-buffer
count-lines-region

n
p

e
-

5
5
5
5
5

a
a
a
a
a

r
C-f
f
b
m

i
+
g
C-a
l

find-file-read-only-other-frame
find-file-other-frame
find-file-other-frame
switch-to-buffer-other-frame
compose-mail-other-frame

Petit manuel Unix 2002

DITEURS DE TEXTES
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC

C-b
C-c
C-d
C-e
C-f
C-h
TAB
C-j
C-k
C-l
C-n
C-o
C-p
C-q
C-r
C-s
C-t
C-u
C-v
C-w
ESC
C-\
SPC
!
#
$
%

(
)
*
,
.
/
0 .. ESC 9
:
;

backward-sexp
exit-recursive-edit
down-list
end-of-defun
forward-sexp
mark-defun
complete-symbol
indent-new-comment-line
kill-sexp
reposition-window
forward-list
split-line
backward-list
fill-region
isearch-backward-regexp
isearch-forward-regexp
transpose-sexps
backward-up-list
scroll-other-window
append-next-kill
Prefix Command
indent-region
just-one-space
shell-command
calc-dispatch
ispell-word
query-replace
abbrev-prefix-mark
backward-list
forward-list
pop-tag-mark
tags-loop-continue
negative-argument
find-tag
dabbrev-expand
digit-argument
eval-expression
indent-for-comment

ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC
ESC

>
@

a
b
c
d
e
f
g
h
i
j
k
l
m
q
r
t
u
v
w
x
y
z
{
|
}

DEL
C-%
C-.
C-/
S-C-v
C-SPC
C--

end-of-buffer
mark-word
delete-horizontal-space
delete-indentation
tmm-menubar
backward-sentence
backward-word
capitalize-word
kill-word
forward-sentence
forward-word
goto-line
mark-paragraph
tab-to-tab-stop
indent-new-comment-line
kill-sentence
downcase-word
compile
fill-paragraph
move-to-window-line
transpose-words
upcase-word
scroll-down
kill-ring-save
execute-extended-command
hilit-yank-pop
zap-to-char
shrink-window
shell-command-on-region
enlarge-window
not-modified
backward-kill-word
query-replace-regexp
find-tag-regexp
dabbrev-completion
scroll-other-window-down
mark-sexp
negative-argument

C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x

r
r
r
r
r
r
r
r
r
r
r
r
r
r

bookmark-bmenu-list
bookmark-set
bookmark-jump
frame-configuration-to-register
window-configuration-to-register
string-rectangle
open-rectangle
yank-rectangle
delete-rectangle
kill-rectangle
clear-rectangle
increment-register
number-to-register
copy-rectangle-to-register

C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x

v
v
v
v
v
v
v
v
v
v
v
v
v
v

vc-version-other-window
vc-diff
vc-next-action
vc-revert-buffer
vc-create-snapshot
vc-retrieve-snapshot
vc-merge
vc-print-log
vc-register
vc-insert-headers
vc-annotate
vc-directory
vc-cancel-version
vc-update-change-log

l
m
b
f
w
t
o
y
d
k
c
+
n
r

Petit manuel Unix 2002

=
v
u
s
r
m
l
i
h
g
d
c
a

63

DITEURS DE TEXTES
C-x
C-x
C-x
C-x
C-x
C-x
C-x
C-x

r
r
r
r
r
r
r
r

g
i
x
s
j
SPC
C-SPC
C-@

insert-register
insert-register
copy-to-register
copy-to-register
jump-to-register
point-to-register
point-to-register
point-to-register

Si vous tres fatigus essayer les commandes M-Xhanoi<cr> ou M-Xdoctor<cr>. Pour finir, voici
deux significations possibles demacs comme acronyme :
Escape-Meta-Alt-Control-Shift
Emacs Makes All Computing Simple

NOM

vi - visual editor - diteur visuel

SYNTAXE

vi [ fichier ]

DESCRIPTION

vi est lditeur plein cran traditionnel dUnix. Son grand inconvnient est de travailler par modes (mode
commande/mode insertion) ce qui est relativement insupportable pour un utilisateur demacs. Je ne vais
donc vous donnez ici que la faon de sortir de vi, ce qui est la seule chose raisonnable faire si on y est
entr par inadvertance :
1- sortir ventuellement du mode dinsertion en tapant : <esc>
2- sortir de lditeur sans enregistrer les modifications avec la squence de 4 caractres :
:q!<retour-chariot>

64

Petit manuel Unix 2002

COMPOSEURS DE TEXTES

NOM

groff - groff - groff

SYNTAXE

groff [-Tascii] [-Thtml] [-mxx] fichiers

DESCRIPTION

groff est la version GNU du composeur de texte troff qui est utilis pour formatter le manuel Unix. Il a t
bien sr utiliser pour ce petit manuel. Il permet de raliser une sortie en PostScript comme celle que vous
lisez et galement une sortie en ascii si on prcise -Tascii (ce que LaTe ne sait pas bien faire), ou en
HTML avec -Thtml.

Il existe trois grands paquetages de macros pour troff et groff : ms, me et man. Nous ne dcrirons ici que le
paquetage man.
Lignes de texte et requtes de formatage.
Le texte peut tre entr au kilomtre, la mise en page de lditeur tant compltement ignore.
Cependant si une ligne commence par un espace ou est vide, la ligne prcdente ne sera pas justifie et
la ligne suivante ne sera pas colle la prcdente (comme pour cette ligne).
Le paragraphe prcdent a t saisi ainsi:
Le texte peut tre entr au kilomtre,
la mise en page de lditeur tant compltement ignore.
Cependant si une ligne commence par un espace ou est vide,
la ligne prcdente ne sera pas justifie et
la ligne suivante ne sera pas colle la prcdente (comme pour cette
ligne).
En fait, le source de groff est compos de deux sortes de lignes:
les lignes de texte,
les lignes de commandes de formattages qui commencent par un point.
Ces commandes prennent ou non des arguments que lon peut regrouper entre des guillemets (double
quote).
Commandes de base que lon peut utiliser avec man.
.bp
Commence une nouvelle page.
.br

Force le passage la ligne.

.ce n

Centre les n lignes suivantes.

.sp n

Insre n lignes blanches.

.ta i1 i2 . . .
Dfinit les nouveaux taquets de tabulation qui sont utiliss pour interprter le caractre de tabulation (ascii 9 ou 011).
.ul n

souligne les n lignes suivantes.

.nf

Commande larrt du remplissage (no fill) ; les fins de lignes sont conserves en sortie.

.fi

Commande le mode normal de remplissage dans lequel les fins de ligne du source ne sont pas conserves.

On peut galement mettre dans le texte la commande \fx, avec x valant R, I, H, S, C et P pour respectivement : Roman, Italique, Helvetica, Courrier et la fonte prcdente. Ex. : \fR Roman, \fI
Italique \fR, \fH Helvetica \fR, \fC Courrier\fR va donner
Roman, Italique , Helvetica , Courrier.
Pour afficher un anti-slash, on devra le doubler : \\ (je lai bien sr quadrupl afin quil apparraisse deux
fois !-). Pour afficher un point en dbut de ligne, il suffit de le faire prcder de \& qui est une commande
nulle. Il existe galement \| et \0 qui produisent un demi espace ou un espace mais qui empchent des

Petit manuel Unix 2002

65

COMPOSEURS DE TEXTES
csures intempestives (par exemple, il est prudent demployer \| avant deux points :).
Titres et sections.
Une page de manuel doit toujours commencer par la commande :
.TH titre section date source manuel
Exemple :
.TH MAN 7 "25 July 1993" "Linux" "Linux Programmers Manual"
Ensuite, on met les sections dont les enttes sont dfinies par la commande .SH (pour section heading). Elle
ne prend quun argument, donc, si le titre contient un espace il faut regrouper les mots entre des guillemets.
Les sections possibles sont traditionnellement : NAME, SYNOPSIS, DESCRIPTION, OPTIONS, FILES,
SEE ALSO, DIAGNOSTICS, BUGS et AUTHOR.
On peut commencer un nouveau paragraphe avec .PP sans argument.
Commandes de slection de fontes.
.B
Gras
.BI

Gras alternant avec italiques

.BR Gras alternant avec Roman


.I

Italiques

.IB

Italiques alternant avec gras

.IR

Italiques alternant avec Roman

.RB Roman alternant avec gras


.RI

Roman alternant avec italiques

.SB

Petit alternant avec gras

.SM Petit
Autres commandes.
Les commandes suivantes peuvent prendre un argument numrique (i), ou un texte (t). Le nombre peut tre
suivi de lunit : i, c, n, m, p, u pour respectivement : inch, centimtre, la largeur dun n, la largeur dun m,
un point (= 1/72 inch), lunit de base (1/6 de point). On peut aussi utiliser la construction : \wtexte, qui
signifie la longueur de texte.
.DT

Remet les taquets de tabulation leur valeur par dfaut (Default tabs).

.HP i

Commence un paragraphe indent de i sauf sa premire ligne.

.IP t

Commence un paragraphe indent avec le drapeau t. Mme effet que .TP, sauf que le texte est
donn en argument et non sur la ligne suivante.

.LP

Idem .PP

.PD i

Positionne lespacement entre paragraphe i.

.PP

Nouveau paragraphe.

.RE

Fin de paragraphe indent (relative end).

.RS

Commence un paragraphe indent (relative start).

.SS t

Sous-section (comme .SH, mais pour les sous-sections).

.TP

Commence un paragraphe indent avec un drapeau donn sur la ligne suivante. Similaire .IP,
mais on peut ainsi appliquer une commande au drapeau (comme dans cette liste).

Note : il nest pas interdit pour apprendre utiliser ces commandes daller consulter des exemples de source des
pages de manuel dans les rpertoires /usr/man/man?.

66

Petit manuel Unix 2002

COMPOSEURS DE TEXTES

NOM

latex latex latex

SYNTAXE

latex fichiers

DESCRIPTION

latex se dit latek car la dernire lettre est un chi majuscule X est non un simple x majuscule. Ce composeur de textes donne de merveilleux rsultats, mais sa description brve dpasse pour la moment le but de
ce petit manuel.

Petit manuel Unix 2002

67

OUTILS GRAPHIQUES
Les outils graphiques sont dune utilisation simple et intuitive, est-il donc besoin dune documentation ?
Beaucoup de ces programmes sont de simples frontaux graphiques pour des commandes linterface texte
dj existante. Voici donc une simple prsentation de ces programmes.
La famille xterm, emacs
xterm,emacs forment le couple dutilitaires que jutilise, car ils sont disponibles sur tous les unix et emacs
permet de tout faire (sauf le caf !-) : diteur de texte avec contrle et coloration syntaxique, gestionnaire de
courrier (RMAIL ou vm), lecteur de news (GNUS). La souris sutilise avec les conventions suivantes :
Bouton 1 (gauche)
slection
Bouton 2 (milieu)
insrer slection (paste)
Bouton 3 (droite)
extension de slection
Un clic avec Control ou Shift fait apparatre des menus.
Les commandes ddition de lignes demacs sont disponibles dans beaucoup de champ texte (netscape, outils faits avec GTK+, ...) et aussi dans les interprtes qui utilisent la bibliothque readline comme bash,
mysql et bien dautres. Les principales commandes sont : C-a, C-e, C-d, C-k, C-y, C-t, M-d, M-l, M-u, M-c,
M-t ; elles sont dcrites dans la documentation de bash dans ce manuel.
Outils de gestion de fichiers
Il existe de nombreux gestionnaires de fichiers graphiques la Mac ou la Windows. Ces programmes sont
bien sr des frontaux aux commandes de base Unix dcrites dans ce manuel. On peut citer : xfm, tkdesk,
mc.
Les vieux outils X11
xedit,xlsfonts,xfd,xwd,xwininfo,xmag,xman,. . . Ces programmes sont ceux du MIT X Consortium et sont
toujours disponibles avec X11. xedit est un (mauvais?) diteur de texte, xlsfonts permet de lister les fontes
connues du serveur X, et xfd permet dafficher une fonte particulire. xwininfo donne toutes les informations de position, taille, etc. dune fentre. xmag est une loupe. xman est une interface graphique pour le
lire le manuel Unix. xwd permet de crer limage dune fentre que xwdtopnm peut transformer en pnm et
que pnmtops permet de passer en PostScript (xwd | xwdtopnm | pnmtops) cre une image
PostScript de la fentre pointe par la souris). On peut aussi utiliser un outil de gestion dimages comme
eeyes ou gimp
pour faire une copie de lcran ou dune fentre.
GNOME
Le projet GNOME (http://www.gnome.org/) a pour but de construire un environnement de bureau
graphique complet et simple dutilisation. Cest un projet dont tous les composants sont en sources ouverts.
Tous les composants utilisent la bote outils graphiques GTK+ et la technologie CORBA pour communiquer. Les principaux composants sont : le tableur gnumeric, le traitement de texte abiword, le visualiseur
dimages eog (Eye Of GNOME) ou de collections dimages gqview, loutil de dessin vectoriel sketch,
lditeur de diagramme dia et enfin le clbre gimp (GNU Image Manipulation Program) pour diter les
images raster ; il permet (presque ?) autant de choses que le logiciel commercial Photophop.
De plus Sun Microsystems a dcid dintgrer GNOME son ancien StarOffice qui redcoup est devenu
OpenOffice (http://www.openoffice.org/). Il est compos du tableur opencalc, du traitement de texte
openwriter, de loutil de dessin vectoriel opendraw et de loutil de prsentation impress.
Voir http://www.gnome.org/gnome-office/ pour une liste plus complte.
KDE
Le projet KDE avait comme objectif de faire un environnement commun de bureau en logiciel libre (pour
remplacer CDE : Common Desktop Environment). Il est bas sur la bote outils graphiques Qt (prononcez
kiouti) et est compos de nombreux programmes et utilitaires dont les noms commencent par un K ce qui
permet de faire des jeux de mots trs apprcis dans le milieu : Komba, Konqueror, Kmail, ...
Je nutilise personnellement pas cet environnement et je ne dvelopperai pas plus cette section.

68

Petit manuel Unix 2002

OUTILS GRAPHIQUES
Outils de dessin et de gestion dimages
gv, xfig, xpaint, gimp sont dexcellents programmes disponibles gratuitement. gv permet de visualiser du
PostScript et du pdf, xfig est un "draw", xpaint un "paint". Pour manipuler des images il existe aussi Image
Magick (convert est dcrit dans ce manuel) ou lensemble pnm des programmes utilisables en ligne de
commande ou dans des scripts shell. Noublions pas dans cette section eeyes et gimp qui font partie de
Gnome.
Le son
esd (The Enlightened Sound Daemon) est un processus serveur qui permet de partager le priphrique son
dune machine. La commande esdplay permet de jouer un fichier son et reconnat les principaux formats
reconnus par sox. Les commandes esdcat, esdrec denvoyer des fichiers sons bruts vers le serveur ou
denregistrer.

Petit manuel Unix 2002

69

OUTILS GRAPHIQUES

70

Petit manuel Unix 2002

OUTILS GRAPHIQUES

Petit manuel Unix 2002

71

BASH(1)

NOM

Manuel de lutilisateur Linux

BASH(1)

bash Interprteur de commandes GNU BourneAgain SHell.

SYNOPSIS

bash [options] [fichier]

COPYRIGHT

Bash est sous Copyright 1989, 1991 de la Free Software Foundation, Inc.

DESCRIPTION

Bash est un interprteur compatible sh qui excute les commandes lues depuis lentre standard, ou depuis
un fichier. Bash incopore galement des fonctionnalits provenant des interprteurs Korn et C-shell (ksh et
csh).
Bash est entirement concu pour tre conforme aux spcifications IEEE concernant les shells et les outils
Posix (IEEE Working Group 1003.2).

OPTIONS

En plus des caractres doptions documents dans la description de la commande interne set, bash accepte
les arguments suivants lorsquon linvoque :

c chane Si largument c est prsent, les commandes sont interprtes depuis la chane fournie. Sil
existe dautres arguments aprs la chane, ils sont transmis comme paramtres positionnels, en
commencant par $0.
i
Si loption i est prsente, linterprteur est interactif .
s
Si largument s est prsent, ou sil ny a que des options sur la ligne de commande,
Linterprtation se fera depuis lentre standard. Cette option permet de remplir les paramtres
positionnels tout en invoquant un shell interactif.

Un caractre seul permet dindiquer la fin des options, et empche le traitement des arguments restants. Ceux-ci sont traits comme des noms de fichiers et des paramtres. est
quivalent .
Bash reconnait galement plusieurs options multi-caractres. Ces options doivent apparaitre sur la ligne de
commande avant les options mono-caractre.
norc

Ne pas lire le fichier de configuration personnalise /.bashrc lorsque le shell est interactif.
Cette option est active par dfaut lorsque linterprteur est invoqu sous le nom sh.
noprofile Ne lire ni le fichier de configuration gnrale /etc/profile ni les fichiers personnaliss
/.bash_profile, /.bash_login, ou /.profile. Par dfaut bash lit ces fichiers lorsquil est invoqu
comme shell de login (voir le paragraphe INVOCATION plus bas).
rcfile fichier
Executer les commandes contenues dans le fichier mentionne, plutot que celles du fichier de
configuration personnelle /.bashrc, si le shell est interactif. (voir le paragraphe INVOCATION
plus bas).
version Afficher le numro de version de bash au dmarrage.
quiet
Nafficher aucune information (par exemple le numro de version) lors du lancement. Cest le
comportement par dfaut.
login
Se comporter comme un shell de login.
nobraceexpansion
Ne pas effectuer lexpansion des accolades (voir le paragraphe Expansion des accolades plus
bas).
nolineediting
Ne pas utiliser la bibliothque GNU readline pour la lecture des lignes de commande, lorsque
le shell est interactif.
posix
Aligner le comportement de bash sur le standard Posix 1003.2, en ce qui concerne les options
dont le comportement par dfaut est diffrent de ce standard.

ARGUMENTS

Sil reste des arguments sur la ligne de commande aprs le traitement des options, et si ni loption c, ni
loption s ne sont prsentes, le premier argument est suppos tre le nom du fichier dans lequel lire les

72

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

commandes. Lorsque bash est invoqu de cette maniere, $0 contient le nom du fichier, et les autres
paramtres positionnels contiennent les arguments restants. Bash lit, et excute, les commandes depuis ce
fichier, puis se termine. Le code de retour de bash est celui de la derniere commande excute dans le
fichier script.

DFINITIONS
blanc
mot

Un espace ou une tabulation.


une squence de caractres considere comme une unit lmentaire par le shell. On parle galement de token (jeton).
nom
un mot ne contenant que des caractres alpha-numriques, ou le caractre de soulignement (underscore), commenant par une lettre ou un soulignement. On sy refre galement sous le terme
identificateur.
mta-caractre
Un caractre qui, lorsquil nest pas protg, spare les mots. Un de ceux-ci :
| & ; ( ) < > espace tabulation
oprateur de contrle
Un token ayant une fonction de contrle. Lun des symboles suivants :
& && ; ;; ( ) | <retour-chariot>

MOTS RSERVS

Les mots rservs ont une signification spciale pour le shell. Les mots suivants sont rservs et interprts
par le shell lorsquils ne sont pas protgs, et sil sagit soit du premier mot dune commande simple, soit
du troisime mot dune commande case ou for (voir le paragraphe GRAMMAIRE DU SHELL cidessous).
! case do
while { }

done

elif

else

esac

fi

for

function

if

in

select

then

until

GRAMMAIRE DU SHELL

Commandes simples
Une commande simple est une squence daffectations de variables facultative, suivie de mots spars par
des blancs et des redirections, et termine par un oprateur de controle. Le premier mot indique la commande excuter. Les mots suivants sont transmis en argument cette commande.
La valeur de retour dune commande simple est son code de sortie, ou 128+n si la commande a t interrompue par le signal n.

Pipelines
Un pipeline est une squence dune ou plusieurs commandes spares par le caractre |. Le format dun
pipeline est :
[ ! ] commande_1 [ | commande_2 ... ]
La sortie standard de la commande_1 est connecte lentre standard de la commande_2. Cette connexion
est tablie avant toute redirection indique dans une commande elle-mme (voir le paragraphe REDIRECTION plus bas).
Si le mot rserv ! prcde un pipeline, la valeur de sortie de celui-ci sera la NGATION logique de la
valeur de retour de la dernire commande. Sinon, le code de retour dun pipeline sera celui de la dernire
commande. Linterprteur attend la fin de toutes les commandes du pipeline avant de renvoyer une valeur.
Chaque commande du pipeline est excute comme un processus indpendant (cest dire dans un sousshell).
Listes
Une liste est une squence dun ou plusieurs pipelines spars par lun des oprateurs ;, &, &&, ou , et
termine par ;, &, ou <retour-chariot>.
Dans cette liste doperateurs, && et ont une prcdence identique, suivis par ; et &, qui ont galement
une prcdence identique.
Si une commande se termine par loprateur de contrle &, linterprteur lexcute en arrire-plan, dans un

FSF

2 Octobre 1997

73

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

sous-shell. Linterprteur nattend pas que la commande se termine et retourne un code 0. Les commandes
spares par un ; sont excutes successivement, linterprteur attend que chaque commande se termine
avant de lancer la suivante. Le code de retour est celui de la dernire commande excute.
Les oprateurs de contrle && et indiquent respectivement une liste lie par un ET, et une liste lie par
un OU. Une liste ET a la forme
commande_1 && commande_2
commande_2 est excute si, et seulement si, commande_1 renvoie un code de retour nul.
Une liste OU a la forme
commande_1 commande_2
commande_2 est excute si, et seulement si commande_1 renvoie un code de retour non-nul. La valeur de
retour des listes ET et OU est celle de la dernire commande excute dans la liste.
Commandes composes
Une commande compose est lune des constructions suivantes :
(liste)

{ liste; }

liste est excute dans un sous-shell. Les affectations de variables, et les commandes internes qui
affectent lenvironnement de linterprteur nont pas deffet une fois que la commande se termine.
Le code de retour est celui de la liste.
liste est simplement excute avec lenvironnement du shell en cours. Cette construction est connue sous le nom de commandes groupes. Le code de retour est celui de la liste.

for nom [ in mot; ] do liste ; done


La liste de mots la suite de in est dveloppe, crant une liste dlments. La variable nom prend
sucessivement la valeur de chacun des lments, et liste est excute chaque fois. Si in mot est
omis, la commande for excute la liste une fois pour chacun des paramtres positionnels ayant une
valeur (voir le paragraphe PARAMTRES plus bas).
select nom [ in mot; ] do liste ; done
La liste de mots la suite de in est dveloppe, crant une liste dlments. Lensemble des mots
dvelopps est imprim sur la sortie derreur standard, chacun prcd par un nombre. Si in mot
est omis, les paramtres positionnels sont imprims (voir le paragraphe PARAMTRES plus bas).
Le symbole daccueil PS3 est affich, et une ligne est lue depuis lentre standard. Si la ligne est
constitue dun nombre correspondant lun des mots affichs, la variable nom est remplie avec ce
mot.
Si la ligne est vide, les mots et le symbole daccueil sont affichs nouveau. Si une fin de fichier
est lue (EOF), la commande se termine. Pour toutes les autres valeurs, la variable nom est nulle.
La ligne lue est stocke dans la variable REPLY. La liste est excute aprs chaque slection,
jusqu ce quune commande break ou return soit atteinte. Le code de retour de select est celui
de la dernire commande excute dans la liste, ou zro si aucune commande nest excute.
case mot in [ motif [ | motif ] ... ) liste ;; ] ... esac
Une commande case commence dabord par dvelopper le mot, puis essaye de le mettre en correspondance successivement avec chacun des motifs en utilisant les mmes rgles de correspondance
que pour les expansions de noms de fichiers (voir le paragraphe Dveloppement des noms de
fichiers plus bas). Quand une correspondance est trouve, la liste associe est excute. Ds
quun motif correct a t trouv, il ny a plus dautre essais de correspondance. Le code de retour
est zro si aucun motif ne correspond, sinon il sagit du code de la liste excute.
if liste then liste [ elif liste then liste ] ... [ else liste ] fi
La liste suivant le if est excute. Si son code de retour est nul, la liste suivant le then est excute.
Sinon, chacune des listes des elif est excute successivement, et si un code de retour est nul, la
liste du then associ est excute, et la commande se termine. En dernier ressort, la liste du else

74

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

est excute. Le code de retour est celui de la dernire commande excute, ou zro si aucune
condition na t vrifie.
while liste do liste done
until liste do liste done
La commande while rpte la liste suivant le do tant que la dernire commande de la liste suivant
le while renvoie un code de retour nul. La commande until agit de mme manire, sauf que le test
est ngatif, et la liste du do est excute tant que la liste du until renvoie un code non-nul. Le
code de retour des commandes while et until est celui de la dernire commande excute dans la
liste do, ou zro si aucune commande na t excute.
[ function ] nom () { liste; }
Ceci dfinit une fonction possdant le nom mentionn. Le corps de cette fonction est la liste de
commandes entre { et }. Cette liste est excute ds que le nom de la fonction est invoqu en tant
que commande simple. Le code de retour est celui de la dernire commande excute dans le
corps de la fonction. (voir le paragraphe FONCTIONS plus bas)

COMMENTAIRES

Dans un shell non-interactif (ou dans un shell interactif avec loption -o interactivecomments active par
la commande interne set) un mot commenant par # permettra dignorer tous les caractres restants sur la
ligne. Un shell interactif sans loption -o interactivecomments nautorise pas les commentaires.

PROTECTION

Les protections (quoting) permettent de forcer linterprteur ignorer la signification spciale de certains
caractres ou mots. Les protections peuvent tre utilises pour empcher le traitement de certains caractres spciaux, pour viter que des mots-rservs ne soient reconnus comme tels, ou pour liminer le
dveloppement des paramtres.
Tous les mta-caractres mentionns dans le paragraphe DFINITIONS ci-dessus ont des significations
spciales pour le shell, et doivent tre protgs pour garder leur propre valeur. Il y a trois mcanismes de
protection : Le caractre dchappement, les apostrophes (quote) et les guillemets (double-quote).
Un caractre backslash (\), quand il nest pas protg, reprsente le caractre dchapement. Il prserve la
valeur littrale du caractre qui le suit, lexception du <retour-chariot>. Si une squence \<retour-chariot>
apparat, et si le backslash nest pas protg, lensemble \<retour-chariot> est considr comme une continuation de ligne (autrement dit, il est ignor).
Encadrer des caractres entre des apostrophes simples prserve la valeur littrale de chacun des caractres.
Une apostrophe ne peut pas tre place entre deux apostrophes, mme si elle est prcde dun backslash.

Encadrer des caractres entre des guillemets prserve la valeur littrale de chacun des caractres sauf $, , et
\. Les caractres $ et conservent leurs significations spciales, mme entre guillemets. Le backslash ne
conserve sa signification que lorsquil est suivi par $, , ", \, ou <retour-chariot>. Un guillemet peut etre
protg entre deux guillemets, condition de le faire prcder par un backslash.
Les caractres spciaux * et @ ont des significations spciales lorsquils se trouvent entre guillemets (voir
le paragraphe PARAMTRES ci-dessous).

PARAMTRES

Un paramtre est une entit permettant de stocker des valeurs, un peu comme les variables dans les langages de programmation courants. Un paramtre peut se prsenter sous forme dun nom, dun nombre, ou
dun des caractres spciaux dcrits plus bas, dans le paragraphe Paramtres Spciaux. Au niveau du
shell, une variable est un paramtre muni dun nom.

Un paramtre existe ds quon lui attribue une valeur. Une chane vide est une valeur valide. Une fois
quune variable existe, elle ne peut etre dtruite quen utilisant la commande interne unset (voir COMMANDES INTERNES DU SHELL plus bas).
Une variable peut recevoir une valeur par une affectation de la forme
nom=[valeur]
Si aucune valeur nest indique, la variable reoit une chane vide. Toute valeur est soumise aux principes

FSF

2 Octobre 1997

75

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

de dveloppement du tilde, des paramtres et des variables, de la substitution de commandes, de lvaluation arithmtique, et de la suppression des protections. Si une variable a son attribut i activ (voir declare
plus bas, dans le paragraphe COMMANDES INTERNES DU SHELL) alors la valeur est soumise lvaluation arithmtique, mme si la syntaxe $[...] napparat pas. Les mots ne sont pas tronqus, sauf avec la
squence "$@" comme cela est expliqu dans le paragraphe Paramtres Spciaux ci-dessous. Le
dveloppement des noms de fichiers nest pas effectu.
Paramtres Positionnels
Un paramtre positionnel est un paramtre indiqu par un ou plusieurs chiffres ( lexception du chiffre 0
seul). Les paramtres positionnels sont remplis avec les arguments du shell lors de son invocation. Ils peuvent tre modifis avec la commande interne set. On ne peut pas utiliser dassignation pour modifier le
contenu dun paramtre positionnel.
Les paramtres positionnels sont temporairement modifis lors de lexcution dune fonction du shell (voir
le paragraphe FONCTIONS plus bas).
Un paramtre positionnel constitu de plusieurs chiffres doit tre encadr par des accolades lors de son
dveloppement (voir le paragraphe EXPANSION plus bas).
Paramtres Spciaux
Il existe plusieurs paramtres de linterprteur ayant un comportement particulier. Ces paramtres peuvent
uniquement tre consults, on ne peut pas les modifier.
*
Se dveloppe en lensemble des paramtres positionnels, en commenant par 1. Quand le
dveloppement se produit entre des guillemets, * se transforme en un seul mot constitu de la
valeur de tous les paramtres positionnels spares par le premier caractre de la variable spciale
IFS. Ceci signifie que $* est quivalent $1c$2c..., dans laquelle c est le premier caractre
de la valeur de la variable IFS. Si IFS est nulle ou inexistante, les paramtres sont spars par des
espaces.
@
Se dveloppe en lensemble des paramtres positionnels, en commenant par 1. Quand le
dveloppement se produit entre des guillemets, chaque paramtre se transforme en un mot distinct.
Ceci signifie que $@ est quivalent $1 $2 ... Quand il ny a pas de paramtres positionnels, $@ et $@ sont simplement limins.
#
Se dveloppe pour fournir le nombre de paramtres positionnels, en base dcimale.
?
Fournit le code de retour du pipeline excut en arrire-plan le plus rcemment.

Est remplac par la liste des options du shell indiques durant linvocation, configures avec la
commande interne set ou positionnes par le shell lui-mme (comme le drapeau i).
$
Se transforme en PID du shell. Dans un sous-shell (), il se transforme en PID du shell, et non pas
du sous-shell.
!
Se transforme en PID de la commande (asynchrone) excute en arrire-plan le plus rcemment.
0
Se dveloppe pour donner le nom du shell ou du script. Ce paramtre est rempli lors de linitialisation de linterprteur. Si bash est invoqu avec un fichier de commandes, $0 correspond au nom de
ce fichier. Si bash est lanc avec loption c, alors $0 contient le premier argument, sil y en a un,
aprs la chane de commandes excuter. Sinon, ce paramtre contient le chemin daccs utilis
pour invoquer bash, comme il la reu en argument zro.
_
Devient le dernier argument de la commande prcdente, apres dveloppement. Correspond aussi
au chemin daccs complet de chaque commande excute, et se retrouve dans lenvironnement
xport cette commande.
Variables du Shell
Les variables suivantes sont assignes par linterprteur de commandes :
PPID LID du processus parent du shell.
PWD Le rpertoire de travail en cours, tel quil est configur par la commande cd.
OLDPWD
Le rpertoire de travail prcdent, configur par la commande cd.

76

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

REPLY

Contient la ligne dentre lue par la commande interne read lorsquelle na pas dargument.
UID
Contient lU-ID de lutilisateur, initialis au dmarrage du shell.
EUID Contient lUID effectif de lutilisateur, initialis au dmarrage du shell.
BASH Se dveloppe en chemin daccs complet utilis pour invoquer linstance de bash en cours
dexcution.
BASH_VERSION
Correspond au numro de version de cette instance de bash.
SHLVL
(NDT : Lire SH LVL - Shell Level - Niveau dinterprteur) Incrment de 1 chaque invocation
dune instance de bash.
RANDOM
A chaque fois que ce paramtre est rfrenc, un entier alatoire est engendr. Cette squence de
nombres alatoires peut tre initialise en assignant une valeur RANDOM. Si RANDOM est
dtruit (commande unset), il perd son comportement spcial, mme sil est recr plus tard.
SECONDS
A chaque fois que ce paramtre est lu, le nombre de secondes coules depuis le lancement de
linterprteur est renvoy. Si une valeur est affecte SECONDS, il renverra lors des lectures
ultrieures le nombre de secondes coules depuis lassignation, augment de la valeur fournie. Si
SECONDS est dtruit (commande unset), il perd son comportement spcial, mme sil est recr
plus tard.
LINENO
Chaque fois que ce paramtre est rfrenc, le shell le remplace par un nombre dcimal reprsentant le numro de la ligne actuelle (commenant 1), au sein du script ou de la fonction. Quand
on nest ni dans un script, ni dans une fonction, la valeur renvoye na pas ncssairement de sens.
Dans une fonction, la valeur nest pas le numro de ligne dans le fichier source (cette valeur a dj
t perdue lorsque la fonction est excute), mais une approximation du nombre de commandes
simples excutes dans le corps de cette fonction. Si LINENO est dtruit (commande unset), il
perd son comportement spcial, mme sil est recr plus tard.
HISTCMD
Le numro dhistorique, ou le rang dans la liste dhistorique, de la commande en cours. Si
HISTCMD est dtruit (commande unset), il perd son comportement spcial, mme sil est recr
plus tard.
OPTARG
La valeur du dernier argument doption trait par la commande interne getopts (voir le paragraphe
COMMANDES INTERNES DU SHELL plus bas).
OPTIND
Le rang du prochain argument traiter avec la commande getopts (voir le paragraphe COMMANDES INTERNES DU SHELL plus bas).
HOSTTYPE
Automatiquement rempli avec une chane qui dcrit de manire unique le type de machine sur
laquelle bash sexcute. La valeur par dfaut dpend du systme.
OSTYPE
Automatiquement rempli avec une chane qui dcrit le systme dexploitation sur lequelle bash
sexcute. La valeur par dfaut dpend du systme.
Les variables suivantes sont utilises par linterprteur. Dans certains cas, bash affecte des valeurs par
dfaut aux variables, ces cas sont dcrits plus bas.
IFS

Le Sparateur de Champs Interne (Internal Field Separator) qui est utilis pour sparer les mots
aprs les dveloppements, et pour decouper les lignes en mots avec la commande interne read. La
valeur par dfaut est <espace><tabulation><retour-chariot>.
PATH Le chemin de recherche des commandes excuter. Il sagit dune liste de rpertoires, spars par
des doubles-points (:) que linterprteur consulte lorsquil recherche une commande (voir le
paragraphe XCUTION DES COMMANDES plus bas). Le chemin par dfaut dpend du systme,
et de la configuration choisie par la personne installant bash. Une configuration frquente est

FSF

2 Octobre 1997

77

BASH(1)

HOME

Manuel de lutilisateur Linux

BASH(1)

/bin:/usr/bin:/usr/local/bin:/usr/gnu/bin:..

Le rpertoire personnel de lutilisateur. Cest largument par dfaut de la commande interne cd.
CDPATH
Le chemin de recherche de la commande interne cd. Il sagit dune liste de rpertoires, spars
par des doubles-points (:) que linterprteur consulte lorsquil cherche un sous-rpertoire destination de la commande cd. Voici une configuration possible .::/usr.
ENV Si ce paramtre est configur lorsque bash excute un script, sa valeur est considre comme un
nom de fichier, contenant les commandes dinitialisation de linterprteur, comme .bashrc. La
valeur de ENV est soumise au remplacement des paramtres, la substitution de commandes, et
lvaluation arithmtique avant dtre interprte comme un nom de fichier. Le chemin dacccs
PATH nest pas utilis pour rechercher le fichier obtenu.
MAIL Si ce paramtre correspond un nom de fichier, et si la variable MAILPATH nest pas configure,
bash informera lutilisateur si un courrier arrive dans le fichier indiqu.
MAILCHECK
Indique une frquence (en secondes) laquelle bash vrifiera si un nouveau courrier est arriv. La
valeur par dfaut est 60 secondes. Lorsque le dlai est ecoul, le shell vrifiera la prsence dun
courrier avant dafficher son symbole daccueil. Si cette variable est dtruite (unset), le shell
cessera de vrifier le courrier.
MAILPATH
Il sagit dune liste de fichiers spars par des doubles-points (:), dans lesquels on verifiera
larrive de courrier. Le nom dun fichier peut tre suivi dun point dinterrogation, puis dune
chane de caractres indiquant le message afficher en cas de courrier. Dans cette chane, le
paramtre $_ correspond au nom du fichier. Exemple:
MAILPATH=/usr/spool/mail/bfox?"Tu as du courrier":/shell-mail?"$_ a du courrier"
Bash fournit une valeur par defaut pour cette variable, mais lemplacement du fichier bote lettres depend du systme (par exemple /usr/spool/mail/$USER).
MAIL_WARNING
Si cette variable est remplie, et si un fichier bote lettre surveill par bash a t consult depuis la
dernire vrification, il affiche le message The mail in mailfile has been read (le courrier dans
bote__lettre a t lu).
PS1
La valeur de ce paramtre est dveloppe puis utilise comme symbole daccueil principal (voir le
paragraphe SYMBOLE DACCUEIL ci-dessous). La valeur par dfaut est bash\$ .
PS2
La valeur de ce paramtre est dveloppe puis utilise comme symbole daccueil secondaire. Par
dfaut il sagit de > .
PS3
La valeur de ce paramtre est dveloppe puis utilise comme symbole daccueil pour la commande select (voir GRAMMAIRE DU SHELL plus haut).
PS4
La valeur de ce paramtre est dveloppe puis affiche entre chaque commande lors dun suivi
dexcution. Le premier caractre de PS4 est rpt autant de fois que ncssaire pour indiquer le
niveau dimbrication. La valeur par dfaut est + .
HISTSIZE
Le nombre de commandes mmoriser dans lhistorique (voir le paragraphe HISTORIQUE plus
bas). La valeur par dfaut est 500.
HISTFILE
Le nom du fichier dhistorique pour la mmorisation des commandes(voir le paragraphe HISTORIQUE plus bas). Par dfaut, il sagit de /.bash_history. Si cette variable est dtruite (commande unset), lhistorique nest pas enregistr lors de la fin dun shell interactif.
HISTFILESIZE
Le nombre maximal de lignes contenues dans le fichier historique. Quand cette variable contient
une valeur, le fichier historique est tronqu, si besoin est, pour ne contenir que ce nombre de
lignes. La valeur par dfaut est 500.
OPTERR
Si cette variable contient la valeur 1, bash affiche les messages derreurs dclenchs par la commande interne getopts (voir le paragraphe COMMANDES INTERNES DU SHELL plus bas).

78

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

OPTERR est initialis avec la valeur 1 chaque invocation du shell, ou au lancement dun script.
PROMPT_COMMAND
Lorsque cette variable contient une valeur, celle-ci est excute en tant que commande, avant
laffichage de chacun des symboles daccueil principaux.
IGNOREEOF
Cette variable contrle le comportement du shell lorsquil reoit un caractre EOF (fin de fichier)
comme unique entre. Si elle configure, la valeur de cette variable correspond au nombre d EOF
conscutifs apparaissant comme caractre initial dune ligne, que bash ignore avant de se terminer.
Si cette variable existe mais que sa valeur nest pas numrique, ou si elle na pas de valeur, bash
accepte par defaut 10 EOF conscutifs avant de se terminer. Si elle nexiste pas, EOF est considr comme un terminateur de saisie pour le shell. Seuls les shells interactifs sont concerns.
TMOUT
Si cette variable contient une valeur suprieure a zero, celle-ci est considre comme un delai en
secondes, partir de laffichage du symbole daccueil principal. Lorsque ce dlai sera coul,
Bash se terminera si aucune saisie na eu lieu.
FCEDIT
Lditeur par dfaut utilis par la commande interne fc.
FIGNORE
Une liste de suffixes, spars par des doubles-points :, que bash ignorera lors de la compltion
des noms de fichiers (voir le paragraphe READLINE plus bas). Un nom de fichier dont le suffixe
correspond lun de ceux mentionns dans FIGNORE est exclus de la liste des fichiers. Par exemple, cette variable peut prendre la valeur .o:.
INPUTRC
Le nom du fichier de configuration de readline, par dfaut /.inputrc (voir le paragraphe READLINE plus bas).
notify Si cette variable existe, bash affichera un rapport ds quun travail en arrire-plan se termine.
Sinon, il attendra davoir presenter un symbole daccueil principal pour afficher son rapport (voir
galement loption b de la commande interne set).
history_control
HISTCONTROL
Si cette variable contient la valeur ignorespace, les lignes commenant par un caractre despacement ne seront par mmorises dans lhistorique. Si elle contient la valeur ignoredups, une ligne
correspondant exactement la ligne de commande prcdente ne sera pas duplique dans lhistorique. La valeur ignoreboth permet de combiner ces deux comportements. Si la variable est
dtruite (commande unset), ou si elle contient une valeur diffrente des trois mentionnes cidessus, tous les lignes lues par linterprteur seront mmorises dans la liste dhistorique.

command_oriented_history
Lorsque cette variable existe, bash essaye de sauver en une seule entre dhistorique toutes les
lignes dune mme commande. Ceci facilite la r-dition des commandes stendant sur plusieurs
lignes.
glob_dot_filenames
Lorsque cette variable est positionne, bash inclut les fichiers dont le nom commence par un .
lors du dveloppement des paramtres.
allow_null_glob_expansion
Si cette variable existe, bash dveloppe les motifs des noms de fichiers nayant aucune correspondance en une chane nulle, plutot que de conserver leur propre valeur (voir le paragraphe
Dveloppement des noms de fichiers plus bas).
histchars
Cette variable contient deux ou trois caractres contrlant le dveloppement de lhistorique, et le
dcoupage en token (voir le paragraphe EXPANSION DE LHISTORIQUE plus bas). Le premier
caractre est le caractre de dveloppement de lhistorique, cest dire celui qui indique le dbut
dun dveloppement dhistorique (normalement !). Le second caractre est celui de subsitution
rapide, utilise comme raccourci pour relancer la commande prcdente, en modifiant une partie de

FSF

2 Octobre 1997

79

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

la chane. Par dfaut il sagit de . Lventuel troisime caractre est celui qui indique, lorsquon
le trouve en dbut de mot que le reste de la ligne est un commentaire. Normalement on utilise le
caractre #. Ce caractre de commentaire empche lexpansion de lhistorique pour tous les mots
restants sur la ligne. Par contre, il ne sagit pas obligatoirement du caractre indiquant un commentaire pour linterprteur.
nolinks

Si cette variable existe, le shell ne suit pas les liens symboliques lorsquil excute une commande
modifiant le rpertoire de travail. Il utilise la structure physique des rpertoires la place. Par
dfaut, bash suit la chane logique des rpertoires lorsquil excute des commandes modifiant le
rpertoire en cours, comme cd. Voir aussi la description de loption P de la commande interne
set ( COMMANDES INTERNES DU SHELL plus bas).
hostname_completion_file
HOSTFILE
Contient le nom dun fichier ayant le mme format que /etc/hosts qui sera consult lorsque le
shell devra complter un nom dhte. Ce fichier peut tre chang de manire interactive. Lors de la
prochane tentative pour complter un nom dhte, bash ajoutera le nouveau fichier sa base de
donnes dj existantes.
noclobber
Si cette variable existe, bash ncrasera pas un fichier existant avec les oprateurs de redirection >,
>&, et <>. Cette variable peut tre contourne lorsquon cre un fichier de sortie en utilisant
loprateur >| la place de > (voir galement loption C de la commande interne set).
auto_resume
Cette variable configure le comportement du shell interactif vis vis de lutilisateur et du contrle
de jobs. Si cette variable existe, les commandes simples constitues dun seul mot sont considres
comme de possibles relances de travaux arrts. Aucune ambigut nest possible, si plusieurs
travaux arrts commencent par la chane saisie, bash slectionne le job manipul le plus rcemment. Le nom du job arrt correspond, dans ce contexte, la ligne de commande utilise pour le
lancer. Si cette variable contient la valeur exact, la chane fournie doit correspondre exactement
au nom dun job arrt. Si elle contient la valeur substring, la chane fournie doit correspondre
une sous-chane du nom du job arrt. La valeur substring fournit un comportement analogue au
job id %? (voir CONTRLE DES JOBS plus bas). Si la variable contient nimporte quelle autre
valeur, la chane fournie doit correspondre un prfixe du nom dun job arrt. Cest analogue au
fonctionnement du job id %.
no_exit_on_failed_exec
Si cette variable existe, un shell non-interactif ne se terminera pas immdiatement si il ne peut pas
excuter un fichier avec la commande interne exec. Un shell interactif ne se termine pas si un exec
choue.
cdable_vars
Si cette variable existe, un argument de la commande interne cd qui ne soit pas un rpertoire, est
suppos tre un nom de variable dont le contenu indique le rpertoire destination dsir.

EXPANSION

Les expansions sont appliques la ligne de commande aprs quelle ait t divise en mots. Il existe sept
types de dveloppements : expansion des accolades, dveloppement du tilde, remplacement des paramtres
et variables, substitution de commandes, valuation arithmtique, dcoupage des mots, et dveloppement
des noms de fichiers.

Lordre est : expansion des accolades, du tilde, des paramtres, des variables, des commandes, valuation
arithmtique (selon la mthode gauche--droite), dcoupage des mots et dveloppement des noms de
fichiers.
Sur les systmes qui le suppportent, un dveloppement supplmentaire a lieu : la substitution de processus.
Seuls lexpansion des accolades, le dcoupage des mots, et le dveloppement des noms de fichiers peuvent
modifier le nombre de mots. Les autres dveloppement transforment un mot unique en un autre mot unique.

80

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

La seule exception cette rgle est lexpansion de $@ comme on la vu plus haut (voir le paragraphe
PARAMTRES).

Expansion des accolades


L expansion des accolades est un mcanisme permettant la cration de chanes quelconques. Il est similaire au dveloppement des noms de fichiers, mais les noms de fichiers crs nexistent pas ncessairement.
Les motifs qui seront dveloppes prennent la forme dun prambule facultatif, suivi dune srie de chanes
spares par des virgules, encadre par des accolades. Un postambule peut ventuellement suivre la srie
de chanes. Le prambule est insr devant chacune des chanes contenues entre les accolades, et le
postambule est ajout la fin de chacune des chanes rsultantes, le dveloppement se faisant de gauche
droite.
Plusieurs dveloppements daccolades peuvent tre imbriqus les uns dans les autres. Les chanes rsultant
de chaque dveloppement ne sont pas tries, lordre gauche droite est conserv. Par exemple a{d,c,b}e se
dveloppe en ade ace abe.
Lexpansion des accolades est effectue avant tout autre type de dveloppement, et tous les caractres ayant
une signification spciale pour les autres dveloppement sont conservs dans le rsultat. Il sagit dune
modification purement littrale. Bash neffectue aucune interprtation syntaxique du texte entre les accolades.
Une formule correcte pour le dveloppement doit contenir des accolades ouvrantes et fermantes non
protges, et au moins une virgule non protge. Toute formule incorrecte nest pas dveloppe et reste
inchange.
Cette construction est gnralement utilise comme raccourci lorsque le prfixe commun aux diffrentes
chanes est relativement long :
ou

mkdir /usr/local/src/bash/{old,new,dist,bugs}
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Le dveloppement des accolades induit une lgre incompatibilit avec les versions traditionnelles de sh,
linterprteur Bourne. sh neffectue aucun traitement sur les accolades ouvrantes et fermantes lorsquelles
apparaissent dans un mot, et les laisse inchanges. Bash suppprime les accolades dans les mots, aprs
dveloppement. Par exemple si lon fournit sh le mot file{1,2}, il reste inchang en sortie. Par contre, il est
tranform en file1 file2 par bash. Si une compatibilit stricte avec sh est ncessaire, lancez bash avec
lattribut nobraceexpansion (voir OPTIONS plus haut) ou dsactivez le dveloppement des accolades
avec loption +o braceexpand de la commande set (voir le paragraphe COMMANDES INTERNES DU
SHELL plus bas).
Dveloppement du Tilde
Si un mot commence avec le caractre tilde (), tous les caractres prcdant le premier slash (voire tous
les caractres sil ny a pas de slash), sont considrs comme un nom de login possible. Si ce nom de login
est une chane nulle, le tilde est remplac par la valeur du paramtre HOME. Si HOME nexiste pas, le tilde
est remplac par le rpertoire de connexion de lutilisateur excutant le shell.
Si un + suit le tilde, ils seront remplacs par la valeur du paramtre PWD. Si un suit, ils seront remplacs par la valeur de OLDPWD. Si la valeur suivant le tilde est un nom de login valide, le tilde, ainsi que
ce nom seront remplacs par le rpertoire personnel associ ce nom. Si le nom est invalide, ou si le
dveloppement du tilde choue, le mot est inchang.
Chaque affectation de variable est soumis au dveloppement du tilde sil suit le : ou le =. On peut donc
utiliser des chemins daccs avec un tilde pour remplir les variables PATH, MAILPATH, et CDPATH, et le
shell fournira la valeur correcte.
Remplacement des paramtres
Le caractre $ permet dintroduire le remplacement des paramtres, la substitution de commandes, ou
lexpansion arithmtique. Le nom du paramtre ou du symbole dvelopper peut tre encadr par des
accolades, afin dviter que les caractres suivants ne soient considrs comme appartenant au nom de la
variable.

FSF

2 Octobre 1997

81

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

${paramtre}
est remplac par la valeur du paramtre. Les accolades sont ncessaire quand le paramtre est un
paramtre positionnel ayant plusieurs chifres, ou si le paramtre est suivi de caractres nappartenant pas son nom.
Dans chacun des exemples suivants, le mot est soumis au dveloppement du tilde, au remplacement des
paramtres, la substitution de commandes, et lvaluation arithmtique. Bash vrifie si un paramtre
existe, et sil nest pas nul. Lomission du double point ne fournit quun test dexistence.
${paramtre:mot}
Utilisation dune valeur par dfaut. Si le paramtre est inexistant ou nul, on substitue le
dveloppement du mot. Sinon, cest la valeur du paramtre qui est fournie.
${paramtre:=mot}
Attribution dune valeur par dfaut. Si le paramtre est inexistant ou nul, le dveloppement du
mot lui est affect. La valeur du paramtre est alors renvoye. Les paramtres positionnels, et
spciaux ne peuvent pas tre affects de cette faon.
${paramtre:?mot}
Affichage dune erreur si inexistant ou nul. Si le paramtre est inexistant, ou nul, le dveloppement du mot (ou un message appropri si aucun mot nest fourni) est affich sur la sortie derreur
standard, et linterprteur se termine, sil nest pas interactif. Autrement, la valeur du paramtre
est utilise.
${paramtre:+mot}
Utilisation dune valeur diffrente. Si le paramtre est nul, ou inexistant, rien nest substitu.
Sinon le dveloppement du mot est renvoy.
${#paramtre}
Est remplac par la longueur, en caractres, de la valeur du paramtre. Si le paramtre est * ou
@, la longueur fournie est celle du paramtre * dvelopp entre guillemets.
${paramtre#mot}
${paramtre##mot}
Le mot est dvelopp pour fournir un motif, comme dans lexpansion des noms de fichiers. Si le
motif correspond au debut de la valeur du paramtre, alors le dveloppement prend la valeur du
paramtre aprs suppression du plus petit motif commun (cas #), ou du plus long motif (cas
##).
${paramtre%mot}
${paramtre%%mot}
est dvelopp pour fournir un motif, comme dans lexpansion des noms de fichiers. Si le motif
correspond une portion finale de la valeur du paramtre, alors le dveloppement prend la valeur
du paramtre aprs suppression du plus petit motif commun (cas %), ou du plus long motif
(cas %%).
Substitution de commandes
La substitution de commandes permet de remplacer le nom dune commande par son rsultat. Il en existe
deux formes :
ou

$(commande )
commande

Bash effectue la substitution en excutant la commande et en la remplaant par sa sortie standard, dont les
derniers sauts de lignes sont supprims.
Quand lancienne forme de substitution -avec les backquotes - est utilise, le caractre backslash garde sa
signification littrale, sauf sil est suivi de $, , ou \. Quand on utilise la forme $(commande ), tous les caractres entre parenthses gardent leurs valeurs littrales. Aucun nest trait spcifiquement.
Les substitutions de commandes peuvent tre imbriques. Avec lancienne forme, il faut protger les backquotes internes avec un backslash.

82

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

Si la substitution apparat entre guillemets, le dcoupage des mots, et lexpansion des noms de fichiers ne
sont pas effectus.
valuation Arithmtique
Lvaluation arithmtique permet de remplacer une expression par le rsultat de son valuation. Il existe
deux formats dvaluation arithmtique :
$[expression]
$((expression))
Lexpression est manipule de la mme manire que si elle se trouvait entre guillemets, mais un guillemet
se trouvant entre les crochets ou les parenthses nest pas trait spcifiquement. Tous les mots de lexpression subissent le dveloppement des paramtres, la substitution des commandes et la suppression des apostrophes et guillemets. Les valuations arithmtiques peuvent tre imbriques.
Lvaluation est effectue en suivant les rgles mentionnes dans le paragraphe CALCUL ARITHMTIQUE
(plus bas). Si lexpression est invalide, bash affiche un message indiquant lerreur, et aucune substitution
na lieu.
Substitution de Processus
La substitution de processus nest disponible que sur les systmes acceptant le mcanisme des tubes
nomms (FIFOs) ou la mthode /dev/fd de noms de fichiers ouverts. Elle prend la forme <(liste) ou
>(liste). La liste de processus est excute avec ses entres et sorties connectes une FIFO ou un fichier
dans /dev/fd. Le nom de ce fichier est pass en argument la commande qui sera excute comme rsultat
de cette substitution. Si lon utilise la forme >(liste), lcriture dans le fichier fournira des entres pour la
liste. Si la forme <(liste) est utilise, le fichier passe en argument devra tre lu pour obtenir la sortie de la
liste.
Sur les systmes qui le permettent, la substitution de processus est effectue simultanment au remplacement des paramtres et variables, a la substitution de commande, et lvaluation arithmtique.
Sparation des mots
Les rsultats du remplacement des paramtres, de la substitution de commandes, et de lvaluation
arithmtique, qui ne se trouvent pas entre guillemets sont analyss par le shell afin dappliquer le
dcoupage des mots.
Linterprteur considre chaque caractre du paramtre IFS comme un dlimiteur, et redcoupe le rsultat
des transformations prcdentes en fonction de ceux-ci. Si la valeur du paramtre IFS est exactement
<espace><tabulation><retour-chariot>, (la valeur par dfaut), alors toute squence de caractres IFS sert
dlimiter les mots. Si IFS a une valeur autre que celle par dfaut, alors les squences de caractres blancs
espace et tabulation sont ignores en dbut et fin de mot, condition que ces caractres blancs se trouvent
dans la valeur de IFS. Tout autre caractre de IFS se trouvant ct dun caractre blanc de IFS, sert
dlimiter un champ. Une squence de caractres blancs de IFS est galement traite comme un sparateur.
Si la valeur de IFS est nulle, aucun dcoupage de mot na lieu. IFS ne peut pas tre dtruit.
Les arguments nuls explicites ("" ou ) sont conservs. Les arguments nuls implicites, rsultant du
dveloppement des paramtres nayant pas de valeurs, sont limins.
Notez que si aucun dveloppement na lieu, le dcoupage des mots nest pas effectu.
Dveloppement des noms de fichiers
Apres le dcoupage des mots, et si loption f nest pas indique, bash recherche dans chaque mot les caractres *, ?, et [. Si lun deux apparat, le mot est considr comme un motif , et remplac par une liste,
classe par ordre alphabtique, des noms de fichiers correspondant ce motif. Si aucun nom de fichiers ne
correspond, et si la variable allow_null_glob_expansion nexiste pas, le mot reste inchang. Si la variable
existe, et si aucune correspondance nest trouve, le mot est limin. Quand un motif est utilis pour crer
des chemins daccs, le caractre . au dbut dun nom, ou immdiatement la suite dun slash doit tre
explicitement mis en correspondance, moins que la variable shell glob_dot_filenames nexiste. Dans
tous les autres cas, le caractre . nest pas trait spcifiquement. Le caractre slash doit toujours tre
mis en correspondance explicitement.

FSF

2 Octobre 1997

83

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

Les caractres spciaux ont les significations suivantes :


*
?
[...]

Correspond nimporte quelle chane, y compris la chane vide.


Correspond nimporte quel caractre.
Correspond lun des caractres entre crochets. Une paire de caractres spars par un signe
"moins" indique un intervalle; qui correspond nimporte quel caractre situ entre les deux
bornes incluses. Si le premier caractre suivant le [ est un ! ou un alors la correspondance se fait
sur les caractres non-inclus. Un ou un ] peuvent tre mis en correspondance en les incluant en
premier ou dernier caractre de lensemble.

Suppression des protections


Aprs les dveloppements prcdents, toutes les occurences non-protges des caractres \, , et " sont supprimes.

REDIRECTION

Avant quune commande ne soit excute, il est possible de rediriger son entre et sa sortie en utilisant une
notation spciale qui sera interprte par le shell. Les redirections peuvent galement servir ouvrir ou fermer des fichiers dans lenvironnement actuel du shell. Les oprateurs de redirection dcrits ci-dessous peuvent apparaitre avant, ou au sein dune commande simple ou suivre une commande. Les redirections sont
traites dans lordre dapparition de gauche droite.

Dans les descriptions suivantes, si le numro de descripteur de fichier est omis, et si le premier caractre de
loprateur de redirection est <, celui-ci correspondra lentre standard (descripteur de fichier 0). Si le
premier caractre de loprateur est >, la redirection sappliquera la sortie standard (descripteur de fichier
1).
Le mot qui suit loperateur de redirection dans les descriptions suivantes est soumis lexpansion des accolades, du tilde, des paramtres, la substitution de commandes, lvaluation arithmtique, la suppression des protections, et au dveloppement des noms de fichiers. Sil se modifie pour donner plusieurs mots,
bash dtectera une erreur.
Remarquez que lordre des redirections est important. Par exemple, la commande
ls > liste_rpertoires 2>&1
redirige a la fois la sortie standard et la sortie derreur vers le fichier liste_rpertoires, alors que la commande
ls 2>&1 > liste_rpertoires
ne redirige que la sortie standard vers le fichier liste_rpertoires, car la sortie derreur a t renvoye vers la
sortie standard avant que celle-ci ne soit redirige vers liste_rpertoires.
Redirection dentre
Le format gnral des redirections dentre est le suivant :
[n]<mot
Lorsque lon applique une redirection dentre, le fichier dont le nom rsulte du dveloppement du mot sera
ouvert en lecture avec le descripteur de fichier numro n, ou en tant quentre standard (descripteur de
fichier 0) si n nest pas mentionn.
Redirection de sortie
Le format gnral des redirections de sortie est le suivant :
[n]>mot
Lors dune redirection de sortie, le fichier dont le nom rsulte du dveloppement du mot est ouvert en criture, avec le descripteur de fichier n, ou en tant que sortie standard (descripteur de fichier 1) si n nest pas
mentionn. Si le fichier nexiste pas, il est cr. Sil existait dj, sa taille est ramene 0.
Si loprateur de redirection est >|, alors la valeur de loption -C de la commande interne set est ignore, et
une tentative de cration de fichier a lieu. (Voir la description de noclobber dans le paragraphe Variables
du Shell plus haut).

84

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

Redirection pour Ajout en Sortie


Le format gnral pour la redirection de sortie avec ajout est :
[n]>>mot
Lorsquon redirige ainsi la sortie, le fichier dont le nom rsulte du dveloppement du mot est ouvert pour
ajout en fin de fichier, avec le descripteur n, ou en tant que sortie standard (descripteur 1) si n nest pas
mentionn. Si le fichier nexiste pas, il est cr.
Redirection de la sortie standard et de la sortie derreur.
Bash permet la redirection simultane de la sortie standard (descripteur 1) et de la sortie derreur (descripteur 2), dans un fichier dont le nom est le rsultat du dveloppement du mot.
Il y a deux formes pour effectuer cette double redirection :
et

&>mot
>&mot

On prfre gnralement la premire. Elle est smantiquement quivalente


>mot 2>&1
Document en ligne
Avec ce type de redirection, le shell va lire son entre standard jusqu ce quil atteigne une ligne contenant
uniquement le mot prvu (sans espaces la suite), nomme tiquette. Une fois cette tiquette atteinte, il
excutera la commande demande en lui fournissant en entre le texte lu avant ltiquette, que lon appelle
document en ligne.
Le format des documents en ligne est le suivant :
<<[]mot
document en ligne
tiquette
Il ny a ni remplacement de paramtre, ni substitution de commande, ni dveloppement de chemin dacces,
ni valuation arithmtique sur le mot. Si lun des caractres du mot est protg, ltiquette est obtenue
aprs suppression des protections dans le mot, et les lignes du document ne sont pas dveloppes. Sinon,
toutes les lignes du document sont soumises au remplacement des paramtres, la substitution de commandes, et lvaluation arithmtique. Dans ce dernier cas, les couples \<retour-chariot> sont ignors, et \ doit
tre utilis pour protger les caractres \, $, et .
Si loprateur de redirection est <<, alors les tabulations en tte de chaque ligne sont supprimes, y compris dans la ligne contenant ltiquette. Ceci permet dindenter de manire naturelle les documents en ligne
au sein des scripts.
Ddoublement de descripteur de fichier
Loprateur de redirection
[n]<&mot
permet de dupliquer les descripteurs de fichiers en entre. Si le mot se transforme en un ou plusieurs
chiffres, le descripteur de fichier n devient une copie de ce descripteur. Si le mot prend la forme -, le
descripteur n est ferm. Si n nest pas mentionn, on utilise lentre standard (descripteur 0).
Loprateur
[n]>&mot
est utilis de manire similaire pour dupliquer les descripteurs de sortie. Si n nest pas prcis, on considre la sortie standard (descripteur 1). Un cas particulier se produit si n est omis, et si mot ne se
dveloppe pas sous forme de chiffres. Alors, les sorties standard et derreurs sont toutes deux rediriges
comme prcdement.

FSF

2 Octobre 1997

85

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

Ouverture en Lecture/criture dun descripteur de fichier


Loprateur de redirection
[n]<>mot
ouvre la fois en lecture et en criture le fichier dont le nom rsulte du dveloppement du mot, et lui affecte
le descripteur de fichier n, ou bien les entre et sortie standard si n nest pas mentionn. Si le fichier
nexiste pas, il est cr.

FONCTIONS

Une fonction du shell mmorise une srie de commandes pour permettre une excution ulterieure. La definition dune fonction est dcrite plus haut, dans le paragraphe GRAMMAIRE DU SHELL. Les fonctions
sont excutes dans le contexte de linterprteur en cours. On ne cre pas de nouveau processus pour
interprter une fonction, contrairement lexcution dun script. Les arguments dune fonction sont placs
dans les paramtres positionnels durant son excution. Le paramtre spcial # est mis a jour. Le paramtre
positionnel 0 nest pas modifi.
La variables locales dune fonction peuvent tre dclares en utilisant la commande interne local.
Autrement, les variables et leurs valeurs sont partages entre la fonction et son appelant.

Si la commande interne return est excute dans une fonction, celle-ci se termine et lexcution reprend
avec la commande suivant lappel de fonction. Quand une fonction se termine, les paramtres positionnels
et le paramtre spcial # reprennent les valeurs quils avaient avant lappel de fonction.
Les noms des fonctions et leurs dfinitions peuvent tre affichs en utilisant loption f des commandes
internes declare ou typeset. Les fonctions peuvent tre exportes avec loption f de la commande interne
export, afin de rester dfinies dans les sous-shells.
Les fonctions peuvent tre rcursives. Aucune limite nest impose quant au nombre dappels rcursifs.

ALIAS

Linterprteur gre une liste dalias qui peuvent tre crs et dtruits avec les commandes internes alias et
unalias (voir le paragraphe COMMANDES INTERNES DU SHELL plus bas). Le shell vrifie si le premier
mot de chaque commande ( condition quil ne soit pas protg) est un alias. Si tel est le cas, ce mot est
remplac par le texte de lalias. Le nom de lalias, ainsi que le texte de remplacement, peuvent contenir
nimporte quels caractres valides pour le shell, y compris les mta-caractres prsents plus haut. Une
exception toutefois, le nom de lalias ne peut pas contenir de caractre =. Le shell vrifie si le premier mot
du texte de remplacement est son tour le nom dun alias, mais sil est identique au nom de lalias il ne
sera pas remplac nouveau. Ceci permet par exemple de crr un alias pour ls valant ls F, que bash
nessaiera pas de dvelopper rcursivement. Si le dernier caractre du texte de remplacement est un blanc,
alors on vrifiera galement si le mot suivant lalias est lui aussi un alias.
Les alias sont crs et affichs avec la commande alias, et supprims avec la commande unalias.
Il nexiste pas de mcanisme permettant dutiliser des arguments dans le texte de remplacement, contrairement linterpreteur csh. Si lon a besoin de traiter des arguments, il faut utiliser une fonction du shell.
Les alias ne sont dvelopps quavec les shells interactifs.
Les rgles concernant la dfinition et lutilisation des alias sont un peu confuses. Bash lit toujours au
moins une ligne dentre compltement avant dexcuter une commande de cette ligne. Les alias sont
traits lorsque la commande est lue, et non pas lorsquelle est excute. Ainsi, une dfinition dalias apparaissant sur la mme ligne quune autre commande ne prend pas effet avant la lecture de la prochaine ligne
dentre. Autrement dit, une commande place la suite dune dfinition dalias, sur la mme ligne ne sera
pas affecte par cet alias. Ce comportement est galement important lors de lexcution des fonctions. Les
alias sont traits lorsque la dfinition de la fonction est lue, et non pas lors de lexcution de cette fonction.
Ainsi des alias dfinis dans une fonction ne sont pas actifs avant la fin de lexcution de la fonction. Pour
plus de tranquilit, placez toujours les dfinitions dalias sur des lignes isoles, et nutilisez jamais la commande alias dans les commandes composes.
Notez enfin que la plupart du temps les alias sont avantageusement remplacs par des fonctions du shell.

86

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

CONTRLE DES JOBS

Le contrle des jobs permet darrter (suspend) slectivement lexcution dun processus, et de la reprendre
(resume) ultrieurement. Lutilisateur bnficie gnralement de cette possibilit grce laction conjointe
du pilote de terminal et de bash.

Linterprteur associe un job chaque pipeline. Il maintient une table des jobs en cours dexcution, cette
table pouvant tre affiche avec la commande jobs. Quand bash lance un job de manire asynchrone (en
arrire-plan), il affiche une ligne du genre :
[1] 25647
Cette ligne indique que le job est associ au numro 1, et que le PID du dernier processus dans le pipeline
est 25647. Tous les processus dans un pipeline simple font partie du mme job. Bash utilise la notion de
job comme une abstraction pour aider les contrler.
Pour faciliter limplmentation dune interface utilisateur pour le contrle de job, le systme introduit la
notion dID de groupe de processus associs un terminal. Les membre de ce groupe de processus (ceux
dont le GID est gal au Process Group ID du terminal) recoivent les signaux dclenchs par le clavier,
comme SIGINT. Ces processus sont dits en avant-plan. Les processus en arrire-plan sont ceux dont le
Process-GID differe de celui du terminal, ceux qui ne reoivent pas les signaux dclenchs par le clavier.
Seuls les processus en avant-plan peuvent lire depuis le terminal ou crire dessus. Les processus en arrireplan qui tentent une lecture sur le terminal (ou une criture dessus), reoivent les signaux SIGTTIN (SIGTTOU) mis par le pilote de pripherique du terminal, lesquels signaux suspendent lexcution du processus
(sauf interception du signal).
Si le systme dexploitation sur lequel bash fonctionne permet le contrle des jobs, bash vous y donne
accs. La frappe dun caractre suspension (gnralement Z, Contrle-Z) pendant lexcution dun processus arrte celui-ci, et redonne la main bash. La frappe dun caractre suspension diffre (gnralement Y, Contrle-Y) arrtera le processus au moment o il tentera de lire depuis le terminal, et la main
reviendra bash. Il est possible de manipuler ces jobs en utilisant la commande bg (background = arrireplan) pour continuer lexcution en arrire-plan, fg (foreground) pour la reprendre en avant-plan, ou encore
la commande kill pour tuer le processus. Un Z prend effet immdiatement, et limine les sorties en attente.
Il y a plusieurs manires de faire rfrence un job. Le caractre % introduit un nom de job. Le job
numro n peut tre not %n. On peut galement faire rfrence un job en utilisant un prfixe du nom
utilise pour le lancer, ou une partie de la ligne de commande. Par exemple, %ce se rfre un job arrt
nomme ce. Si ce prfixe correspond plusieurs jobs, bash renverra une erreur. Dautre part, %?ce, fait
rfrence nimporte quel job contenant la chane ce dans sa ligne de commande. Si la sous-chane correspond plusieurs jobs, bash renverra une erreur. Les symboles %% et %+ rfrencent le job courant du
shell, cest dire le dernier job arrt alors quil se trouvait en avant-plan. Le job prcdent peut tre mentionn en utilisant %. Dans les affichages se rapportant aux jobs (par exemple ceux de la commande jobs
le job courant est toujours indiqu par un +, et le job prcdent avec un -.
Il suffit de nommer un job pour le ramener en avant-plan : %1 est synonyme de fg %1, et ramne le job
1 depuis larrire-plan vers lavant-plan. De mme, %1 & relance le job 1, mais en arrire-plan cette
fois, de manire quivalente bg %1.
Le shell est immdiatement prvenu lorsquun job change dtat. Normalement bash attend dtre prt
afficher son symbole daccueil avant de fournir un rapport sur les changements dans les statut des jobs, afin
de ne pas perturber les autres affichages. Avec loption -b de la commande interne set, bash affichera les
modifications immdiatement (Voir aussi la description de la variable notify dans le paragraphe Variables
du Shell plus haut.)
Si vous essayez de quitter bash alors que des jobs sont suspendus, le shell affichera un message davertissement. Vous pouvez alors utiliser la commande jobs pour vrifier leurs tats. Une fois cette commande
invoque, ou si vous essayez nouveau de quitter le shell immdiatement, il ny aura plus davertissement,
et les jobs suspendus seront dfinitivement termins.

FSF

2 Octobre 1997

87

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

SIGNAUX

Quand bash fonctionne de manire interactive, il ignore le signal SIGTERM (cest pourquoi kill 0 ne tue
pas un shell interactif), et le signal SIGINT est intercept et gr (cest pourquoi la commande interne wait
nest pas interruptible). Dans tous les cas, bash ignore le signal SIGQUIT. Si le contrle de jobs est
disponible, bash ignore les signaux SIGTTIN, SIGTTOU, et SIGTSTP.

Les jobs synchrones lancs par bash reoivent les valeurs des signaux hrites par le shell de leur parent.
Quand le contrle de job nest pas actif, les jobs en arrire-plan (dmarrs avec &) ignorent les signaux
SIGINT et SIGQUIT. Les commandes excutes en tant que rsultat de la substitution de commandes
ignorent les signaux de contrle de jobs mis par le clavier SIGTTIN, SIGTTOU, et SIGTSTP.

XCUTION DES COMMANDES

Apres le dcoupage de la ligne de commande en mots, si le rsultat est une commande simple suivie dune
ventuelle liste darguments, les actions suivantes sont effectues.

Si le nom de la commande ne contient pas de slash, le shell tente de la trouver. Sil existe une fonction shell
de ce nom, elle est appele comme nous lavons vu dans le paragraphe FONCTIONS plus-haut. Si le nom
nest pas celui dune fonction, linterprteur le recherche dans la liste des fonctions internes. Si une quivalence est trouve, la fonction interne est invoque.
Si le nom nest ni celui dune fonction shell, ni celui dune commande interne, et sil ne contient pas de
slash, bash va chercher dans chacun des membres de PATH un rpertoire contenant un fichier excutable du
nom dsir. Si la recherche est infructueuse, linterprteur affiche un message derreur et renvoie un code
de retour non nul.
Si la recherche russit, ou si le nom de la commande contient au moins un slash, le shell excute le programme voulu. Largument 0 est rempli avec le nom fourni, et les autres arguments seront ventuellement
remplis avec le reste de la ligne de commande.
Si lexcution choue parce que le programme nest pas un excutable, et si le fichier nest pas un rpertoire, on le considre alors comme un script shell, un fichier contenant une srie de commandes. Un sousshell est alors cr pour excuter ce script. Ce sous-shell se rinitialisera lui-mme, comme si un nouveau
shell avait t invoqu pour excuter le script, la difference quil continuera mmoriser lemplacement
des commandes connues de son parent (voir hash dans le paragraphe COMMANDES INTERNES DU
SHELL plus bas).

Si le programme est un fichier commenant par #!, le reste de la premire ligne indique un interprteur pour
ce programme. Le shell se chargera dexcuter cet interprteur, si le systme dexploitation ne gre pas luimme ce format dexcutable. Les arguments de linterprteur consistent en un premier argument ventuel
fourni sur la premire ligne du fichier la suite du nom de linterprteur, suivi du nom du programme, suivi
des arguments de la commande sil y en a.

ENVIRONNEMENT

Quand un programme est invoqu, il reoit un tableau de chanes que lon appelle environnement. Il sagit
dune liste de paires nomvaleur, de la forme nom=valeur.
Le shell permet de manipuler lenvironnement de plusieurs faons. Au dmarrage, le shell analyse son propre environnement, et cre un paramtre pour chaque nom trouv, en le marquant comme exportable vers
les processus fils. Les commandes excutes hritent de cet environnement. Les commandes export et
declare x permettent dajouter ou de supprimer des paramtres ou des fonctions de lenvironnement. Si la
valeur dun paramtre de lenvironnement est modifie, la nouvelle valeur devient une partie de lenvironnement, et elle remplace lancienne. Lenvironnement hrit par les commandes excutes est lenvironnement initial du shell (dont les valeurs peuvent tre modifies), moins les lments supprims par la commande unset, plus les lments ajouts par les commandes export et declare x.
Lenvironnement dune commande simple ou dune fonction peut tre augment temporairement en la
faisant prcder dune affectation de paramtre, comme nous lavons vu plus haut dans le paragraphe
PARAMTRES. Ces affectations ne concernent que lenvironnement vu par cette commande ou fonction.
Si loption k est utilise (voir la commande interne set plus bas), alors toutes les affectations de
paramtres sont places dans lenvironnement dune commande excute, pas seulement celles qui

88

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

prcdent son nom.


Quand bash invoque une commande externe, la variable _ contient le chemin daccs complet cette commande, et elle est transmise dans lenvironnement.

CODE DE RETOUR

Au niveau du shell, une commande qui se termine avec un code de retour nul est considre comme russie.
Le zro indique le succs. Un code de retour non-nul indique un echec. Quand une commande se termine
cause dun signal fatal, bash utilise la valeur 128+signal comme code de retour.

Si une commande nest pas trouve, le processus fils cr pour lexcuter renvoie la valeur 127. Si la commande est trouve mais pas excutable, la valeur renvoye est 126.
Bash lui-mme renvoie le code de retour de la dernire commande excute, moins quune erreur de syntaxe ne se produise, auquel cas il renvoie une valeur non-nulle. Voir galement la commande interne exit
plus bas.

SYMBOLE DACCUEIL (PROMPT)

Quand il est excut de manire interactive, bash affiche le symbole daccueil principal PS1 ds quil est
prt lire une commande, et le symbole daccueil secondaire PS2 quand il a besoin de plus de donnes pour
excuter une commande. Bash permet de personnaliser ces chanes daccueil, en insrant des squences
dchappement spciales (prfixes par un backslash) ayant les significations suivantes :
\t
lheure actuelle au format HH:MM:SS
\d
la date au format "Jour_de_la_semaine Mois Quantime" (ex : "Tue May 26")
\n
retour-chariot
\s
le nom du shell, cest dire le nom de base de $0 (la portion suivant le dernier slash)
\w
le rpertoire de travail en cours
\W
le nom de base du rpertoire de travail en cours
\u
le nom de lutilisateur
\h
le nom dhte de la machine
\#
le numro de la commande
\!
le numro dhistorique de la commande
\$
# si lUID effectif est 0, $ sinon
\nnn
le caractre de code octal nnn
\\
un backslash
\[
dbute une srie de caractres non-imprimables, qui permettent dinclure des squences
de contrle de terminal dans une chane daccueil
\]
fin dune srie de caractres non-imprimables
Le numro de commande, et le numro dhistorique sont gnralement diffrents : le numro dhistorique
dune commande correspond sa position dans la liste dhistorique qui peut contenir des commandes relues
depuis cette liste (voir le paragraphe HISTORIQUE plus bas), alors que le numro de commande est simplement une position dans la squence de commandes excutes depuis le dbut de la session shell actuelle.
Apres que la chane dinvite ait t dcode, elle est soumise lexpansion des paramtres, substitution de
commandes, valuation arithmtique et dcoupage des mots.

BIBLIOTHQUE READLINE

Il sagit de la bibliothque qui gre la saisie lors des sessions interactives du shell, moins que loption
nolineediting nait t choisie. Par dfaut les commandes ddition de ligne sont similaires celles
demacs. Il est galement possible de disposer dune interface ddition du style vi.

Dans ce paragraphe on utilisera la notation " la emacs" pour indiquer les squences de touches. Les
touches Contrle sont notes Ctouche, par exemple Cn signifie ContrleN. De mme, les touches Mta
sont notes par Mtouche, ainsi Mx signifie MtaX. (Sur les claviers sans touches Mta, Mx signifie
ESC x (sur les claviers franais ESC est not chappement), autrement dit presser la touche chappement
puis la touche x. On dit alors quESC est le prfixe mta. La squence MCx signifie ESCContrlex,
ou encore Presser la touche chappement puis maintenez la touche Contrle enfonce tout en pressant la
touche x.
Laffectation par dfaut des touches peut tre modifie dans le fichier /.inputrc. La valeur de la variable

FSF

2 Octobre 1997

89

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

shell INPUTRC, si elle existe, est utilise la place du fichier /.inputrc. Dautres programmes qui utilisent
cette bibliothque peuvent ajouter leurs propres affectations de touches.
Par exemple, en plaant
ou

MControlu: universalargument

CMetau: universalargument
dans le fichier /.inputrc, on affectera la squence de touche MCu la commande readline universalargument.
Les caractres symboliques suivants sont accepts : RUBOUT , DEL, ESC, LFD, NEWLINE, RET ,
RETURN , SPC, SPACE, et TAB. En plus des noms de commandes, readline permet daffecter aux touches
des chanes de caractres qui seront insres lorsque la touche sera presse (une macro).
Readline peut tre personnalis en ajoutant des commandes dans le fichier dinitialisation dont le nom est
contenu dans la variable INPUTRC, ou, sil elle nexiste pas, dans le fichier /.inputrc. Quand un programme qui utilise la bibliothque readline dmarre, le fichier dinitialisation est lu, et les affectations de
touches et de variables sont effectues. Il ny a que peu de constructions autorises dans le fichier dinitialisation. Les lignes blanches sont ignores. Les lignes commenant par # sont considres comme des commentaires, les lignes commenant par un $ indique une construction conditionnelle. Les autres lignes contiennent les affectations de touches et les assignations de variables.
La syntaxe des affectations de touches dans le fichier /.inputrc est simple. Les seules choses ncessaires
sont le nom dune commande, ou le texte dune macro, et la squence de touches laquelle il faut laffecter.
Les touches peuvent tre indiques de deux manires : sous forme de nom symbolique, ventuellement
prcd de Meta- ou Control-, ou sous forme de squence de touches. Lorsque lon utilise la forme
touche:nom_de_fonction ou macro, touche est le nom de la squence de touches pele en Anglais. Par
exemple :
Control-u: universalargument
Meta-Rubout: backward-kill-word
Control-o: ">&sortie"
Dans ces exemples, C-u est assign la fonction universalargument, M-DEL la fonction backwardkillword, et C-o est affect la macro exprime dans la partie gauche (cest dire insrera >&sortie sur la ligne).
Avec la seconde forme, "touches":nom_de_fonction ou macro, touches nest plus un nom symbolique,
mais dcrit une squence complte de touches entre guillemets. Certaines squences dchappement dans le
style GNU Emacs peuvent tre utilise, comme dans lexemple suivant :
"\C-u": universalargument
"\C-x\C-r": rereadinitfile
"\e[11": "Touche Fonction 1"
Dans cet exemple, C-u est nouveau assign la fonction universalargument, C-x C-r la fonction
rereadinitfile, et ESC [ 1 1 insrera le texte Touche Fonction 1. Lensemble complet des squences
dchappement est le suivant :
\C

prfixe Contrle

\M-

prfixe Mta

\e

caractre dchappement

\\

backslash

\"

un guillemet littral

un apostrophe littral

Lorsque lon saisit le texte dune macro, il faut utiliser des apostrophes ou des guillemets pour indiquer la

90

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

dfinition de la macro. Les textes non protgs sont considrs comme des noms de fonctions. Le backslash protgera nimporte quel caractre dans la dfinition dune macro, y compris " et .
Bash permet dafficher ou de modifier les affectations des touches avec la commande interne bind. On
peut changer de mode ddition durant une session interactive en utilisant loption o de la commande
interne set (voir le paragraphe COMMANDES INTERNES DU SHELL plus bas).
Readline dispose de variables permettant de personnaliser encore plus son comportement. Une variable
peut tre configure dans le fichier inputrc avec une dclaration de la forme
set nom_de_variable valeur
Sauf contre-indication, les variables de readline prennent les valeurs On ou Off. Les variables, et leurs
valeurs par dfaut, sont :
horizontalscrollmode (Off)
Si cette variable contient la valeur On, readline utilisera une seule ligne daffichage, et la fera
dfiler horizontalement si elle devient plus longue que la largeur de lcran, plutt que de basculer
sur une nouvelle ligne.
editingmode (emacs)
Cette variable indique si readline doit dmarrer avec des affectations de touches similaires emacs
ou vi. editingmode peut prendre les valeurs emacs ou vi.
markmodifiedlines (Off)
Si cette variable est configure sur On, les lignes dhistorique qui ont t modifies seront
prcdes laffichage dun astrisque (*).
bellstyle (audible)
Cette variable permet de contrler le comportement de readline lorsquil faut dclencher le signal
sonore du terminal. Si cette variable contient la valeur none, readline nutilise pas le signal sonore
; si elle contient visible, readline utilise un avertisseur visuel si cest possible ; si elle contient
audible, readline essaie dutiliser le signal sonore du terminal.
commentbegin (#)
Cette chane est insre dans le mode vi quand la commande vicomment est excute.
metaflag (Off)
Si cette variable contient la valeur On, readline acceptera des saisies sur huit bits (autrement dit il
ne supprimera pas le huitime bit), quelque soit le terminal utilis.
convertmeta (On)
Si cette variable contient la valeur On, readline transformera en squences ASCII les caractres
ayant leur huitime bit 1. Il suprimera ce huitime bit, et insrera comme prfixe le caractre
dchappement (en utilisant ce caractre dchappement comme prfixe mta).
outputmeta (Off)
Si cette variable contient la valeur On, readline affichera directement les caractres ayant leur
huitime bit 1, plutt que dutiliser une squence dchappement avec le prfixe mta.
completionqueryitems (100)
Lors de la compltion de commandes, si le nombre de possibilits est suprieur cette valeur, on
demandera confirmation lutilisateur avant dafficher la liste des possibilits. Le nombre de
compltions possibles est dtermin par la commande possiblecompletions.
keymap (emacs)
Configure laffectation des touches. Les jeux daffectations disponibles sont emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, et vi-insert. vi est quivalent vi-command; emacs est quivalent emacs-standard. La valeur par defaut est emacs; notez que la configuration de la variable editingmode modifie aussi laffectation par dfaut.
showallifambiguous (Off)
Cette variable agit sur la compltion des commandes. Lorsquelle contient la valeur on, toutes les
compltions possibles sont affiches immdiatement plutt que de dclencher lavertisseur sonore.
expandtilde (Off)
Si cette variable contient la valeur on, le dveloppement du tilde est effectu lorsque readline tente
une compltion de commandes.

FSF

2 Octobre 1997

91

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

Readline propose un mcanisme inspir des possibilits de compilation conditionnelle en C, qui permet
deffectuer certaines assignations de variables, ou affectations de touches en fonction du rsultat dun test.
Il y a trois directives utilisables.
$if

La structure $if permet daffecter les touches en fonction du mode ddition, du terminal de saisie,
ou de lapplication qui utilise la bibliothque readline. Le texte du test se trouve la suite du $if,
jusqu la fin de la ligne.
mode

La forme mode= de la structure $if permet de vrifier si readline est en mode emacs ou
en mode vi. Ceci peut tre utilis conjointement la commande set keymap, par exemple pour ne configurer les jeux de touches emacs-standard et emacs-ctlx que si readline
dmarre en mode emacs.

term

La forme term= peut tre utilise pour ajouter des affectations de touches spcifiques au
terminal, par exemple sur des touches de fonction. Le mot droite du signe = est compar au nom complet du terminal, et la portion de ce nom qui prcde un ventuel signe
. Ceci permet, par exemple, de faire correspondre le mot sun aussi bien au terminal sun
quau terminal suncmd.

application
La forme application permet dinclure des configurations spcifiques lapplication.
Chaque programme utilisant la bibliothque readline configure un nom dapplication, et
un fichier dinitialisation peut dpendre de ce nom. Ceci est utile pour des affectations de
touches intressantes pour un programme spcifique. Par exemple, les commandes suivantes ajoutent une squence de touches capable de protger par des guillemets le mot
courant ou le mot prcdent, sous Bash :
$if Bash
# Protger le mot actuel ou le prcdent
"\C-xq": "\eb\"\ef\""
$endif
$endif Cette commande, comme vous lavez devin dans lexemple ci-dessus, termine une commande $if.
$else

Permet dajouter des commandes qui seront excutes si un $if choue.

Les commandes de readline peuvent recevoir un argument numrique, gnralement un nombre de


rptitions. Parfois il arrive que le signe de cet argument soit significatif. En passant un argument ngatif
une commande qui agit vers lavant (par exemple killline), on inversera le sens daction de cette commande. On dtaillera les commandes dont les arguments ont un comportement particulier.
Quand une commande est dcrite comme destructive (killing), le texte effac est sauvegard pour une
ventuelle rcupration ulterieure (yanking). Le texte est sauvegard dans des tampons circulaires(killring). Les destructions successives accumulent les textes dans le mme tampon qui peut etre
rcupr en une seule fois. Les commandes qui ne dtruisent pas de texte permettent de sparer les
diffrents tampons.
Voici une liste des noms de commandes, ainsi que les squences de touches auxquelles elles sont attribues
par dfaut.
Commandes de dplacement
beginningofline (Ca)
Saut au dbut de la ligne en cours.
endofline (Ce)
Saut la fin de la ligne.
forwardchar (Cf)
Avancer dun caractre.
backwardchar (Cb)
Reculer dun caractre.

92

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

forwardword (Mf)
Avancer jusqu la fin du mot suivant. Les mots sont composs de caractres alphanumiques
(lettres et chiffres).
backwardword (Mb)
Reculer jusquau dbut du mot courant, ou du prcdent. Les mots sont composs de caractres
alphanumriques (lettres et chiffres).
clearscreen (Cl)
Effacer lcran, en laissant la ligne courante en haut de lecran. Sil y a un argument, rafrachir la
ligne en cours sans effacer lcran.
redrawcurrentline
Rafrachir la ligne en cours. Par dfaut pas daffectation de touche.
Commandes de manipulation de lhistorique
acceptline (Retour-Chariot)
Valider la ligne, sans se soucier de lemplacement du curseur. Si cette ligne est non vide, lajouter
la liste dhistorique, en fonction de ltat de la variable HISTCONTROL. Si cette ligne est une
modification dune ligne de lhistorique, restaurer cette dernire.
previoushistory (Cp)
Rcuprer la commande prcdente de la liste dhistorique.
nexthistory (Cn)
Rcuprer la commande suivante dans la liste dhistorique.
beginningofhistory (M<)
Rcuprer la premire ligne de lhistorique.
endofhistory (M>)
Retourner la fin de lhistorique, cest dire la ligne en cours ddition.
reversesearchhistory (Cr)
Rechercher en arrire dans lhistorique, en remontant. Cest une recherche incrmentale.
forwardsearchhistory (Cs)
Rechercher en avant dans lhistorique, en descendant. Cest une recherche incrmentale.
nonincrementalreversesearchhistory (Mp)
Rechercher une chane en arrire dans lhistorique, en remontant depuis la ligne actuelle, utiliser
une recherche non-incrmentale.
nonincrementalforwardsearchhistory (Mn)
Rechercher une chane en avant dans lhistorique, utiliser une recherche non-incrmentale.
historysearchforward
Rechercher en avant dans lhistorique la chane comprise entre le dbut de la ligne actuelle, et la
position du curseur. Par dfaut cette commande nest affecte aucune touche.
historysearchbackward
Rechercher en arrire dans lhistorique la chane comprise entre le dbut de la ligne actuelle, et la
position du curseur. Par dfaut cette commande nest affecte aucune touche.
yankntharg (MCy)
Insrer, lemplacement du curseur, le premier argument de la commande prcdente. Gnralement il sagit du second mot de la ligne prcdente. Avec un argument n, insrer le nime mot de
la commande prcdente (les mots sont numrots partir de 0). Un argument ngatif insre le
nime mot en partant de la fin de la commande prcdente.
yanklastarg (M. , M_ )
Insrer la position du curseur le dernier argument de la commande prcdente (le dernier mot de
la ligne prcdente). Avec un argument, se comporte exactement comme yank-nth-arg.
shellexpandline (MCe)
Dvelopper, comme le fait le shell, la ligne en cours. Ceci inclut le remplacement des alias et des
directives dhistorique, aussi bien que lensemble des expansions effectues par le shell. Voir le
paragraphe EXPANSION DE LHISTORIQUE plus bas, pour une description dtaille.
historyexpandline (M)
Effectuer lexpansion dhistorique sur la ligne en cours. Voir le paragraphe EXPANSION DE
LHISTORIQUE plus bas, pour une description dtaille.

FSF

2 Octobre 1997

93

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

insertlastargument (M., M_ )
un synonyme de yanklastarg.
operate-and-get-next (Co)
Valider la ligne en cours, et recuprer la ligne suivante de lhistorique pour ldition. Tout argument est ignor.
Commande ddition de texte
deletechar (Cd)
Effacer le caractre sous le curseur. Si le curseur est au dbut de la ligne, si celle-ci est vide, et si
le dernier caractre frapp ntait pas Cd, alors la valeur renvoye est EOF.
backwarddeletechar (Rubout)
Effacer le caractre derrire le curseur. Lorsque un argument est fourni, le texte effac est sauvegard dans un buffer.
quotedinsert (Cq, Cv)
Ajouter littralement sur la ligne le caractre frapp suivant. Ceci permet dinsrer des caractres
comme Cq, par exemple.
tabinsert (C-v TAB)
Insrer un caractre de tabulation.
selfinsert (a, b, A, 1, !, ...)
Insrer le caractre mentionn.
transposechars (Ct)
Echanger les caractres se trouvant devant et sous le curseur. Le curseur est alors avanc dun caractre. Sil se trouve la fin dune ligne, les caractres changs sont les deux prcdents. Les
arguments ngatifs ne sont pas accepts.
transposewords (Mt)
Echanger le mot o se trouve le curseur et le mot prcdent, puis avancer le curseur aprs ce mot.
upcaseword (Mu)
Transformer le mot en cours (ou le suivant) en majuscules. Avec un argument ngatif, agir sur le
mot prcdent mais ne pas dplacer le curseur.
downcaseword (Ml)
Transformer le mot en cours (ou le suivant) en minuscules. Avec un argument ngatif, agir sur le
mot prcdent mais ne pas dplacer le curseur.
capitalizeword (Mc)
Passer en majuscule linitiale du mot en cours (ou du suivant). Avec un argument ngatif, agir sur
le mot prcdent mais ne pas dplacer le curseur.
Effacement et rcuperation
killline (Ck)
Effacer le texte depuis lemplacement du curseur jusqu la fin de la ligne.
backwardkillline (Cx CRubout)
Effacer en arrire jusquau dbut de ligne.
unixlinediscard (Cu)
Effacer le texte entre le dbut de la ligne et lemplacement du curseur.
killwholeline
Effacer toute la ligne sans tenir compte de la position du curseur. Par dfaut cette fonction nest
affecte aucune touche.
killword (Md)
Effacer le texte entre lemplacement du curseur et la fin du mot en cours, ou jusqu la fin du mot
suivant si le curseur est entre deux mots. Les sparations de mots sont les mmes que celles de
forwardword.
backwardkillword (MRubout)
Effacer le mot sous le curseur Les sparations de mots sont les mmes que celles de backwardword.
unixwordrubout (Cw)
Effacer le mot derrire le curseur, en utilisant lespace blanc comme limite de mot. Cette limite est
diffrente de celle de backwardkillword.

94

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

deletehorizontalspace
Effacer tous les espaces blancs et les tabulations autour du curseur. Par dfaut cette commande
nest affecte aucune touche.
yank (Cy)
Rcuprer le texte au sommet du tampon circulaire.
yankpop (My)
Excuter une rotation du tampon circulaire, et rcuprer le nouveau texte situ son sommet. Ceci
ne fonctionne quaprs yank ou yankpop.
Arguments numriques
digitargument (M0, M1, ..., M)
Ajouter le chiffre aux arguments dj prsents, ou crer un nouvel argument. M cre un argument ngatif.
universalargument
Chaque fois que cette commande est excute, le compteur darguments est multipli par 4. Ce
compteur est initialement 1, aussi en excutant la fonction une fois il passera 4. Par dfaut cette
commande nest affecte aucune touche.
Compltion
complete (TAB)
Essayer deffectuer une compltion du texte situ avant le curseur. Bash effectue la compltion en
considrant successivement le texte comme une variable (sil commence par $), un nom dutilisateur (sil commence par ), un nom dhte (sil commence par @), ou une commande (y compris
les alias et les fonctions). Si rien ne fonctionne, il essaye la compltion en nom de fichier.
possiblecompletions (M-?)
Affiche la liste des compltions possibles pour le texte situ avant le curseur.
insertcompletions
Insrer lensemble des compltions du texte situ avant le curseur. Par dfaut cette commande
nest affecte aucune touche.
completefilename (M/)
Essayer la compltion des noms de fichiers sur le texte situ avant le curseur.
possiblefilenamecompletions (Cx /)
Affiche la liste des compltions possibles en noms de fichiers pour le texte situ avant le curseur.
completeusername (M)
Essayer la compltion des noms dutilisateurs sur le texte situ avant le curseur.
possibleusernamecompletions (Cx )
Affiche la liste des compltions possibles en noms dutilisateurs pour le texte situ avant le
curseur.
completevariable (M$)
Essayer la compltion des noms de variables shell sur le texte situ avant le curseur.
possiblevariablecompletions (Cx $)
Affiche la liste des compltions possibles en noms de variables shell pour le texte situ avant le
curseur.
completehostname (M@)
Essayer la compltion des noms dhtes sur le texte situ avant le curseur.
possiblehostnamecompletions (Cx @)
Affiche la liste des compltions possibles en noms dhtes pour le texte situ avant le curseur.
completecommand (M!)
Essayer la compltion des commandes sur le texte situ avant le curseur. La compltion des commandes inclut les alias, les mots rservs, les fonctions shell, les fonctions internes, et finalement
les excutables, dans cet ordre.
possiblecommandcompletions (Cx !)
Affiche la liste des compltions possibles en noms de commandes pour le texte situ avant le
curseur.

FSF

2 Octobre 1997

95

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

dynamiccompletehistory (M-TAB)
Essayer la compltion du texte situ avant le curseur, en recherchant dans la liste dhistorique.
completeintobraces (M{)
Affiche la liste des compltions possibles en noms de fichiers pour le texte situ avant le curseur,
en renvoyant la liste entre accolades, afin quelle soit utilisable par le shell (voir le paragraphe
Expansion des Accolades plus haut).
Macros Claviers
startkbdmacro (C-x ()
Dmarre la mmorisation dans la macro en cours des caractres taps.
endkbdmacro (C-x ))
Arrte la mmorisation dans la macro en cours des caractres taps, et sauvegarde la dfinition.
calllastkbdmacro (C-x e)
R-excute la derniere macro dfinie, en agissant comme si les caractres contenus dans cette
macro taient taps au clavier.
Divers
rereadinitfile (Cx Cr)
Lire le contenu du fichier dinitialisation personnalise, en incorporant les assignations de variables, ou les affectations de touches qui sy trouvent.
abort (Cg)
Abandonner ldition en cours et dclencher lavertisseur sonore (soumis la configuration de la
variable bellstyle).
douppercaseversion (Ma, Mb, ...)
Excuter la commande correspondant aux caractres majuscules indiqus.
prefixmeta (ESC)
Considrer le prochain caractre tap comme une squence Meta. ESC f est quivalent Metaf.
undo (C_, Cx Cu)
Fonction dannulation incrmentale, chaque ligne tant mmorise sparement.
revertline (Mr)
Annuler toutes les modifications sur cette ligne. Ceci est quivalent rpter commande undo en
nombre suffisant pour ramener la ligne son tat initial.
tildeexpand (M)
Effectuer le dveloppement du tilde sur le mot en cours.
dumpfunctions
Afficher toutes les fonctions et leurs assignations de touches sur le flux de sortie de readline. Si un
argument numrique est prsent, la sortie est mise en forme pour tre compatible avec le format
dun fichier inputrc.
displayshellversion (Cx Cv)
Afficher des informations sur la version de bash en cours dexcution.

HISTORIQUE

En mode interactif, linterprteur donne accs un historique des commandes, cest dire la liste des commandes prcdemment utilises. Le texte des HISTSIZE dernires commandes (par dfaut 500) est
mmoris dans lhistorique. Le shell les enregistre avant expansion des paramtres et variables (voir le
paragraphe EXPANSION plus haut) mais aprs avoir effectu lexpansion historique, sous contrle des variables command_oriented_history et HISTCONTROL. Au dmarrage, lhistorique est initialis avec le
fichier dont le nom est contenu dans la variable HISTFILE (par dfaut /.bash_history). HISTFILE est
tronqu si ncessaire, pour ne pas dpasser HISTFILESIZE lignes. La commande interne fc (voir le paragraphe COMMANDES INTERNES DU SHELL plus bas) permet dafficher, dditer, ou de r-excuter une
partie de lhistorique. La commande interne history permet dafficher lhistorique et de manipuler le
fichier dhistorique. Quelque soit le mode ddition en ligne de commande, des commandes de recherche
sont disponibles pour accder lhistorique. Lorsquun shell interactif se termine, les HISTSIZE dernires
lignes de lhistorique sont copies dans le fichier HISTFILE. Si la variable HISTFILE nexiste pas, ou si le
fichier nest pas accessible en criture, lhistorique nest pas enregistr.

96

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

EXPANSION DE LHISTORIQUE

Le shell propose des possibilits dexpansion de lhistorique qui sont semblables celles de csh. Ce paragraphe dcrit la syntaxe de ces commandes. Elles sont utilisables par dfaut dans les shells interactifs, il est
toutefois possible de les dsactiver en utilisant loption +H de la commande interne set (voir le paragraphe
COMMANDES INTERNES DU SHELL plus bas). Les shells non-interactifs neffectuent pas dexpansion
dhistorique.

Le dveloppement de lhistorique est fait immdiatement aprs la lecture dune ligne complte, avant que le
shell ne fasse la sparation des mots. Il se droule en deux parties. La premire consiste dterminer la
ligne de lhistorique utiliser pour les substitutions, la seconde permet de slectionner les parties de la
lignes inclure dans la nouvelle ligne. La ligne slectionne dans lhistorique est lvnement, et les parties de cette ligne rutiliser sont des mots. La ligne est dcoupe en mots de la mme manire que lors
dune saisie, ainsi plusieurs mots spars par des mta-caractres, et protgs par des guillemets sont considrs comme un unique mot. Seul le backslash (\) et les apostrophes permettent de protger le caractre
dchappement de lhistorique, par dfaut !.
Le shell offre le contrle des divers caractres utiliss par le mcanisme dexpansion de lhistorique (voir la
description de histchars plus haut dans le paragraphe Variables du Shell).
Indicateur dvnement
Un indicateur dvnement est une rfrence une ligne de commande dans la liste dhistorique.
!
Dbute une substitution de lhistorique, sauf sil est suivi par un blanc, retour-chariot, = ou (.
!!
Est une rfrence la commande prcdente. Cest un synonyme de !1.
!n
Se rfre la ligne de commande n.
!n
Se rfre la ligne de commande actuelle moins n.
!chane Rfrence la plus rcente commande commenant par la chane.
!?chane[?]
Se rfre la plus rcente commande contenant la chane.
chane_1

chane_2
Substitution rapide. Rpter la dernire commande en remplaant la chane_1 par la chane_2.
Equivalent !!:s/chane_1/chane_2/ (voir Modificateurs plus bas).
!#
La ligne entire tape jusqu prsent.
Indicateurs de mots
Un : spare lindicateur dvnements de lindicateur de mot. On peut lomettre si lindicateur de mot commence par , $, *, ou %. Les mots sont numrots depuis le dbut de la ligne, le premier tant note 0
(zro).
0 (zro)
n

$
%
xy
*
x*
x

Le zro-ime mot. Pour le shell, cest le nom de la commande.


Le n-ime mot.
Le premier argument, cest dire le mot 1.
Le dernier argument.
Le mot ayant t mis en correspondance lors de la dernire recherche ?chane?.
Un intervalle de mots, y permet dabrger 0y.
Tous les mots sauf le zro-ime. Cest un synonyme pour 1$. Mme sil ny a quun mot, * ne
dclenche pas derreur, simplement la chane vide est renvoye.
Abrviation de x$.
Abrviation de x$ comme x*, mais sans le dernier mot.

Modificateurs
Aprs lventuel indicateur de mot, vous pouvez ajouter une squence de modificateurs, chacun prcd par
un :.
h
r
e

FSF

Elimine la fin du chemin daccs, ne laissant que son dbut.


Supprime un suffixe final de la forme .xxx, en ne laissant que le nom de base.
Tout supprimer sauf le suffixe final.

2 Octobre 1997

97

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

t
p
q
x

Supprimer tout les composants initiaux dun chemin daccs, en ne laissant que la fin.
Afficher la nouvelle commande sans lexcuter.
Protger les mots substitus, pour viter les substitutions futures.
Protger les mots substitus, comme avec q, mais en faisant la sparation des mots sur les blancs
et les retour-chariots.
s/ancien/nouveau/
Remplacer par nouveau la premire occurence de ancien sur la ligne dvnement. Nimporte
quel dlimiteur peut tre utilis la place de /. Le dernier dlimiteur est facultatif si cest le
dernier caractre de la ligne dvnement. Le dlimiteur peut tre protg dans ancien et nouveau
par un simple backslash. Si & apparat dans nouveau, il est remplac par ancien. Un simple backslash protgera le &.
&
Rpter la substitution prcdente.
g
Appliquer les changements sur la ligne dvnement entire. On utilise ceci conjointement :s
(par exemple :gs/ancien/nouveau/) ou :&. Sil est utilis avec :s, nimporte quel dlimiteur
peut tre utilis la place de /, et le dernier dlimiteur est facultatif si cest le dernier caractre de
la ligne dvnement.

CALCUL ARITHMTIQUE

Le shell permet, dans certaines circonstances, lvaluation dexpression arithmtique (voir la commande
interne let ainsi que le paragraphe valuation Arithmtique). Lvaluation est effectue en utilisant des
entiers longs, sans vrification du dbordement. Nanmoins la division par 0 est dtecte et renvoie une
erreur. La liste des oprateurs ci-dessous est constitue par des groupes de prcdence identique. Les
niveaux sont classs en ordre de prcdence dcroissante.

-+
plus et moins unaire
!
ngations logique et binaire
* / % multiplication, division, reste
+
addition, soustraction
<< >> dcalage arithmtique gauche et droite
<= >= < >
comparaisons
== != galite et diffrence
&
ET binaire

OU exclusif binaire
|
OU binaire
&&
ET logique
||
OU logique
= *= /= %= += = <<= >>= &= = |=
assignations
On peut utiliser les variables du shell comme oprandes, le dveloppement des paramtres tant effectu
avant lvaluation arithmtique. Les valeurs des paramtres sont converties en entiers longs dans les
expressions. Une variable shell na donc pas besoin davoir lattribut "entier" pour tre utilisable dans un
calcul.
Les constantes commenant par un 0 sont interprtes comme des nombres octaux. Un entte 0x ou 0X
indique une valeur hxadcimale. Sinon, les nombres ont la forme [base#]n, ou la base arithmtique est un
nombre dcimal entre 2 et 36, et n le nombre lui-mme exprim dans cette base. Si la base nest pas mentionne, le nombre est considr comme dcimal.
Les oprateurs sont valus dans lordre de prcdence. Les sous-expressions entre parenthses sont
values en premier, ce qui permet de surpasser les rgles de prcdence.

COMMANDES INTERNES DU SHELL

: [arguments]
Pas deffet. Cette commande ne fait rien dautre que lexpansion des arguments et la mise en place
des redirections. Le code de retour est nul.

98

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

. fichier [arguments]
source fichier [arguments]
Lire et excuter les commandes contenues dans le fichier avec lenvironnement du shell en cours,
puis renvoyer le code de retour de la dernire commande excute dans le fichier. Si le nom du
fichier ne contient pas de slash, on utilise les chemins daccs contenus dans la variable PATH
pour rechercher le rpertoire contenant le fichier. Lorsquil est recherch dans le PATH le fichier
na pas besoin dtre excutable. Le rpertoire de travail en cours est finalement examin si aucun
fichier nest trouv dans le PATH. Si des arguments sont fournis, ils sont transmis dans les
paramtres positionnels lorsque le fichier est excut. Sinon les paramtres positionnel ne sont pas
modifis. Le code de retour est celui de la dernire commande excute au sein du script (0 si
aucune commande nest excute), et faux si le fichier nest pas trouv.
alias [nom[=valeur] ...]
La commande alias, sans argument, affiche sur la sortie standard la liste des alias actuellement
dfinis, sous la forme nom=valeur. Lorsque lon fournit des arguments, un alias est cr pour
chaque nom auquel on a donn une valeur. Un espace final dans une valeur forcera la recherche
dalias dans le mot suivant lors de lexpansion de lalias. Pour chacun des noms pour lesquels
aucune valeur nest fournie dans la liste darguments, le nom et la valeur de lalias sont affichs.
La commande Alias renvoie vrai, sauf si lon indique un nom pour lequel aucun alias na t
dfini.
bg [job]

Bascule le job en arrire-plan, comme sil avait t lanc avec &. Si aucun job nest prcis, le job
en cours est bascul en arrire-plan. bg job renvoie 0 si le contrle des jobs est dsactiv, ou si le
job nexiste pas, ou encore sil a t lanc sans contrle de jobs.

bind [m jeu_de_touches] [lvd] [-q nom]


bind [m jeu_de_touches] -f fichier
bind [m jeu_de_touches] sequence:fonction
Affiche les affectations de touches readline pour une fonction, ou affecte une squence de touches
une fonction ou une macro readline. La syntaxe daffectation est identique celle des fichiers
.inputrc, mais chaque affectation doit tre fournie sous forme dargument indpendant, par exemple "\C-x\C-r": rereadinitfile. Les ventuelles options ont les significations suivantes :
m jeu_de_touches
Modifier la configuration du jeu_de_touches indiqu. Les noms des jeux_de_touches
accepts sont emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command,
et vi-insert. vi est quivalent vi-command; emacs est quivalent emacs-standard.
l
Afficher la liste des noms de toutes les fonctions readline
v
Afficher les affectations actuelles
d
Afficher les fonctions et les affectations de manire pouvoir les rutiliser
f fichier
Lire les affectations dans le fichier
q fonction
Rechercher la touche permettant dinvoquer la fonction indique
La valeur de retour est nulle, sauf si une option invalide est fournie, ou si une erreur se produit.
break [n]
Sortir dune boucle for, while, ou until. Si n est fourni, sortir de n niveaux de boucles. n doit tre
1. Si n est suprieur au nombre de boucles imbriques, on sort de lensemble dentre elles. La
valeur de retour est nulle, sauf si le shell nexcute pas de boucle lorsque le break est atteint.
builtin commande_interne [arguments]
Excuter la commande interne du shell indique, en lui passant les arguments, puis renvoyer son
code de retour. Ceci est utile lorsque lon veut dfinir une fonction ayant le mme nom quune
commande interne, mais que lon a besoin dinvoquer cette commande depuis lintrieur de la
fonction. On redfinit souvent la commande interne cd ainsi. Le code de retour est faux si la commande_interne nexiste pas.

FSF

2 Octobre 1997

99

BASH(1)
cd [rep]

Manuel de lutilisateur Linux

BASH(1)

Remplacer le rpertoire de travail en cours par rep. La variable HOME est la valeur par dfaut de
rep. La variable CDPATH dfinit des chemins de recherche pour trouver le rpertoire contenant
rep. Les rpertoires possibles y sont fournis dans une liste spares par des doubles-points (:). Un
nom de rpertoire nul dans CDPATH est quivalent au rpertoire en cours, cest dire .. Si rep
coommence par un slash (/), alors CDPATH nest pas utilis. Un argument est quivalent
$OLDPWD. La valeur de retour est vraie si lon a pu changer le rpertoire de travail, et fausse
sinon.

command [-pVv] commande [arguments ...]


Lancer la commande avec les arguments indiqus, mais en simplifiant le processus habituel de
recherche des commandes. Seules les commandes internes, et les commandes disque trouves
dans le PATH seront excutes. Si loption p est fournie, la recherche utilisera une valeur par
dfaut du PATH garantissant de trouver tous les utilitaires standards. Si loption V ou loption
v sont fournies, une description de la commande est affiche. Loption v naffiche quun simple
mot indiquant la commande interne, ou le chemin daccs utilis pour invoquer la commande.
Loption V fournit une description plus volubile. Un argument arrte la recherche doptions
dans la suite des arguments. Si les options V ou v sont fournies, le code de retour est 0 si la
commande est trouve, et 1 sinon. Si aucune option nest fournie, et si une erreur se produit, ou si
la commande est introuvable, le code de retour est 127. Sinon, le code de retour de cette commande interne est celui de la commande invoque.
continue [n]
Reprendre lexcution litration suivante dune boucle for, while, ou until. Si n est indiqu,
reprendre lexcution la n-ime boucle imbrique. n doit tre 1. Si n est suprieur au nombre
de boucles imbriques, lexcution reprend la boucle la plus externe (toplevel). La valeur de
retour est 0 sauf si le shell nexcutait pas de boucle quand il a rencontr linstruction continue.
declare [frxi] [nom[=valeur]]
typeset [frxi] [nom[=valeur]]
Dclarer des variables et/ou leur fournir des attributs. Si aucun nom nest mentionn, les valeurs
des variables sont affiches. Les options permettent de restreindre laffichage aux variables dotes
de certains attributs.
f
Seulement les noms de fonctions
r
Rend les noms accessibles en lecture seulement. On ne pourra plus modifier les valeurs de
ces noms lors dassignations ultrieures.
x
Marquer le noms pour quil soit export dans lenvironnement des commandes suivantes.
i
La variable est traite comme un entier. Lvaluation arithmtique (voir plus haut le paragraphe EVALUATION ARITHMTIQUE ) est effectue lorsque la variable reoit une
valeur.
En utilisant + a la place de , lattribut correspondant est dsactiv. Dans une fonction, le nom
devient local, comme avec la commande local. La valeur de retour est 0 sauf si une option illgale
est rencontre, si on essaye de dfinir une fonction en utilisant "-f foo=bar", si lun des noms nest
pas un nom lgal pour le shell, si on essaye de supprimer lattribut lecture-seule dune variable, ou
si on essaye dafficher avec -f une fonction inexistante.
dirs [-l] [+/n]
Affiche la liste des rpertoires actuellement mmoriss. On ajoute des rpertoires dans cette liste
avec la commande pushd, on revient en arrire avec la commande popd.
+n
affiche le n-ime lment de la liste fournie par dirs sans options, en comptant partir de
la gauche en commenant zero.
n
affiche le n-ime lment de la liste fournie par dirs sans options, en comptant partir de
la droite en commenant zero.
l
affiche une liste longue, le format par dfaut utilisant le tilde pour reprsenter le rpertoire personnel.
La valeur de retour est 0 sauf si une option illgale a t trouve, ou si lindex n dpasse la

100

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

longueur de la pile des rpertoires.


echo [neE] [arguments ...]
Affiche ses argumentss, spars par des espaces. La valeur de retour est toujours nulle. Avec
loption n, le retour-chariot final est supprim. Avec loption e linterprtation des squences
dchappement est active. Loption E dsactive linterprtation des squences dchappement,
mme sur les systmes o elles sont interprtes par dfaut.
\a
alerte (avertisseur sonore)
\b
backspace
\c
suppression du retour-chariot final
\f
saut de page
\n
nouvelle ligne
\r
retour-chariot
\t
tabulation horizontale
\v
tabulation verticale
\\
backslash
\nnn
le caractre dont le code ASCII vaut nnn (en octal)
enable [n] [all] [nom ...]
Active ou inhibe les commandes internes du shell. Ceci permet dexcuter une commande disque
ayant le mme nom quune commande interne du shell, sans avoir besoin dindiquer le chemin
daccs complet. Avec loption n, chaque nom indiqu est inhib, sinon ils sont activs. Par
exemple, pour utiliser le programme binaire test qui se trouve dans le PATH plutt que la commande interne, utilisez enable -n test. Si aucun argument nest fourni, la liste des commandes
internes actives est affiche. Si seule loption n est fournie, la liste des commandes internes
inhibes est affiche. Si seule loption all est fournie, la liste de toutes les commandes internes
est affiche, avec pour chacune lindication de lactivation ou inhibition. enable accepte a
comme synonyme de all. La valeur de retour est 0, sauf si nom nest pas une commande interne.
eval [arguments ...]
Les arguments sont lus et regroups en une seule commande simple. Cette commande est alors lue
et excute par le shell, et son code de retour est renvoye comme valeur de la commande eval.
Sil ny a pas darguments, ou uniquement des arguments nuls, eval renvoie vrai.
exec [[] commande [arguments]]
Si une commande est indique, elle remplace le shell. Aucun nouveau processus nest cr. Les
arguments deviennent ceux de la commande. Si le premier argument est -, linterprteur place un
tiret en guise de zro-ime argument fourni a la commande. Cest ce que fait login. Si le fichier ne
peut pas tre excut, quelque soit la raison, un shell non-interactif se termine, sauf si la variable
no_exit_on_failed_exec existe, auquel cas une erreur est renvoye. Un shell interactif rapporte
lerreur si le fichier ne peut pas etre excut. Si aucune commande nest indique, les ventuelles
redirections sont mises en place dans le shell en cours, et le code de retour est 0.
exit [n] Termine le shell avec le code de retour n. Si n est omis, le code de retour sera celui de la dernire
commande excute. Un ventuel gestionnaire install sur EXIT (voir la commande interne trap
plus bas) sera excut avant la fin du shell.
export [nf] [nom[=mot]] ...
export p
Les noms indiqus sont marqus pour tre exports automatiquement dans lenvironnement des
commandes excutes par la suite. Si loption f est fournie, les noms sont ceux de fonctions. Si
aucun nom nest mentionn, ou si loption p est fournie, une liste est affiche indiquant lensemble des noms exportables par ce shell. Loption n supprime lattribut dexportation des variables
mentionnes. Un argument arrte la recherche doptions dans la suite des arguments. export
renvoie un code de retour nul, sauf si une option illgale est rencontre, ou si lun des noms nest
pas un nom de variable lgal, ou si loption f est fournie avec un nom qui ne soit pas une fonction.

FSF

2 Octobre 1997

101

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

fc [e diteur] [nlr] [premire] [dernire]


fc s [motif=nouveau] [commande]
(Fix Command). Avec la premire forme indique ci-dessus, un intervalle de commandes, entre la
premire et la dernire, est slectionn dans la liste dhistorique. La premire et la dernire peuvent tre indiques sous forme de chanes (la dernire commande commenant par la chane
indique), ou sous forme numrique (un index dans la liste dhistorique, ou un nombre ngatif
indiquant un dcalage par rapport la position actuelle dans cette liste). Si la dernire nest pas
indique, on considre quil sagit de la commande en cours si lon veut afficher la liste (ainsi fc l
10 affiche les 10 derniere commandes), et quil sagit de la mme que la premire sinon. Si la
premire nest pas indique, on considere quil sagit de la commande prcdente pour une
dition, et de la commande 16 pour laffichage de liste.
Loption n supprime laffichage des numros dans la liste. Loption r inverse lordre des commandes Avec loption l les commandes sont affiches sur la sortie standard. Sinon, lditeur est
invoqu avec un fichier contenant les commandes slectionnes. Si aucun diteur nest prcis, on
utilise la valeur de la variable FCEDIT, ou la valeur de EDITOR si FCEDIT nexiste pas. Si aucune
variable nexiste, vi est invoqu. Lorsque ldition se termine, les commandes sont affiches puis
excutes.
Dans la seconde forme, la commande est r-excute apres avoir remplac chaque instance du
motif par nouveau. Un alias utile pour ceci est r=fc s, ainsi en tapant r cc on relance la
dernire commande commenant par cc, et en tapant r on r-excute la commande
prcdente.
Lorsque la premire forme est utilise, la valeur renvoye est 0, sauf si une option illgale est
trouve, ou si premire ou dernire indiquent des lignes dhistorique inexistantes. Avec loption
e, la valeur de retour est celle de la dernire commande excute, ou un chec si une erreur sest
produite avec le fichier temporaire des commandes. Avec la seconde forme, le code de retour est
celui de la commande r-excute, moins que commande ne soit pas une ligne valide de lhistorique, auquel cas fc renvoie un chec.
fg [job] Placer le job en avant-plan, et en faire le job en cours. Si aucun job nest mentionn, le shell considrera quil faut ramener le job en cours en avant-plan. La valeur de retour est celle de la commande place en avant-plan, ou un chec si le contrle des jobs nest pas actif, ou encore si le job
nexiste pas ou a t lanc sans contrle des jobs.
getopts chane_d_options nom [arguments]
getopts est utilise par les procdures shell pour analyser les paramtres positionnels. La
chane_d_options contient lensemble des lettres doptions reconnatre. Si une lettre est suivie
par un double-point (:), loption est cense comprendre un argument, qui peut en tre spar par un
espace. A chaque invocation, getopts place loption suivante dans la variable shell dont le nom est
fourni, en la crant si elle nexiste pas. Il place galement lindex de largument suivant analyser
dans la variable OPTIND. OPTIND est initialis 1 chaque lancement dun shell ou dun script.
Quand une option ncessite un argument, getopts place celui-ci dans la variable OPTARG. Le
shell ne rinitialise pas OPTIND automatiquement, il faut le faire manuellement si des appels multiples getopts au sein du mme shell utilisent des ensembles diffrents de paramtres.
getopts peut renvoyer des erreurs de deux manires. Si le premier caractre de la
chane_d_options est un double point, les erreurs sont renvoyes de manire silencieuse. Lors
dun fonctionnement normal, des messages de diagnostique sont affichs si une option est illgale,
ou sil manque un argument doption. Si la variable OPTERR vaut 0, aucun message derreur ne
sera affich, mme si le premier caractre de la chane_d_options nest pas un double-point.
Si une option illgale est rencontre, getopts met un point dinterrogation ? dans la variable nom,
affiche un message derreur (sil nest pas en mode silencieux), et dtruit la variable OPTARG. En
mode silencieux, getopts le caractre doption est plac dans OPTARG et aucun message de

102

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

diagnostique nest affich.


Lorsquun argument doption est manquant, et si getopts nest pas silencieux, un point dinterrogation (?) est plac dans la variable nom, OPTARG est dtruit, et un message de diagnostique est
affich. Si getopts est silencieux, un double-point (:) est plac dans la variable nom et OPTARG
est rempli avec le caractre doption trouv.
getopts est normalement utilis pour analyser les paramtres positionnels, mais il analysera
dventuels arguments supplmentaires. getopts renvoie la valeur Vrai si une option, prvue ou
imprvue, est trouve. Il renvoie Faux si la fin des options est atteinte, ou si une erreur se produit.
hash [r] [nom]
Pour chaque nom fourni, le chemin daccs complet de la commande est dtermin, et mmoris.
Loption r force le shell oublier tous les emplacements mmoriss. Sans arguments, hash
affiche des informations sur les commandes mmorises. Un argument arrte la recherche
doptions dans la suite des arguments. La valeur de retour est Vrai, sauf si nom nest pas trouv,
ou si une option est illgale.
help [motif]
Affiche des informations daide au sujet des commandes internes. Si un motif est indiqu, help
fournit de laide sur toutes les commandes correspondant ce motif , sinon, une liste des commandes internes est affiche. Le code de retour est 0, sauf si aucune commande ne peut correspondre
au motif .
history [n]
history rwan [fichier]
Sans options, affiche la liste des commandes de lhistorique, avec des numros de ligne. Les lignes
marques avec un astrisque * ont t modifies. Un argument n permet de ne lister que les n
dernires lignes. Si un argument est fourni, il est utilis comme nom de fichier historique, sinon on
utilise la valeur de la variable HISTFILE. Les options ont les significations suivantes :
a
Ajouter les nouvelles lignes dhistoriques (celles cres depuis le dbut de la session
actuelle de bash) dans le fichier.
n
Lire dans le fichier, et ajouter la liste dhistorique, les lignes non encore lues. Il sagit
des lignes qui ont t ajoutes dans le fichier depuis le dbut de la session actuelle de
bash.
r
Lire le contenu du fichier, et lutiliser comme historique courant.
w
Ecrire dans le fichier lhistorique actuel, en crasant le contenu precedent.
La valeur de retour est 0, sauf si une option illgale est fournie, ou si une erreur se produit durant
la lecture ou lcriture du fichier.
jobs [lnp] [ job ... ]
jobs x commande [ arguments ... ]
La premire forme affiche la liste de jobs actifs. Loption l affiche les PIDs, en plus des informations normales. Loption p naffiche que le PID du leader du groupe de processus du job.
Loption n naffiche que les jobs dont le statut a vari depuis le dernier affichage. Si une spcification de job est fournie, laffichage ne comporte que les informations propos de ce job. Le code
de retour est 0, moins quune option illgale soit transmise, ou que le job nexiste pas.
Avec loption x, jobs va remplacer toutes les spcifications de jobs rencontres dans la commande ou dans ses arguments avec les Process Group ID correspondant, puis il excutera la commande en lui transmettant les arguments, et en renvoyant son code de retour.
kill [-s sigspec | sigspec] [pid | job] ...
kill l [signum]
Envoyer le signal indiqu par sigspec aux processus spcifis par pid ou par jobspec. On peut
fournir sigspec sous forme numrique, ou sous forme de nom de signal, comme SIGKILL. Si
sigspec est un nom de signal, il ny a pas de diffrenciation majuscules/minuscules, et le prfixe

FSF

2 Octobre 1997

103

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

SIG est facultatif. Sil ny a pas dindication de sigspec, le signal envoy est SIGTERM. Un argument l fournit la liste des noms de signaux. Sil y a des arguments avec loption l, les noms des
signaux indiqus sont affichs, et le code de retour est nul. Un argument arrte la recherche
doptions dans la suite des arguments. kill renvoie Vrai si au moins un signal a t envoy, ou
Faux si une erreur sest produite, ou si une option illgale a t trouve.

let argument [argument ...]


Chaque argument est une expression arithmtique evaluer (voir plus haut le paragraphe EVALUATION ARITHMTIQUE). Si lvaluation du dernier argument donne 0, let renvoie 1, sinon elle
renvoie 0.
local [nom[=valeur] ...]
Pour chaque argument, on cre une variable locale ayant le nom indiqu, et laquelle on affecte la
valeur fournie. Quand local est utilise dans une fonction, le nom de la variable nest visible que
dans la fonction, et ses descendantes. Sans oprandes, local affiche la liste des variables locales
sur la sortie standard. Il ne faut pas utiliser local en dehors des fonctions. La valeur de retour est 0,
sauf si local est invoqu en dehors dune fonction, ou si un nom illgal est fourni.
logout Quitter un shell de login.
popd [+/n]
Enlve des lments de la pile des rpertoires. Sans arguments, seul le rpertoire du sommet de la
pile est limin, et un cd est effectu en direction du nouveau rpertoire au sommet.
+n
supprime le n-ime lment de la liste affiche par dirs, en comptant depuis la gauche
partir de 0. Par exemple : popd +0 enlve le premier rpertoire, popd +1 le second.
n
supprime le n-ime lment de la liste affiche par dirs, en comptant depuis la droite
partir de 0. Par exemple: popd -0 supprimer le dernier rpertoire, et popd -1
lavant-dernier.
Si la commande popd russit, un dirs est effectu, et le code de retour est nul. popd renvoie Faux
si une option illgale est trouve, si la pile de rpertoires est vide, si on a indiqu un rpertoire
absent de la pile, ou si le changement de rpertoire a chou.
pushd [rep]
pushd +/n
Ajoute un rpertoire au sommet de la pile des rpertoires, ou effectue une rotation dans la pile, en
ramenant le rpertoire en cours au sommet. Sans argument, cette commande change les deux
rpertoires au sommet, et renvoie 0, sauf si la pile est vide.
+n
Effectue une rotation dans la pile, de manire amener au sommet le n-ime rpertoire de
la liste affiche par dirs (en comptant partir de la gauche).
n
Effectue une rotation dans la pile, de manire amener au sommet le n-ime rpertoire de
la liste affiche par dirs (en comptant partir de la droite).
rep
Ajoute le rpertoire rep au sommet de la pile, et en fait le nouveau rpertoire de travail.
Si la commande pushd russit, elle effectue un dirs. Si on utilise la premire forme, pushd renvoie 0 sauf si le dplacement vers rep choue. Avec la seconde forme, pushd renvoie 0 sauf si la
pile est vide, si on a rclam un lment inexistant de la pile, ou si le changement de rpertoire a
chou.
pwd

Affiche le chemin daccs complet au rpertoire de travail actuel. Si loption P de la commande


interne set est active, le chemin affiche ne contiendra pas de liens symboliques. (Voir galement
une description de nolinks dans le paragraphe Variables du Shell plus haut). Le code de retour est
nul, sauf si une erreur sest produite durant la lecture du chemin daccs au rpertoire courant.

read [r] [nom ...]


Une ligne est lue depuis lentre standard, puis le premier mot de cette ligne est affect au premier
nom, le second mot au second nom, et ainsi de suite. Les mots restants sont affects au dernier
nom. Seul les caractres contenus dans la variables IFS sont utiliss comme dlimiteurs de mots.
Si aucun nom nest fourni, la ligne lue est affecte entirement la variable REPLY. Le code de
retour est nul, sauf si une fin-de-fichier est rencontre. Avec loption r, une paire de caractres

104

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

backslash/retour-chariot nest pas ignore, et le backslash est considr comme faisant partie de la
ligne.
readonly [f] [nom ...]
readonly -p
Les noms indiqus reoivent un attribut lecture-seule, et ces noms ne pourront pas tre modifis
par des affectations ultrieures. Avec loption f, on considre les fonctions correspondant ces
noms. Si aucun argument nest fourni, ou si loption p est utilise, on affiche la liste des noms en
lecture-seule. Un argument arrte la recherche doptions dans la suite des arguments. Le code
de retour est nul, sauf si une option illgale a t trouve, si lun des noms nest pas un nom lgal
de variables shell, ou si loption f est fournie avec un nom qui ne soit pas une fonction.
return [n]
La fonction shell en cours dexcution se termine en renvoyant la valeur n. Si n est omis, la valeur
renvoye est celle de la dernire commande excute dans le corps de la fonction. Si cette commande est excute en dehors dune fonction, mais durant lexcution dun script avec la commande . (source) ce script sarrte, et la valeur renvoye est n ou celle de la derniere commande
excute. Si elle est utilise en dehors dune fonction ou dun script excut par ., le code retour
est Faux.
set [abefhkmnptuvxldCHP] [-o option] [argument ...]
a
Marquage automatique des variables modifies ou cres pour quelles soient exportes
dans lenvironnement des commandes excutes ultrieurement.
b
Affichage immdiat des statuts des jobs en arrire-plan qui se terminent, plutot que
dattendre laffichage du prochain symbole daccueil principal (Voir galement notify
dans le paragraphe Variables du Shell plus haut).
e
Sortie immdiate lorsquune commande simple (voir GRAMMAIRE DU SHELL plus
haut) se termine avec un code non nul. Le shell ne se termine pas si la commande
choue dans une boucle until ou while, dans un test if , dans une liste && ou , ou si le
code de retour est invers par !.
f
Dsactivation du dveloppement des noms de fichiers.
h
Localisation et mmorisation des commandes dans les fonctions au moment de la dfinition des fonctions. Ces commandes sont normalement recherches au moment de
lexcution de la fonction.
k
Tous les arguments sont placs dans lenvironnement des commandes, pas uniquement
ceux saisis avant le nom de la commande.
m
Mode supervision. Activation du contrle des jobs. Ce mode est actif par defaut pour les
shells interactifs qui le supportent (voir le paragraphe CONTRLE DES JOBS plus
haut). Les processus en arrire-plan sont excuts dans des groupes de processus
spars, et une ligne indiquant leur statuts est affiche lorsquils se terminent.
n
Lecture de commandes sans excution. Ceci peut tre utilis pour rechercher les erreurs
de syntaxe dans un script. Ce drapeau est ignor par les shells interactifs.
o nom__d_option
Le nom_d_option est lun des suivants :
allexport
Identique a.
braceexpand
Le shell effectue le dveloppement des accolades (voir le paragraphe
Dveloppement des Accolades plus haut). Cest le comportement par dfaut.
emacs Utiliser une interface " la emacs" pour les lignes de commande. Cest le comportement par dfaut pour un shell interactif, sauf sil est lance avec loption
nolineediting.
errexit Identique e.
histexpand
Identique H.

FSF

2 Octobre 1997

105

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

ignoreeof

t
u
v
x
l
d
C
H
P

106

Identique lexcution dune commande shell IGNOREEOF=10. (voir le


paragraphe Variables du Shell plus haut)
interactivecomments
Autoriser les commentaires dans les shells interactifs, en ignorant tout ce qui
se trouve la suite dun mot commenant par #. (voir le paragraphe COMMENTAIRES plus haut).
monitor Identique m.
noclobber
Identique C.
noexec Identique n.
noglob Identique f.
nohash Identique d.
notify Identique b.
nounset Identique u.
physical Identique P.
posix
Modifier le comportement de bash, lorsque les oprations par dfaut sloigne
de Posix 1003.2 afin dtre conforme au standard.
privileged
Identique p.
verbose Identique v.
vi
Utiliser une interface ddition des lignes de commande " la vi".
xtrace Identique x.
Si aucun nom_d_option nest fourni, les valeurs actuelles de lensemble des options sont
affiches.
Basculer en mode privilgi. Dans ce mode, le fichier $ENV nest pas trait, et les
fonctions shells ne sont pas hrites depuis lenvironnement. Ce comportement est
automatiquement dclench quand lUID (ou GID) effectif nest pas gal lUID
(respectivement GID) rel. En dsactivant cette option, les UID et GID effectifs sont
automatiquement replacs aux valeurs des UID et GID rels.
Sortie automatique apres lecture et excution dune commande.
Considrer les variables inexistantes comme des erreurs durant lexpansion des
paramtres. Si on tente de dvelopper une variable inexistante, le shell affiche un message derreur, et, sil nest pas interactif, se termine avec un code de retour non-nul.
Affichage des lignes de commandes au fur et mesure de leur lecture.
Aprs lexpansion de chaque commande simple, bash affiche la valeur de PS4, suivie par
la commande et ses arguments dvelopps.
Sauver et restituer ensuite la valeur du nom lors dune commande for nom [in mot] (voir
le paragraphe GRAMMAIRE DU SHELL plus haut).
Dsactivation du stockage dans une table de hachage des commandes excutes. Normalement, les commandes sont mmorisees dans cette table, et bash na ainsi plus
besoin de les chercher nouveau.
Identique lexcution de la commande shell noclobber=. (voir le paragraphe Variables du Shell plus haut).
Autoriser le style ! de substitution historique. Cest le comportement par dfaut lorsque
le shell est interactif.
Ne pas suivre les liens symboliques lors dune commande comme cd qui modifie le
rpertoire de travail. Utiliser la place le rpertoire physique.
Si aucun argument ne suit ce drapeau, alors les paramtres positionnels sont dtruits.
Sinon, les paramtres positionnels sont remplis avec les arguments, mme si certains
dentre eux commencent par un -.
Fin des options. Tous les arguments restants sont affects aux paramtres positionnels.
Les attributs x et v sont dsactivs. Sil ny a pas darguments, les paramtres positionnels ne sont pas modifis.

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

Par dfaut les attributs sont dsactivs, sauf indication contraire. En utilisant + la place de - on
dsactive explicitement un drapeau. Les attributs peuvent galement tre fournis en argument lors
de linvocation du shell. Le jeu de drapeaux actuellement actifs est disponible dans $. Apres la
lecture des options, les n arguments restants sont affects, dans lordre aux paramtres positionnels
$1, $2, ... $n. Si aucune option et aucun argument nest fournis, on affiche la liste des variables
du shell. Le code de retour est toujours Vrai, sauf si une option illgale a t trouve.
shift [n]

Les paramtres positionnels partir de n+1 ... sont renomms en $1 .... Les paramtres
reprsents par les nombres $# jusqu $#n+1 sont supprims. Si n vaut 0, aucun paramtres
nest modifi. Si n est omis, on suppose quil vaut 1. n doit tre un nombre non-ngatif infrieur
ou gal $#. Si n est suprieur $#, les paramtres positionnels ne sont pas modifis. Le code de
retour est suprieur 0 si n est suprieur $# ou infrieur 0. Sinon le code de retour est nul.

suspend [f]
Suspend lexcution du shell jusqu la rception dun signal SIGCONT. Loption f limine le
message derreur sil sagit dun shell de login, et force sa suspension. Le code de retour est nul
sauf si lon utilise un shell de login et si loption f nest pas fournie, ou encore si le mcanisme
de contrle des jobs nest pas disponible.
test expr
[ expr ] Renvoie la valeur 0 (vrai) ou 1 (faux) en fonction de lvaluation de lexpression conditionnelle
expr. Les expressions peuvent tre unaires ou binaires. Les oprations unaires servent gnralement examiner ltat dun fichier. Il existe des oprateurs de comparaison tant sur les chanes que
sur les nombres. Les oprateurs et les oprandes doivent tre des arguments spars. Si un fichier
est de la forme /dev/fd/n, alors on teste le descripteur de fichier n.
b fichier
Vrai si le fichier existe et est un fichier spcial bloc.
c fichier
Vrai si le fichier existe et est un fichier spcial caractre.
d fichier
Vrai si le fichier existe et est un rpertoire
e fichier
Vrai si le fichier existe.
f fichier
Vrai si le fichier existe et est un fichier rgulier.
g fichier
Vrai si le fichier existe et a son bit Set-GID positionn.
k fichier
Vrai si le fichier existe et a son bit sticky positionn.
L fichier
Vrai si le fichier existe et est un lien symbolique.
p fichier
Vrai si le fichier existe et est un tube nomm (FIFO).
r fichier
Vrai si le fichier existe et est accessible en lecture.
s fichier
Vrai si le fichier existe et a une taille non nulle.
S fichier
Vrai si le fichier existe et est une socket
t fd
Vrai si fd est ouvert sur un terminal.
u fichier
Vrai si le fichier existe et a son bit Set-UID positionn.
w fichier
Vrai si le fichier existe et est accessible en criture.

FSF

2 Octobre 1997

107

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

x fichier
Vrai si le fichier existe et est excutable.
O fichier
Vrai si le fichier existe et appartient lID effectif de lutilisateur.
G fichier
Vrai si le fichier existe et appartient lID effectif du groupe de lutilisateur.
fichier_1 nt fichier_2
Vrai si le fichier_1 est plus rcent que (nt=newer than) le fichier_2, daprs les dates de
modification.
fichier_1 ot fichier_2
Vrai si le fichier_1 est plus vieux que (ot = older than) le fichier_2.
fichier_1 ef fichier_2
Vrai si lefichier_1 et le fichier_2 sont sur le mme pripherique et ont les mmes numros
di-noeuds.
z chane
Vrai si la longueur de la chane est nulle.
n chane
chane Vrai si la longueur de la chane est non-nulle.
chane_1 = chane_2
Vrai si les deux chanes sont gales.
chane_1 != chane_2
Vrai si les deux chanes sont diffrentes.
! expression
Vrai si lexpression est fausse.
expression_1 a expression_2
Vrai si lexpression_1 ET lexpression_2 sont toutes deux vraies.
expr1 o expr2
Vrai si lexpression_1 OU lexpression_2 est vraie.
arg1 OP arg2
OP est lun des oprateurs suivants eq, ne, lt, le, gt, ou ge. Ces oprateurs
arithmtiques binaires renvoient la valeur vraie si arg_1 est respectivement gal, diffrent,
infrieur, infrieur ou gal, suprieur, suprieur ou gal arg2. Arg1 et arg2 peuvent tre
des entiers positifs, des entiers ngatifs, ou lexpression spciale l chane, qui value la
longueur de la chane.
times

Affiche les dures cumules utilisateur et systme pour le shell et les processus lancs par ce shell.
Le code de retour est nul.

trap [l] [cmd] [sigspec]


La commande cmd sera lue et excute lorsque le shell recevra lun des signaux sigspec. Si cmd
est absent ou si elle vaut -, tous les signaux indiqus reprennent leurs comportements originaux
(quils avaient au dmarrage du shell). Si cmd est une chane nulle, les signaux seront ignors par
le shell et par les commandes quil invoque. sigspec peut tre spcifi en indiquant des noms de
signaux dfinis dans <signal.h>, ou les numros des signaux. Si sigspec vaut EXIT (0) la commande cmd sera excute au moment de quitter le shell. Sans arguments, trap affiche la liste des
commandes associes chaque numro de signal. Loption l affiche la liste des noms de signaux,
et leurs numros correspondants. Un argument dsactive la recherche doption dans le reste
des arguments. Les signaux ignors lors de linvocation du shell ne peuvent pas tre capturs ni
reprendre leurs comportements par dfaut. Lors de la cration dun processus fils, les signaux capturs reprennent leur comportement par dfaut. Le code de retour est faux si un nom ou un numro
de signal est invalide, sinon trap renvoie une valeur vraie.
type [all] [type | path] nom [nom ...]
sans option, indique comment chaque nom doit tre interprt si on lutilise en nom de commande.
Si lattribut type est utilis, type affiche une des phrases suivantes alias, keyword, function,
builtin, ou file selon que le nom soit un alias, un mot-cl rserv au shell, une fonction, une

108

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

commande interne, ou un fichier sur le disque. Si le nom nest pas trouv, rien nest affich et le
code de retour est faux. Si largument path est utilis, type renvoie le nom du fichier qui sera
excut si lon tape le nom en guise de commande, ou rien si le type nest pas file. Si une commande est disponible dans la table de hachage, path affiche la valeur de cette table, qui nest pas
ncssairement le fichier apparaissant en premier dans le PATH. Si loption all est invoque,
type affiche tous les emplacements contenant un excutable du nom indiqu. Ceci inclut les alias
et les fonctions, sauf si loption path est galement prsente. La table de hachage des commandes nest pas consulte avec loption all. type accepte les raccourcis a, t, et p la place de
all, type, et path, respectivement. Un argument dsactive la recherche doption dans la
suite des arguments. type renvoie vrai si lun des arguments est trouv, et faux si aucun na t
trouv.
ulimit [SHacdfmstpnuv [limite]]
Ulimit fournit, sur les systmes qui le permettent, un mcanisme de controle des ressources
disponibles pour le shell et pour les processus quil lance. La valeur de la limite peut tre un nombre (utilisant les units particulires de la ressources), ou la valeur unlimited. Les options H et S
prcisent si la limite doit tre dure (Hard), ou souple (Soft). Une limite dure ne peut pas tre augmente une fois quelle a t positionne. Une limite souple peut etre augmente jusqu la hauteur de la limite dure correspondante. Par dfaut, les limites fixes sont souples. Si la limite est
omise, on affiche la valeur de la limite souple pour la ressource indique, sauf si loption H est
fournie. Quand plusieurs ressources sont indiques, leurs noms, et leurs unites respectives sont
affichs avant les valeurs. Les options sont interprtes ainsi :
a
affichage de toutes les limites actuelles
c
la taille maximale pour la cration dun fichier core
d
la taille maximale du segment de donnes dun processus
f
la taille maximale dun fichier cr par le shell
m
la taille maximale de la partie rsidente dun processus
s
la taille maximale de la pile
t
la dure maximale, en seconde, de temps CPU accord un processus.
p
la taille dun tube (pipe) en blocs de 512 octets (ceci nest pas modifiable)
n
le nombre maximal de descripteurs de fichiers ouverts simultanment (la plupart de
systmes ne permettent pas de modifier ceci)
u
le nombre maximal de processus autoriss pour un seul utilisateur
v
la quantit de mmoire virtuelle disponible pour le shell
Un argument dsactive la recherche doption dans le reste des arguments. Si une limite est
fournie, la ressource correspondante recevra cette limite (loption a ne permet que laffichage).
Si aucune option nest indique, la ressource f est prise par dfaut. Les valeurs sexpriment en
kilo-octets, sauf pour t, ou elles sexpriment en secondes, p, qui utilise des units de blocs de
512 octets, n et u, qui nont pas dunits. La valeur renvoye est 0 sauf si une option illgale est
dtecte, si un argument non-numrique autre que unlimited est fourni comme limite, ou si une
erreur se produit durant la modification de la limite.
umask [S] [mode]
Le masque de cration de fichier de lutilisateur est fix au mode indiqu. Si mode commence par
un chiffre, il est interprt comme un nombre octal, sinon il est considr comme un masque symbolique, semblable ceux acceptes par chmod(1). Si mode est omis, ou si loption S est fournie,
la valeur courante du masque est affiche. Loption S affiche le masque sous forme symbolique,
laffichage par dfaut tant en octal. Un argument dsactive la recherche doption dans la suite
des arguments. Le code de retour est nul si le mode a pu tre chang correctement, ou si on a omis
largument mode, et faux sinon.
unalias [a] [nom ...]
Suprime le nom de la liste des alias dfinis. Si loption a est demande, toutes les dfinitions
dalias sont supprimes. La valeur renvoye est vraie sauf si un nom mentionn nest pas un alias
defini.

FSF

2 Octobre 1997

109

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

unset [fv] [nom ...]


Supprimer la variable (ou la fonction si loption f est mentionne), associe chaque nom
indiqu. Un argument dsactive la recherche doption dans la suite des arguments. Remarquez
que PATH, IFS, PPID, PS1, PS2, UID, et EUID ne peuvent pas tre supprims, et que si une des
variables RANDOM, SECONDS, LINENO, ou HISTCMD est supprime, elle perd ses proprits
spcifiques, mme sil elle est recre ultrieurement. Le code de retour est vrai, moins quun
des noms nexiste pas, ou ne soit pas suppressible.
wait [n]

Attend que le processus indique se termine, et renvoie son code de retour. n peut indiquer un PID,
ou un job. Sil sagit dun indicateur de job, on attendra la fin de tous les processus du pipeline de
ce job. Si n est omis, on attend la fin de tous les processus fils actuellement actifs, et le code de
retour sera zro. Si n se rapporte un processus ou un job inexistant, le code de retour sera 127.
Dans tous les autres cas, le code de retour sera celui du dernier processus ou job attendu.

INVOCATION

Un shell est dit de login si le premier caractre de son argument numro zro est un -, ou sil est invoqu
avec loption login.
Un shell est interactif si son entre standard et sa sortie standard sont toutes deux connectes un terminal
(dtermin par la fonction isatty(3)), ou sil est invoqu avec loption i. Le paramtre PS1 est positionn,
et le paramtre $ contient la lettre i si bash est interactif, ce qui permet un script ou un fichier de
dmarrage de vrifier ltat du shell.
Les Shells de Login :
Au login (sous contrle de loption noprofile) :
Si /etc/profile existe, il est excut.
Si /.bash_profile existe, il est excut,
Sinon Si /.bash_login existe, il est excut,
Sinon Si /.profile existe, il est excut.
A la sortie :
Si /.bash_logout existe, il est excut.
Shells interactifs, mais pas de Login :
Au dmarrage (sous contrle des options norc et rcfile):
Si /.bashrc existe, il est excut.

Shells non-interactifs:
Au dmarrage:
Si la variable denvironnement ENV est non-nulle, elle est
dveloppe, et le fichier dont elle contient le nom est excut,
comme si lon appliquait la commande
if [ "$ENV" ]; then . $ENV; fi
mais on nutilise pas PATH pour rechercher le chemin daccs.
Quand il nest pas invoqu en mode Posix, Bash recherche dabord
BASH_ENV avant ENV.
Si Bash est invoqu sous le nom sh, il essaye dimiter au maximum le comportement de sh. Pour un shell
de login, il nessaye dexcuter que /etc/profile et /.profile, dans cet ordre. Loption noprofile peut toujours tre utilise pour dsactiver ce comportement. Un shell invoqu sous le nom sh nessaye dexcuter
aucun autre fichier de dmarrage.
Quand bash est invoqu en mode posix, avec loption posix sur la ligne de commande, il suit ce standard
en ce qui concerne les fichiers de dmarrage. Dans ce cas, la variable ENV est dveloppe, et le fichier qui
en rsulte est excut. On nexcute pas dautre fichier dinitialisation.

110

2 Octobre 1997

FSF

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

VOIR AUSSI

Bash Features, Brian Fox et Chet Ramey


The Gnu Readline Library, Brian Fox et Chet Ramey
The Gnu History Library, Brian Fox et Chet Ramey
A System V Compatible Implementation of 4.2BSD Job Control, David Lennert
Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE
[NDT]Le shell Bash par Newham et Rosenblatt est traduit en francais chez OReilly
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)

FICHIERS

/bin/bash
Lexcutable bash.
/etc/profile
Le fichier dinitialisation globale, excute par les shells de login.
/.bash_profile
Le fichier dinitialisation personnalise, excute par les shells de login.
/.bashrc
Le fichier de dmarrage personnel, pour les shells interactifs.
/.inputrc
Le fichier dinitialisation personnalise de readline.

AUTEURS

Brian Fox, Free Software Foundation (auteur principal)


bfox@ai.MIT.Edu
Chet Ramey, Case Western Reserve University
chet@ins.CWRU.Edu

RAPPORT DE BUG

Si vous trouvez un bug dans bash, vous tes encourags nous en faire part. Tout dabord vous devez vous
assurer quil sagit rellement dun dysfonctionnement, et quil apparat bien dans la dernire version de
bash disponible.

Une fois que vous tes srs quil sagit bien dun bug, utilisez la commande bashbug pour nous envoyer un
rapport. Si vous avez trouv une correction, nhsitez pas lenvoyer en mme temps. Les simples suggestions, ou les remarques dordre philosophique peuvent tre transmises bug-bash@prep.ai.MIT.Edu ou
postes dans le groupe Usenet gnu.bash.bug.
TOUS les rapports de bugs doivent contenir :
Le numro de version de bash
Le matriel et le systme dexploitation utiliss
Le compilateur utilis pour compiler bash.
Une description du comportement du bug. [NDT : En anglais videmment]
Un petit script, ou une manipulation qui met en vidence le bug.
bashbug insre automatiquement les trois premiers lments de cette liste dans le formulaire quil fournit
pour remplir le rapport de bug.
Les commentaires et rapports derreurs concernant la version originale de cette page de manuel doivent tre
transmis chet@ins.CWRU.Edu. Ceux concernant la version francaise peuvent tre envoys ccb@clubinternet.fr.

BUGS

Cet interprteur est volumineux et lent.


Il y a quelques diffrences subtiles de comportement entre bash et les versions traditionnelles de sh, principalement cause des spcifications POSIX.
Lutilisation des alias peut avoir des consquences inattendues.

FSF

2 Octobre 1997

111

BASH(1)

Manuel de lutilisateur Linux

BASH(1)

TRADUCTION

Christophe Blaess, 1997.

112

2 Octobre 1997

FSF

ED(1)

NAME

ED(1)

ed, red text editor

SYNOPSIS

ed [-] [-Gs] [-p string] [file]

red [-] [-Gs] [-p string] [file]

DESCRIPTION

ed is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files.
red is a restricted ed: it can only edit files in the current directory and cannot execute shell commands.

If invoked with a file argument, then a copy of file is read into the editors buffer. Changes are made to this
copy and not directly to file itself. Upon quitting ed, any changes not explicitly saved with a w command
are lost.
Editing is done in two distinct modes: command and input. When first invoked, ed is in command mode.
In this mode commands are read from the standard input and executed to manipulate the contents of the
editor buffer. A typical command might look like:
,s/old/new/g
which replaces all occurences of the string old with new.
When an input command, such as a (append), i (insert) or c (change), is given, ed enters input mode.
This is the primary means of adding text to a file. In this mode, no commands are available; instead, the
standard input is written directly to the editor buffer. Lines consist of text up to and including a newline
character. Input mode is terminated by entering a single period (.) on a line.
All ed commands operate on whole lines or ranges of lines; e.g., the d command deletes lines; the m
command moves lines, and so on. It is possible to modify only a portion of a line by means of replacement,
as in the example above. However even here, the s command is applied to whole lines at a time.
In general, ed commands consist of zero or more line addresses, followed by a single character command
and possibly additional parameters; i.e., commands have the structure:
[address [,address]]command[parameters]
The address(es) indicate the line or range of lines to be affected by the command. If fewer addresses are
given than the command accepts, then default addresses are supplied.
OPTIONS
-G
-s
p string

file

Forces backwards compatibility. Affects the commands G, V, f , l, m, t, and !!.


Suppresses diagnostics. This should be used if eds standard input is from a script.

Specifies a command prompt. This may be toggled on and off with the P command.
Specifies the name of a file to read. If file is prefixed with a bang (!), then it is interpreted as a
shell command. In this case, what is read is the standard output of file executed via sh(1). To
read a file whose name begins with a bang, prefix the name with a backslash (\). The default filename is set to file only if it is not prefixed with a bang.

10 November 1994

113

ED(1)

ED(1)

LINE ADDRESSING
An address represents the number of a line in the buffer. ed maintains a current address which is typically
supplied to commands as the default address when none is specified. When a file is first read, the current
address is set to the last line of the file. In general, the current address is set to the last line affected by a
command.
A line address is constructed from one of the bases in the list below, optionally followed by a numeric offset. The offset may include any combination of digits, operators (i.e., +, - and ) and whitespace.
Addresses are read from left to right, and their values are computed relative to the current address.
One exception to the rule that addresses represent line numbers is the address 0 (zero). This means "before
the first line," and is legal wherever it makes sense.
An address range is two addresses separated either by a comma or semicolon. The value of the first address
in a range cannot exceed the value of the the second. If only one address is given in a range, then the second address is set to the given address. If an n-tuple of addresses is given where n > 2, then the corresponding range is determined by the last two addresses in the n-tuple. If only one address is expected, then
the last address is used.
Each address in a comma-delimited range is interpreted relative to the current address. In a semicolondelimited range, the first address is used to set the current address, and the second address is interpreted relative to the first.
The following address symbols are recognized.
.

The current line (address) in the buffer.

The last line in the buffer.

The nth, line in the buffer where n is a number in the range [0,$].

The previous line. This is equivalent to -1 and may be repeated with cumulative effect.

-n
n
+

The nth previous line, where n is a non-negative number.


The next line. This is equivalent to +1 and may be repeated with cumulative effect.

+n
whitespace n
The nth next line, where n is a non-negative number. Whitespace followed by a number n is
interpreted as +n.
,
%

114

The first through last lines in the buffer. This is equivalent to the address range 1,$.

10 November 1994

ED(1)

ED(1)
;

The current through last lines in the buffer. This is equivalent to the address range .,$.

/re/

The next line containing the regular expression re. The search wraps to the beginning of the
buffer and continues down to the current line, if necessary. // repeats the last search.

?re?

The previous line containing the regular expression re. The search wraps to the end of the buffer
and continues up to the current line, if necessary. ?? repeats the last search.

lc

The line previously marked by a k (mark) command, where lc is a lower case letter.

REGULAR EXPRESSIONS
Regular expressions are patterns used in selecting text. For example, the ed command
g/string/
prints all lines containing string. Regular expressions are also used by the s command for selecting old
text to be replaced with new.
In addition to a specifying string literals, regular expressions can represent classes of strings. Strings thus
represented are said to be matched by the corresponding regular expression. If it is possible for a regular
expression to match several strings in a line, then the left-most longest match is the one selected.
The following symbols are used in constructing regular expressions:
c

Any character c not listed below, including {, }, (, ), < and >, matches itself.

\c

A backslash-escaped character c other than {, }, (, ), <, >, b, B, w, W, +, and


? matches itself.

Matches any single character.


[char-class]
Matches any single character in char-class. To include a ] in char-class, it must be the first
character. A range of characters may be specified by separating the end characters of the range
with a -, e.g., a-z specifies the lower case characters. The following literal expressions can
also be used in char-class to specify sets of characters:
[:alnum:] [:cntrl:] [:lower:] [:space:]
[:blank:] [:graph:] [:punct:] [:xdigit:]

[:alpha:] [:digit:] [:print:] [:upper:]

If - appears as the first or last character of char-class, then it matches itself. All other characters
in char-class match themselves.
Patterns in char-class of the form:
[.col-elm.] or, [=col-elm=]
where col-elm is a collating element are interpreted according to locale(5) (not currently supported). See regex(3) for an explanation of these constructs.

10 November 1994

115

ED(1)

ED(1)
[char-class]
Matches any single character, other than newline, not in char-class. char-class is defined as
above.

If is the first character of a regular expression, then it anchors the regular expression to the
beginning of a line. Otherwise, it matches itself.

If $ is the last character of a regular expression, it anchors the regular expression to the end of a
line. Otherwise, it matches itself.

\(re\)

Defines a (possibly null) subexpression re. Subexpressions may be nested. A subsequent backreference of the form \n, where n is a number in the range [1,9], expands to the text matched by
the nth subexpression. For example, the regular expression \(a.c\)\1 matches the string
abcabc, but not abcadc. Subexpressions are ordered relative to their left delimiter.

Matches the single character regular expression or subexpression immediately preceding it zero
or more times. If * is the first character of a regular expression or subexpression, then it
matches itself. The * operator sometimes yields unexpected results. For example, the regular
expression b* matches the beginning of the string abbb, as opposed to the substring bbb,
since a null match is the only left-most match.

\{n,m\}
\{n,\}
\{n\}

\<
\>

Matches the single character regular expression or subexpression immediately preceding it at


least n and at most m times. If m is omitted, then it matches at least n times. If the comma is
also omitted, then it matches exactly n times. If any of these forms occurs first in a regular
expression or subexpression, then it is interpreted literally (i.e., the regular expression \{2\}
matches the string {2}, and so on).
Anchors the single character regular expression or subexpression immediately following it to the
beginning (\<) or ending (\>) of a word, i.e., in ASCII, a maximal string of alphanumeric characters, including the underscore (_).

The following extended operators are preceded by a backslash (\) to distinguish them from traditional ed
syntax.
\
\

116

Unconditionally matches the beginning (\) or ending (\) of a line.

\?

Optionally matches the single character regular expression or subexpression immediately preceding it. For example, the regular expression a[bd]\?c matches the strings abc, adc and ac. If
\? occurs at the beginning of a regular expressions or subexpression, then it matches a literal ?.

\+

Matches the single character regular expression or subexpression immediately preceding it one or
more times. So the regular expression a+ is shorthand for aa*. If \+ occurs at the beginning
of a regular expression or subexpression, then it matches a literal +.

\b

Matches the beginning or ending (null string) of a word. Thus the regular expression \bhello\b
is equivalent to \<hello\>. However, \b\b is a valid regular expression whereas \<\> is not.

10 November 1994

ED(1)

ED(1)
\B

Matches (a null string) inside a word.

\w

Matches any character in a word.

\W

Matches any character not in a word.

COMMANDS
All ed commands are single characters, though some require additonal parameters. If a commands parameters extend over several lines, then each line except for the last must be terminated with a backslash (\).
In general, at most one command is allowed per line. However, most commands accept a print suffix,
which is any of p (print), l (list) , or n (enumerate), to print the last line affected by the command.
An interrupt (typically C) has the effect of aborting the current command and returning the editor to command mode.
ed recognizes the following commands. The commands are shown together with the default address or
address range supplied if none is specified (in parenthesis).
(.)a

Appends text to the buffer after the addressed line, which may be the address 0 (zero). Text is
entered in input mode. The current address is set to last line entered.

(.,.)c

Changes lines in the buffer. The addressed lines are deleted from the buffer, and text is appended
in their place. Text is entered in input mode. The current address is set to last line entered.

(.,.)d

Deletes the addressed lines from the buffer. If there is a line after the deleted range, then the current address is set to this line. Otherwise the current address is set to the line before the deleted
range.

e file

Edits file, and sets the default filename. If file is not specified, then the default filename is used.
Any lines in the buffer are deleted before the new file is read. The current address is set to the
last line read.

e !command
Edits the standard output of !command, (see !command below). The default filename is
unchanged. Any lines in the buffer are deleted before the output of command is read. The current address is set to the last line read.
E file

Edits file unconditionally. This is similar to the e command, except that unwritten changes are
discarded without warning. The current address is set to the last line read.

f file

Sets the default filename to file. If file is not specified, then the default unescaped filename is
printed.

(1,$)g /re/command-list
Applies command-list to each of the addressed lines matching a regular expression re. The current address is set to the line currently matched before command-list is executed. At the end of
the g command, the current address is set to the last line affected by command-list.
Each command in command-list must be on a separate line, and every line except for the last
must be terminated by a backslash (\). Any commands are allowed, except for g, G, v, and
V. A newline alone in command-list is equivalent to a p command.

10 November 1994

117

ED(1)

ED(1)
(1,$)G /re/
Interactively edits the addressed lines matching a regular expression re. For each matching line,
the line is printed, the current address is set, and the user is prompted to enter a command-list. At
the end of the G command, the current address is set to the last line affected by (the last) command-list.
The format of command-list is the same as that of the g command. A newline alone acts as a
null command list. A single & repeats the last non-null command list.
H

Toggles the printing of error explanations. By default, explanations are not printed. It is recommended that ed scripts begin with this command to aid in debugging.

Prints an explanation of the last error.

(.)i

Inserts text in the buffer before the current line. Text is entered in input mode. The current
address is set to the last line entered.

(.,.+1)j

Joins the addressed lines. The addressed lines are deleted from the buffer and replaced by a single line containing their joined text. The current address is set to the resultant line.

(.)klc

Marks a line with a lower case letter lc. The line can then be addressed as lc (i.e., a single quote
followed by lc ) in subsequent commands. The mark is not cleared until the line is deleted or otherwise modified.

(.,.)l

Prints the addressed lines unambiguously. If invoked from a terminal, ed pauses at the end of
each page until a newline is entered. The current address is set to the last line printed.

(.,.)m(.) Moves lines in the buffer. The addressed lines are moved to after the right-hand destination
address, which may be the address 0 (zero). The current address is set to the last line moved.
(.,.)n

Prints the addressed lines along with their line numbers. The current address is set to the last line
printed.

(.,.)p

Prints the addressed lines. If invoked from a terminal, ed pauses at the end of each page until a
newline is entered. The current address is set to the last line printed.

Toggles the command prompt on and off. Unless a prompt was specified by with command-line
option -p string, the command prompt is by default turned off.

Quits ed.

Quits ed unconditionally. This is similar to the q command, except that unwritten changes are
discarded without warning.

($)r file

Reads file to after the addressed line. If file is not specified, then the default filename is used. If
there was no default filename prior to the command, then the default filename is set to file. Otherwise, the default filename is unchanged. The current address is set to the last line read.

($)r !command
Reads to after the addressed line the standard output of !command, (see the !command below).
The default filename is unchanged. The current address is set to the last line read.
(.,.)s /re/replacement/

118

10 November 1994

ED(1)

ED(1)
(.,.)s /re/replacement/g
(.,.)s /re/replacement/n
Replaces text in the addressed lines matching a regular expression re with replacement. By
default, only the first match in each line is replaced. If the g (global) suffix is given, then every
match to be replaced. The n suffix, where n is a postive number, causes only the nth match to
be replaced. It is an error if no substitutions are performed on any of the addressed lines. The
current address is set the last line affected.
re and replacement may be delimited by any character other than space and newline (see the s
command below). If one or two of the last delimiters is omitted, then the last line affected is
printed as though the print suffix p were specified.
An unescaped & in replacement is replaced by the currently matched text. The character
sequence \m, where m is a number in the range [1,9], is replaced by the mth backreference
expression of the matched text. If replacement consists of a single %, then replacement from
the last substitution is used. Newlines may be embedded in replacement if they are escaped with
a backslash (\).
(.,.)s

Repeats the last substitution. This form of the s command accepts a count suffix n, or any
combination of the characters r, g, and p. If a count suffix n is given, then only the nth
match is replaced. The r suffix causes the regular expression of the last search to be used
instead of the that of the last substitution. The g suffix toggles the global suffix of the last substitution. The p suffix toggles the print suffix of the last substitution The current address is set to
the last line affected.

(.,.)t(.)

Copies (i.e., transfers) the addressed lines to after the right-hand destination address, which may
be the address 0 (zero). The current address is set to the last line copied.

Undoes the last command and restores the current address to what it was before the command.
The global commands g, G, v, and V. are treated as a single command by undo. u is its
own inverse.

(1,$)v /re/command-list
Applies command-list to each of the addressed lines not matching a regular expression re. This is
similar to the g command.
(1,$)V /re/
Interactively edits the addressed lines not matching a regular expression re. This is similar to the
G command.
(1,$)w file
Writes the addressed lines to file. Any previous contents of file is lost without warning. If there
is no default filename, then the default filename is set to file, otherwise it is unchanged. If no filename is specified, then the default filename is used. The current address is unchanged.
(1,$)wq file
Writes the addressed lines to file, and then executes a q command.
(1,$)w !command
Writes the addressed lines to the standard input of !command, (see the !command below). The
default filename and current address are unchanged.

10 November 1994

119

ED(1)

ED(1)
(1,$)W file
Appends the addressed lines to the end of file. This is similar to the w command, expect that the
previous contents of file is not clobbered. The current address is unchanged.
(.)x

Copies (puts) the contents of the cut buffer to after the addressed line. The current address is set
to the last line copied.

(.,.)y

Copies (yanks) the addressed lines to the cut buffer. The cut buffer is overwritten by subsequent
y, s, j, d, or c commands. The current address is unchanged.

(.+1)zn

Scrolls n lines at a time starting at addressed line. If n is not specified, then the current window
size is used. The current address is set to the last line printed.

!command
Executes command via sh(1). If the first character of command is !, then it is replaced by text
of the previous !command. ed does not process command for backslash (\) escapes. However,
an unescaped % is replaced by the default filename. When the shell returns from execution, a
! is printed to the standard output. The current line is unchanged.
(.,.)#

Begins a comment; the rest of the line, up to a newline, is ignored. If a line address followed by
a semicolon is given, then the current address is set to that address. Otherwise, the current
address is unchanged.

($)=

Prints the line number of the addressed line.

(.+1)newline
Prints the addressed line, and sets the current address to that line.

FILES

/tmp/ed.*
ed.hup

Buffer file
The file to which ed attempts to write the buffer if the terminal hangs up.

SEE ALSO

vi(1), sed(1), regex(3), sh(1).

USD:12-13
B. W. Kernighan and P. J. Plauger, Software Tools in Pascal , Addison-Wesley, 1981.

LIMITATIONS

ed processes file arguments for backslash escapes, i.e., in a filename, any characters preceded by a backslash (\) are interpreted literally.
If a text (non-binary) file is not terminated by a newline character, then ed appends one on reading/writing
it. In the case of a binary file, ed does not append a newline on reading/writing.
per line overhead: 4 ints

DIAGNOSTICS

When an error occurs, if eds input is from a regular file or here document, then it exits, otherwise it prints a
? and returns to command mode. An explanation of the last error can be printed with the h (help) command.
Attempting to quit ed or edit another file before writing a modified buffer results in an error. If the

120

10 November 1994

ED(1)

ED(1)
command is entered a second time, it succeeds, but any changes to the buffer are lost.
ed exits with 0 if no errors occurred; otherwise >0.

10 November 1994

121

GAWK(1)

NAME

Utility Commands

GAWK(1)

gawk pattern scanning and processing language

SYNOPSIS

gawk [ POSIX or GNU style options ] f program-file [ ] file ...


gawk [ POSIX or GNU style options ] [ ] program-text file ...

DESCRIPTION

Gawk is the GNU Projects implementation of the AWK programming language. It conforms to the definition of the language in the POSIX 1003.2 Command Language And Utilities Standard. This version in turn
is based on the description in The AWK Programming Language, by Aho, Kernighan, and Weinberger, with
the additional features found in the System V Release 4 version of UNIX awk. Gawk also provides more
recent Bell Labs awk extensions, and some GNU-specific extensions.
The command line consists of options to gawk itself, the AWK program text (if not supplied via the f or
file options), and values to be made available in the ARGC and ARGV pre-defined AWK variables.

OPTION FORMAT

Gawk options may be either the traditional POSIX one letter options, or the GNU style long options. POSIX
options start with a single , while long options start with . Long options are provided for both
GNU-specific features and for POSIX mandated features.
Following the POSIX standard, gawk-specific options are supplied via arguments to the W option. Multiple W options may be supplied Each W option has a corresponding long option, as detailed below.
Arguments to long options are either joined with the option by an = sign, with no intervening spaces, or
they may be provided in the next command line argument. Long options may be abbreviated, as long as the
abbreviation remains unique.

OPTIONS

Gawk accepts the following options.


F fs
field-separator fs
Use fs for the input field separator (the value of the FS predefined variable).
v var=val
assign var=val
Assign the value val, to the variable var, before execution of the program begins. Such variable
values are available to the BEGIN block of an AWK program.
f program-file
file program-file
Read the AWK program source from the file program-file, instead of from the first command line
argument. Multiple f (or file) options may be used.
mf NNN
mr NNN
Set various memory limits to the value NNN . The f flag sets the maximum number of fields, and
the r flag sets the maximum record size. These two flags and the m option are from the Bell
Labs research version of UNIX awk. They are ignored by gawk, since gawk has no pre-defined
limits.
W traditional
W compat
traditional
compat
Run in compatibility mode. In compatibility mode, gawk behaves identically to UNIX awk; none
of the GNU-specific extensions are recognized. The use of traditional is preferred over the
other forms of this option. See GNU EXTENSIONS, below, for more information.

122

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

GAWK(1)

W copyleft
W copyright
copyleft
copyright
Print the short version of the GNU copyright information message on the standard output, and
exits successfully.
W help
W usage
help
usage
Print a relatively short summary of the available options on the standard output. (Per the GNU
Coding Standards, these options cause an immediate, successful exit.)
W lint
lint Provide warnings about constructs that are dubious or non-portable to other AWK implementations.
W lintold
lintold
Provide warnings about constructs that are not portable to the original version of Unix awk.
W posix
posix
This turns on compatibility mode, with the following additional restrictions:
\x escape sequences are not recognized.
Only space and tab act as field separators when FS is set to a single space, newline does not.
The synonym func for the keyword function is not recognized.
The operators ** and **= cannot be used in place of and =.
The fflush() function is not available.
W reinterval
reinterval
Enable the use of interval expressions in regular expression matching (see Regular Expressions,
below). Interval expressions were not traditionally available in the AWK language. The POSIX
standard added them, to make awk and egrep consistent with each other. However, their use is
likely to break old AWK programs, so gawk only provides them if they are requested with this
option, or when posix is specified.
W source program-text
source program-text
Use program-text as AWK program source code. This option allows the easy intermixing of
library functions (used via the f and file options) with source code entered on the command
line. It is intended primarily for medium to large AWK programs used in shell scripts.
W version
version
Print version information for this particular copy of gawk on the standard output. This is useful
mainly for knowing if the current copy of gawk on your system is up to date with respect to whatever the Free Software Foundation is distributing. This is also useful when reporting bugs. (Per
the GNU Coding Standards, these options cause an immediate, successful exit.)

Signal the end of options. This is useful to allow further arguments to the AWK program itself to
start with a . This is mainly for consistency with the argument parsing convention used by
most other POSIX programs.

In compatibility mode, any other options are flagged as illegal, but are otherwise ignored. In normal operation, as long as program text has been supplied, unknown options are passed on to the AWK program in the

Free Software Foundation

Apr 28 1999

123

GAWK(1)

Utility Commands

GAWK(1)

ARGV array for processing. This is particularly useful for running AWK programs via the #!
executable interpreter mechanism.

AWK PROGRAM EXECUTION

An AWK program consists of a sequence of pattern-action statements and optional function definitions.
pattern { action statements }
function name(parameter list) { statements }

Gawk first reads the program source from the program-file(s) if specified, from arguments to source, or
from the first non-option argument on the command line. The f and source options may be used multiple times on the command line. Gawk will read the program text as if all the program-files and command
line source texts had been concatenated together. This is useful for building libraries of AWK functions,
without having to include them in each new AWK program that uses them. It also provides the ability to
mix library functions with command line programs.
The environment variable AWKPATH specifies a search path to use when finding source files named with
the f option. If this variable does not exist, the default path is ".:/usr/local/share/awk". (The actual
directory may vary, depending upon how gawk was built and installed.) If a file name given to the f
option contains a / character, no path search is performed.
Gawk executes AWK programs in the following order. First, all variable assignments specified via the v
option are performed. Next, gawk compiles the program into an internal form. Then, gawk executes the
code in the BEGIN block(s) (if any), and then proceeds to read each file named in the ARGV array. If
there are no files named on the command line, gawk reads the standard input.
If a filename on the command line has the form var=val it is treated as a variable assignment. The variable
var will be assigned the value val. (This happens after any BEGIN block(s) have been run.) Command
line variable assignment is most useful for dynamically assigning values to the variables AWK uses to control how input is broken into fields and records. It is also useful for controlling state if multiple passes are
needed over a single data file.
If the value of a particular element of ARGV is empty (""), gawk skips over it.
For each record in the input, gawk tests to see if it matches any pattern in the AWK program. For each
pattern that the record matches, the associated action is executed. The patterns are tested in the order they
occur in the program.
Finally, after all the input is exhausted, gawk executes the code in the END block(s) (if any).

VARIABLES, RECORDS AND FIELDS

AWK variables are dynamic; they come into existence when they are first used. Their values are either
floating-point numbers or strings, or both, depending upon how they are used. AWK also has one dimensional arrays; arrays with multiple dimensions may be simulated. Several pre-defined variables are set as a
program runs; these will be described as needed and summarized below.

Records
Normally, records are separated by newline characters. You can control how records are separated by
assigning values to the built-in variable RS. If RS is any single character, that character separates records.
Otherwise, RS is a regular expression. Text in the input that matches this regular expression will separate
the record. However, in compatibility mode, only the first character of its string value is used for separating
records. If RS is set to the null string, then records are separated by blank lines. When RS is set to the null
string, the newline character always acts as a field separator, in addition to whatever value FS may have.
Fields
As each input record is read, gawk splits the record into fields, using the value of the FS variable as the
field separator. If FS is a single character, fields are separated by that character. If FS is the null string,
then each individual character becomes a separate field. Otherwise, FS is expected to be a full regular
expression. In the special case that FS is a single space, fields are separated by runs of spaces and/or tabs
and/or newlines. (But see the discussion of posix, below). Note that the value of IGNORECASE (see
below) will also affect how fields are split when FS is a regular expression, and how records are separated
when RS is a regular expression.

124

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

GAWK(1)

If the FIELDWIDTHS variable is set to a space separated list of numbers, each field is expected to have
fixed width, and gawk will split up the record using the specified widths. The value of FS is ignored.
Assigning a new value to FS overrides the use of FIELDWIDTHS, and restores the default behavior.
Each field in the input record may be referenced by its position, $1, $2, and so on. $0 is the whole record.
The value of a field may be assigned to as well. Fields need not be referenced by constants:
n=5
print $n
prints the fifth field in the input record. The variable NF is set to the total number of fields in the input
record.
References to non-existent fields (i.e. fields after $NF) produce the null-string. However, assigning to a
non-existent field (e.g., $(NF+2) = 5) will increase the value of NF, create any intervening fields with the
null string as their value, and cause the value of $0 to be recomputed, with the fields being separated by the
value of OFS. References to negative numbered fields cause a fatal error. Decrementing NF causes the
values of fields past the new value to be lost, and the value of $0 to be recomputed, with the fields being
separated by the value of OFS.
Built-in Variables
Gawks built-in variables are:
ARGC

The number of command line arguments (does not include options to gawk, or the program source).

ARGIND

The index in ARGV of the current file being processed.

ARGV

Array of command line arguments. The array is indexed from 0 to ARGC 1. Dynamically changing the contents of ARGV can control the files used for data.

CONVFMT

The conversion format for numbers, "%.6g", by default.

ENVIRON

An array containing the values of the current environment. The array is indexed by the
environment variables, each element being the value of that variable (e.g., ENVIRON["HOME"] might be /home/arnold). Changing this array does not affect the
environment seen by programs which gawk spawns via redirection or the system() function. (This may change in a future version of gawk.)

ERRNO

If a system error occurs either doing a redirection for getline, during a read for getline,
or during a close(), then ERRNO will contain a string describing the error.

FIELDWIDTHS A white-space separated list of fieldwidths. When set, gawk parses the input into fields
of fixed width, instead of using the value of the FS variable as the field separator. The
fixed field width facility is still experimental; the semantics may change as gawk evolves
over time.
FILENAME

The name of the current input file. If no files are specified on the command line, the
value of FILENAME is . However, FILENAME is undefined inside the BEGIN
block.

FNR

The input record number in the current input file.

FS

The input field separator, a space by default. See Fields, above.

IGNORECASE Controls the case-sensitivity of all regular expression and string operations. If
IGNORECASE has a non-zero value, then string comparisons and pattern matching in
rules, field splitting with FS, record separating with RS, regular expression matching
with and !, and the gensub(), gsub(), index(), match(), split(), and sub() pre-defined
functions will all ignore case when doing regular expression operations. Thus, if
IGNORECASE is not equal to zero, /aB/ matches all of the strings "ab", "aB", "Ab",
and "AB". As with all AWK variables, the initial value of IGNORECASE is zero, so
all regular expression and string operations are normally case-sensitive. Under Unix, the
full ISO 8859-1 Latin-1 character set is used when ignoring case. NOTE: In versions of

Free Software Foundation

Apr 28 1999

125

GAWK(1)

Utility Commands

GAWK(1)

gawk prior to 3.0, IGNORECASE only affected regular expression operations. It now
affects string comparisons as well.
NF

The number of fields in the current input record.

NR

The total number of input records seen so far.

OFMT

The output format for numbers, "%.6g", by default.

OFS

The output field separator, a space by default.

ORS

The output record separator, by default a newline.

RS

The input record separator, by default a newline.

RT

The record terminator. Gawk sets RT to the input text that matched the character or regular expression specified by RS.

RSTART

The index of the first character matched by match(); 0 if no match.

RLENGTH

The length of the string matched by match(); 1 if no match.

SUBSEP

The character used to separate multiple subscripts in array elements, by default "\034".

Arrays
Arrays are subscripted with an expression between square brackets ([ and ]). If the expression is an expression list (expr, expr ...) then the array subscript is a string consisting of the concatenation of the (string)
value of each expression, separated by the value of the SUBSEP variable. This facility is used to simulate
multiply dimensioned arrays. For example:
i = "A"; j = "B"; k = "C"
x[i, j, k] = "hello, world\n"
assigns the string "hello, world\n" to the element of the array x which is indexed by the string
"A\034B\034C". All arrays in AWK are associative, i.e. indexed by string values.
The special operator in may be used in an if or while statement to see if an array has an index consisting of
a particular value.
if (val in array)
print array[val]
If the array has multiple subscripts, use (i, j) in array.
The in construct may also be used in a for loop to iterate over all the elements of an array.
An element may be deleted from an array using the delete statement. The delete statement may also be
used to delete the entire contents of an array, just by specifying the array name without a subscript.
Variable Typing And Conversion
Variables and fields may be (floating point) numbers, or strings, or both. How the value of a variable is
interpreted depends upon its context. If used in a numeric expression, it will be treated as a number, if used
as a string it will be treated as a string.
To force a variable to be treated as a number, add 0 to it; to force it to be treated as a string, concatenate it
with the null string.
When a string must be converted to a number, the conversion is accomplished using atof (3). A number is
converted to a string by using the value of CONVFMT as a format string for sprintf (3), with the numeric
value of the variable as the argument. However, even though all numbers in AWK are floating-point, integral values are always converted as integers. Thus, given
CONVFMT = "%2.2f"
a = 12
b = a ""
the variable b has a string value of "12" and not "12.00".
Gawk performs comparisons as follows: If two variables are numeric, they are compared numerically. If

126

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

GAWK(1)

one value is numeric and the other has a string value that is a numeric string, then comparisons are also
done numerically. Otherwise, the numeric value is converted to a string and a string comparison is performed. Two strings are compared, of course, as strings. According to the POSIX standard, even if two
strings are numeric strings, a numeric comparison is performed. However, this is clearly incorrect, and
gawk does not do this.
Note that string constants, such as "57", are not numeric strings, they are string constants. The idea of
numeric string only applies to fields, getline input, FILENAME, ARGV elements, ENVIRON elements and the elements of an array created by split() that are numeric strings. The basic idea is that user
input, and only user input, that looks numeric, should be treated that way.
Uninitialized variables have the numeric value 0 and the string value "" (the null, or empty, string).

PATTERNS AND ACTIONS

AWK is a line oriented language. The pattern comes first, and then the action. Action statements are
enclosed in { and }. Either the pattern may be missing, or the action may be missing, but, of course, not
both. If the pattern is missing, the action will be executed for every single record of input. A missing action
is equivalent to
{ print }
which prints the entire record.

Comments begin with the # character, and continue until the end of the line. Blank lines may be used to
separate statements. Normally, a statement ends with a newline, however, this is not the case for lines ending in a ,, {, ?, :, &&, or ||. Lines ending in do or else also have their statements automatically continued
on the following line. In other cases, a line can be continued by ending it with a \, in which case the
newline will be ignored.
Multiple statements may be put on one line by separating them with a ;. This applies to both the statements within the action part of a pattern-action pair (the usual case), and to the pattern-action statements
themselves.
Patterns
AWK patterns may be one of the following:
BEGIN
END
/regular expression/
relational expression
pattern && pattern
pattern || pattern
pattern ? pattern : pattern
( pattern)
! pattern
pattern1, pattern2
BEGIN and END are two special kinds of patterns which are not tested against the input. The action parts
of all BEGIN patterns are merged as if all the statements had been written in a single BEGIN block. They
are executed before any of the input is read. Similarly, all the END blocks are merged, and executed when
all the input is exhausted (or when an exit statement is executed). BEGIN and END patterns cannot be
combined with other patterns in pattern expressions. BEGIN and END patterns cannot have missing action
parts.
For /regular expression/ patterns, the associated statement is executed for each input record that matches
the regular expression. Regular expressions are the same as those in egrep(1), and are summarized below.
A relational expression may use any of the operators defined below in the section on actions. These generally test whether certain fields match certain regular expressions.
The &&, ||, and ! operators are logical AND, logical OR, and logical NOT, respectively, as in C. They do
short-circuit evaluation, also as in C, and are used for combining more primitive pattern expressions. As in

Free Software Foundation

Apr 28 1999

127

GAWK(1)

Utility Commands

GAWK(1)

most languages, parentheses may be used to change the order of evaluation.


The ?: operator is like the same operator in C. If the first pattern is true then the pattern used for testing is
the second pattern, otherwise it is the third. Only one of the second and third patterns is evaluated.
The pattern1, pattern2 form of an expression is called a range pattern. It matches all input records starting
with a record that matches pattern1, and continuing until a record that matches pattern2, inclusive. It does
not combine with any other sort of pattern expression.
Regular Expressions
Regular expressions are the extended kind found in egrep. They are composed of characters as follows:
c

matches the non-metacharacter c.

\c

matches the literal character c.

matches any character including newline.

matches the beginning of a string.

matches the end of a string.

[abc...]

character list, matches any of the characters abc....

[abc...] negated character list, matches any character except abc....


r1|r2

alternation: matches either r1 or r2.

r1r2

concatenation: matches r1, and then r2.

r+

matches one or more rs.

r*

matches zero or more rs.

r?

matches zero or one rs.

(r)

grouping: matches r.

r{n}
r{n,}
r{n,m}

One or two numbers inside braces denote an interval expression. If there is one number in the
braces, the preceding regexp r is repeated n times. If there are two numbers separated by a
comma, r is repeated n to m times. If there is one number followed by a comma, then r is
repeated at least n times.
Interval expressions are only available if either posix or reinterval is specified on the
command line.

\y

matches the empty string at either the beginning or the end of a word.

\B

matches the empty string within a word.

\<

matches the empty string at the beginning of a word.

\>

matches the empty string at the end of a word.

\w

matches any word-constituent character (letter, digit, or underscore).

\W

matches any character that is not word-constituent.

matches the empty string at the beginning of a buffer (string).

matches the empty string at the end of a buffer.

The escape sequences that are valid in string constants (see below) are also legal in regular expressions.
Character classes are a new feature introduced in the POSIX standard. A character class is a special notation for describing lists of characters that have a specific attribute, but where the actual characters themselves can vary from country to country and/or from character set to character set. For example, the notion
of what is an alphabetic character differs in the USA and in France.
A character class is only valid in a regexp inside the brackets of a character list. Character classes consist

128

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

GAWK(1)

of [:, a keyword denoting the class, and :]. Here are the character classes defined by the POSIX standard.
[:alnum:]
Alphanumeric characters.
[:alpha:]
Alphabetic characters.
[:blank:]
Space or tab characters.
[:cntrl:]
[:digit:]

Control characters.
Numeric characters.

[:graph:]
Characters that are both printable and visible. (A space is printable, but not visible, while an a is
both.)
[:lower:]
Lower-case alphabetic characters.
[:print:]

Printable characters (characters that are not control characters.)

[:punct:]
Punctuation characters (characters that are not letter, digits, control characters, or space characters).
[:space:]
Space characters (such as space, tab, and formfeed, to name a few).
[:upper:]
Upper-case alphabetic characters.
[:xdigit:]
Characters that are hexadecimal digits.
For example, before the POSIX standard, to match alphanumeric characters, you would have had to write
/[AZaz09]/. If your character set had other alphabetic characters in it, this would not match them.
With the POSIX character classes, you can write /[[:alnum:]]/, and this will match all the alphabetic and
numeric characters in your character set.
Two additional special sequences can appear in character lists. These apply to non-ASCII character sets,
which can have single symbols (called collating elements) that are represented with more than one character, as well as several characters that are equivalent for collating, or sorting, purposes. (E.g., in French, a
plain e and a grave-accented e` are equivalent.)
Collating Symbols
A collating symbols is a multi-character collating element enclosed in [. and .]. For example, if
ch is a collating element, then [[.ch.]] is a regexp that matches this collating element, while [ch] is
a regexp that matches either c or h.
Equivalence Classes
An equivalence class is a locale-specific name for a list of characters that are equivalent. The name
is enclosed in [= and =]. For example, the name e might be used to represent all of e, e`, and
e`. In this case, [[=e]] is a regexp that matches any of
.BR e ,
.BR e , or
.BR e` .
These features are very valuable in non-English speaking locales. The library functions that gawk uses for
regular expression matching currently only recognize POSIX character classes; they do not recognize

Free Software Foundation

Apr 28 1999

129

GAWK(1)

Utility Commands

GAWK(1)

collating symbols or equivalence classes.


The \y, \B, \<, \>, \w, \W, \, and \ operators are specific to gawk; they are extensions based on facilities in
the GNU regexp libraries.
The various command line options control how gawk interprets characters in regexps.
No options
In the default case, gawk provide all the facilities of POSIX regexps and the GNU regexp operators described above. However, interval expressions are not supported.
posix

Only POSIX regexps are supported, the GNU operators are not special. (E.g., \w matches a literal
w). Interval expressions are allowed.

traditional
Traditional Unix awk regexps are matched. The GNU operators are not special, interval expressions are not available, and neither are the POSIX character classes ([[:alnum:]] and so on). Characters described by octal and hexadecimal escape sequences are treated literally, even if they represent regexp metacharacters.
reinterval
Allow interval expressions in regexps, even if traditional has been provided.
Actions
Action statements are enclosed in braces, { and }. Action statements consist of the usual assignment, conditional, and looping statements found in most languages. The operators, control statements, and input/output
statements available are patterned after those in C.
Operators
The operators in AWK, in order of decreasing precedence, are
(...)

Grouping

Field reference.

++

Increment and decrement, both prefix and postfix.

130

Exponentiation (** may also be used, and **= for the assignment operator).

+!

Unary plus, unary minus, and logical negation.

*/%

Multiplication, division, and modulus.

Addition and subtraction.

space

String concatenation.

<>
<= >=
!= ==

The regular relational operators.

Regular expression match, negated match. NOTE: Do not use a constant regular expression
(/foo/) on the left-hand side of a or !. Only use one on the right-hand side. The expression
/foo/ exp has the same meaning as (($0 /foo/) exp). This is usually not what was
intended.

in

Array membership.

&&

Logical AND.

||

Logical OR.

?:

The C conditional expression. This has the form expr1 ? expr2 : expr3. If expr1 is true, the
value of the expression is expr2, otherwise it is expr3. Only one of expr2 and expr3 is evaluated.

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

GAWK(1)

= += =
*= /= %= = Assignment. Both absolute assignment (var = value) and operator-assignment (the other
forms) are supported.
Control Statements
The control statements are as follows:
if (condition) statement [ else statement ]
while (condition) statement
do statement while (condition)
for (expr1; expr2; expr3) statement
for (var in array) statement
break
continue
delete array[index]
delete array
exit [ expression ]
{ statements }
I/O Statements
The input/output statements are as follows:
close( file)

Close file (or pipe, see below).

getline

Set $0 from next input record; set NF, NR, FNR.

getline < file

Set $0 from next record of file; set NF.

getline var

Set var from next input record; set NR, FNR.

getline var < file

Set var from next record of file.

next

Stop processing the current input record. The next input record is read and processing
starts over with the first pattern in the AWK program. If the end of the input data is
reached, the END block(s), if any, are executed.

nextfile

Stop processing the current input file. The next input record read comes from the next
input file. FILENAME and ARGIND are updated, FNR is reset to 1, and processing
starts over with the first pattern in the AWK program. If the end of the input data is
reached, the END block(s), if any, are executed. NOTE: Earlier versions of gawk
used next file, as two words. While this usage is still recognized, it generates a warning message and will eventually be removed.

print

Prints the current record. The output record is terminated with the value of the ORS
variable.

print expr-list

Prints expressions. Each expression is separated by the value of the OFS variable.
The output record is terminated with the value of the ORS variable.

print expr-list > file

Prints expressions on file. Each expression is separated by the value of the OFS variable. The output record is terminated with the value of the ORS variable.

printf fmt, expr-list Format and print.


printf fmt, expr-list > file
Format and print on file.
system(cmd-line)

Execute the command cmd-line, and return the exit status. (This may not be available
on non-POSIX systems.)

fflush([file])

Flush any buffers associated with the open output file or pipe file. If file is missing,
then standard output is flushed. If file is the null string, then all open output files and
pipes have their buffers flushed.

Free Software Foundation

Apr 28 1999

131

GAWK(1)

Utility Commands

GAWK(1)

Other input/output redirections are also allowed. For print and printf, >> file appends output to the file,
while | command writes on a pipe. In a similar fashion, command | getline pipes into getline. The getline
command will return 0 on end of file, and 1 on an error.
The printf Statement
The AWK versions of the printf statement and sprintf() function (see below) accept the following conversion specification formats:
%c

An ASCII character. If the argument used for %c is numeric, it is treated as a character and
printed. Otherwise, the argument is assumed to be a string, and the only first character of that
string is printed.

%d
%i

A decimal number (the integer part).

%e
%E

A floating point number of the form []d.dddddde[+ ]dd. The %E format uses E instead of e.

%f

A floating point number of the form []ddd.dddddd.

%g
%G

Use %e or %f conversion, whichever is shorter, with nonsignificant zeros suppressed. The %G


format uses %E instead of %e.

%o

An unsigned octal number (again, an integer).

%s

A character string.

%x
%X

An unsigned hexadecimal number (an integer). %X format uses ABCDEF instead of abcdef.

%%

A single % character; no argument is converted.

There are optional, additional parameters that may lie between the % and the control letter:

The expression should be left-justified within its field.

space

For numeric conversions, prefix positive values with a space, and negative values with a minus
sign.

The plus sign, used before the width modifier (see below), says to always supply a sign for
numeric conversions, even if the data to be formatted is positive. The + overrides the space modifier.

Use an alternate form for certain control letters. For %o, supply a leading zero. For %x, and
%X, supply a leading 0x or 0X for a nonzero result. For %e, %E, and %f, the result will always
contain a decimal point. For %g, and %G, trailing zeros are not removed from the result.

A leading 0 (zero) acts as a flag, that indicates output should be padded with zeroes instead of
spaces. This applies even to non-numeric output formats. This flag only has an effect when the
field width is wider than the value to be printed.

width

The field should be padded to this width. The field is normally padded with spaces. If the 0 flag
has been used, it is padded with zeroes.

. prec

A number that specifies the precision to use when printing. For the %e, %E, and %f formats, this
specifies the number of digits you want printed to the right of the decimal point. For the %g, and
%G formats, it specifies the maximum number of significant digits. For the %d, %o, %i, %u,
%x, and %X formats, it specifies the minimum number of digits to print. For a string, it specifies
the maximum number of characters from the string that should be printed.

The dynamic width and prec capabilities of the ANSI C printf() routines are supported. A * in place of
either the width or prec specifications will cause their values to be taken from the argument list to printf or
sprintf().

132

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

GAWK(1)

Special File Names


When doing I/O redirection from either print or printf into a file, or via getline from a file, gawk recognizes certain special filenames internally. These filenames allow access to open file descriptors inherited
from gawks parent process (usually the shell). Other special filenames provide access to information about
the running gawk process. The filenames are:
/dev/pid

Reading this file returns the process ID of the current process, in decimal, terminated with a
newline.

/dev/ppid

Reading this file returns the parent process ID of the current process, in decimal, terminated
with a newline.

/dev/pgrpid

Reading this file returns the process group ID of the current process, in decimal, terminated
with a newline.

/dev/user

Reading this file returns a single record terminated with a newline. The fields are separated
with spaces. $1 is the value of the getuid(2) system call, $2 is the value of the geteuid(2) system call, $3 is the value of the getgid(2) system call, and $4 is the value of the getegid(2) system call. If there are any additional fields, they are the group IDs returned by getgroups(2).
Multiple groups may not be supported on all systems.

/dev/stdin

The standard input.

/dev/stdout The standard output.


/dev/stderr The standard error output.
/dev/fd/ n

The file associated with the open file descriptor n.

These are particularly useful for error messages. For example:


print "You blew it!" > "/dev/stderr"
whereas you would otherwise have to use
print "You blew it!" | "cat 1>&2"
These file names may also be used on the command line to name data files.
Numeric Functions
AWK has the following pre-defined arithmetic functions:
atan2(y, x)

returns the arctangent of y/x in radians.

cos(expr)

returns the cosine of expr, which is in radians.

exp(expr)

the exponential function.

int(expr)

truncates to integer.

log(expr)

the natural logarithm function.

rand()

returns a random number between 0 and 1.

sin(expr)

returns the sine of expr, which is in radians.

sqrt(expr)

the square root function.

srand([expr]) uses expr as a new seed for the random number generator. If no expr is provided, the time of
day will be used. The return value is the previous seed for the random number generator.
String Functions
Gawk has the following pre-defined string functions:
gensub(r, s, h [, t])

Free Software Foundation

search the target string t for matches of the regular expression r. If h is a string
beginning with g or G, then replace all matches of r with s. Otherwise, h is a number indicating which match of r to replace. If no t is supplied, $0 is used instead.
Within the replacement text s, the sequence \n, where n is a digit from 1 to 9, may

Apr 28 1999

133

GAWK(1)

Utility Commands

GAWK(1)

be used to indicate just the text that matched the nth parenthesized subexpression.
The sequence \0 represents the entire matched text, as does the character &. Unlike
sub() and gsub(), the modified string is returned as the result of the function, and
the original target string is not changed.
gsub(r, s [, t])

for each substring matching the regular expression r in the string t, substitute the
string s, and return the number of substitutions. If t is not supplied, use $0. An &
in the replacement text is replaced with the text that was actually matched. Use \&
to get a literal &. See AWK Language Programming for a fuller discussion of the
rules for &s and backslashes in the replacement text of sub(), gsub(), and gensub().

index(s, t)

returns the index of the string t in the string s, or 0 if t is not present.

length([s])

returns the length of the string s, or the length of $0 if s is not supplied.

match(s, r)

returns the position in s where the regular expression r occurs, or 0 if r is not


present, and sets the values of RSTART and RLENGTH.

split(s, a [, r])

splits the string s into the array a on the regular expression r, and returns the number of fields. If r is omitted, FS is used instead. The array a is cleared first. Splitting behaves identically to field splitting, described above.

sprintf( fmt, expr-list)

prints expr-list according to fmt, and returns the resulting string.

sub(r, s [, t])

just like gsub(), but only the first matching substring is replaced.

substr(s, i [, n])

returns the at most n-character substring of s starting at i. If n is omitted, the rest of


s is used.

tolower(str)

returns a copy of the string str, with all the upper-case characters in str translated to
their corresponding lower-case counterparts. Non-alphabetic characters are left
unchanged.

toupper(str)

returns a copy of the string str, with all the lower-case characters in str translated to
their corresponding upper-case counterparts. Non-alphabetic characters are left
unchanged.

Time Functions
Since one of the primary uses of AWK programs is processing log files that contain time stamp information, gawk provides the following two functions for obtaining time stamps and formatting them.
systime() returns the current time of day as the number of seconds since the Epoch (Midnight UTC, January 1, 1970 on POSIX systems).
strftime([format [, timestamp]])
formats timestamp according to the specification in format. The timestamp should be of the
same form as returned by systime(). If timestamp is missing, the current time of day is used. If
format is missing, a default format equivalent to the output of date(1) will be used. See the
specification for the strftime() function in ANSI C for the format conversions that are guaranteed
to be available. A public-domain version of strftime(3) and a man page for it come with gawk; if
that version was used to build gawk, then all of the conversions described in that man page are
available to gawk.
String Constants
String constants in AWK are sequences of characters enclosed between double quotes ("). Within strings,
certain escape sequences are recognized, as in C. These are:

134

\\

A literal backslash.

\a

The alert character; usually the ASCII BEL character.

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

\b

backspace.

\f

form-feed.

\n

newline.

\r

carriage return.

\t

horizontal tab.

\v

vertical tab.

GAWK(1)

\xhex digits
The character represented by the string of hexadecimal digits following the \x. As in ANSI C, all following hexadecimal digits are considered part of the escape sequence. (This feature should tell us
something about language design by committee.) E.g., "\x1B" is the ASCII ESC (escape) character.
\ddd The character represented by the 1-, 2-, or 3-digit sequence of octal digits. E.g. "\033" is the ASCII
ESC (escape) character.
\c

The literal character c.

The escape sequences may also be used inside constant regular expressions (e.g., /[ \t\f\n\r\v]/ matches
whitespace characters).
In compatibility mode, the characters represented by octal and hexadecimal escape sequences are treated
literally when used in regexp constants. Thus, /a\52b/ is equivalent to /a\*b/.

FUNCTIONS

Functions in AWK are defined as follows:


function name(parameter list) { statements }

Functions are executed when they are called from within expressions in either patterns or actions. Actual
parameters supplied in the function call are used to instantiate the formal parameters declared in the function. Arrays are passed by reference, other variables are passed by value.
Since functions were not originally part of the AWK language, the provision for local variables is rather
clumsy: They are declared as extra parameters in the parameter list. The convention is to separate local
variables from real parameters by extra spaces in the parameter list. For example:
function f(p, q,
{
.....
}
/abc/

a, b)

# a & b are local

{ ... ; f(1, 2) ; ... }

The left parenthesis in a function call is required to immediately follow the function name, without any
intervening white space. This is to avoid a syntactic ambiguity with the concatenation operator. This
restriction does not apply to the built-in functions listed above.
Functions may call each other and may be recursive. Function parameters used as local variables are initialized to the null string and the number zero upon function invocation.
Use return expr to return a value from a function. The return value is undefined if no value is provided, or
if the function returns by falling off the end.
If lint has been provided, gawk will warn about calls to undefined functions at parse time, instead of at
run time. Calling an undefined function at run time is a fatal error.
The word func may be used in place of function.

EXAMPLES

Print and sort the login names of all users:


BEGIN { FS = ":" }

Free Software Foundation

Apr 28 1999

135

GAWK(1)

Utility Commands

GAWK(1)

{ print $1 | "sort" }
Count lines in a file:
END

{ nlines++ }
{ print nlines }

Precede each line by its number in the file:


{ print FNR, $0 }
Concatenate and line number (a variation on a theme):
{ print NR, $0 }

SEE ALSO

egrep(1), getpid(2), getppid(2), getpgrp(2), getuid(2), geteuid(2), getgid(2), getegid(2), getgroups(2)

The AWK Programming Language, Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger, Addison-Wesley, 1988. ISBN 0-201-07981-X.
AWK Language Programming, Edition 1.0, published by the Free Software Foundation, 1995.

POSIX COMPATIBILITY

A primary goal for gawk is compatibility with the POSIX standard, as well as with the latest version of
UNIX awk. To this end, gawk incorporates the following user visible features which are not described in
the AWK book, but are part of the Bell Labs version of awk, and are in the POSIX standard.

The v option for assigning variables before program execution starts is new. The book indicates that command line variable assignment happens when awk would otherwise open the argument as a file, which is
after the BEGIN block is executed. However, in earlier implementations, when such an assignment
appeared before any file names, the assignment would happen before the BEGIN block was run. Applications came to depend on this feature. When awk was changed to match its documentation, this option
was added to accommodate applications that depended upon the old behavior. (This feature was agreed
upon by both the AT&T and GNU developers.)
The W option for implementation specific features is from the POSIX standard.
When processing arguments, gawk uses the special option to signal the end of arguments. In compatibility mode, it will warn about, but otherwise ignore, undefined options. In normal operation, such
arguments are passed on to the AWK program for it to process.
The AWK book does not define the return value of srand(). The POSIX standard has it return the seed it
was using, to allow keeping track of random number sequences. Therefore srand() in gawk also returns its
current seed.
Other new features are: The use of multiple f options (from MKS awk); the ENVIRON array; the \a, and
\v escape sequences (done originally in gawk and fed back into AT&Ts); the tolower() and toupper()
built-in functions (from AT&T); and the ANSI C conversion specifications in printf (done first in AT&Ts
version).

GNU EXTENSIONS

Gawk has a number of extensions to POSIX awk. They are described in this section. All the extensions
described here can be disabled by invoking gawk with the traditional option.
The following features of gawk are not available in POSIX awk.
The \x escape sequence. (Disabled with posix.)
The fflush() function. (Disabled with posix.)
The systime(), strftime(), and gensub() functions.

136

Apr 28 1999

Free Software Foundation

GAWK(1)

Utility Commands

GAWK(1)

The special file names available for I/O redirection are not recognized.
The ARGIND, ERRNO, and RT variables are not special.
The IGNORECASE variable and its side-effects are not available.
The FIELDWIDTHS variable and fixed-width field splitting.
The use of RS as a regular expression.
The ability to split out individual characters using the null string as the value of FS, and as the
third argument to split().
No path search is performed for files named via the f option. Therefore the AWKPATH environment variable is not special.
The use of nextfile to abandon processing of the current input file.
The use of delete array to delete the entire contents of an array.
The AWK book does not define the return value of the close() function. Gawks close() returns the value
from fclose(3), or pclose(3), when closing a file or pipe, respectively.
When gawk is invoked with the traditional option, if the fs argument to the F option is t, then FS
will be set to the tab character. Note that typing gawk F\t ... simply causes the shell to quote the t,,
and does not pass \t to the F option. Since this is a rather ugly special case, it is not the default behavior. This behavior also does not occur if posix has been specified. To really get a tab character as the
field separator, it is best to use quotes: gawk F\t ....

HISTORICAL FEATURES

There are two features of historical AWK implementations that gawk supports. First, it is possible to call
the length() built-in function not only with no argument, but even without parentheses! Thus,
a = length

# Holy Algol 60, Batman!

is the same as either of


a = length()
a = length($0)
This feature is marked as deprecated in the POSIX standard, and gawk will issue a warning about its use
if lint is specified on the command line.
The other feature is the use of either the continue or the break statements outside the body of a while, for,
or do loop. Traditional AWK implementations have treated such usage as equivalent to the next statement.
Gawk will support this usage if traditional has been specified.

ENVIRONMENT VARIABLES

If POSIXLY_CORRECT exists in the environment, then gawk behaves exactly as if posix had been
specified on the command line. If lint has been specified, gawk will issue a warning message to this
effect.

The AWKPATH environment variable can be used to provide a list of directories that gawk will search
when looking for files named via the f and file options.

BUGS

The F option is not necessary given the command line variable assignment feature; it remains only for
backwards compatibility.
If your system actually has support for /dev/fd and the associated /dev/stdin, /dev/stdout, and /dev/stderr
files, you may get different output from gawk than you would get on a system without those files. When
gawk interprets these files internally, it synchronizes output to the standard output with output to /dev/stdout, while on a system with those files, the output is actually to different open files. Caveat Emptor.
Syntactically invalid single character programs tend to overflow the parse stack, generating a rather unhelpful message. Such programs are surprisingly difficult to diagnose in the completely general case, and the
effort to do so really is not worth it.

Free Software Foundation

Apr 28 1999

137

GAWK(1)

Utility Commands

GAWK(1)

VERSION INFORMATION

This man page documents gawk, version 3.0.4.

AUTHORS

The original version of UNIX awk was designed and implemented by Alfred Aho, Peter Weinberger, and
Brian Kernighan of AT&T Bell Labs. Brian Kernighan continues to maintain and enhance it.

Paul Rubin and Jay Fenlason, of the Free Software Foundation, wrote gawk, to be compatible with the original version of awk distributed in Seventh Edition UNIX. John Woods contributed a number of bug fixes.
David Trueman, with contributions from Arnold Robbins, made gawk compatible with the new version of
UNIX awk. Arnold Robbins is the current maintainer.
The initial DOS port was done by Conrad Kwok and Scott Garfinkle. Scott Deifik is the current DOS
maintainer. Pat Rankin did the port to VMS, and Michal Jaegermann did the port to the Atari ST. The port
to OS/2 was done by Kai Uwe Rommel, with contributions and help from Darrel Hankerson. Fred Fish
supplied support for the Amiga.

BUG REPORTS

If you find a bug in gawk, please send electronic mail to bug-gnu-utils@gnu.org, with a carbon copy to
arnold@gnu.org. Please include your operating system and its revision, the version of gawk, what C compiler you used to compile it, and a test program and data that are as small as possible for reproducing the
problem.

Before sending a bug report, please do two things. First, verify that you have the latest version of gawk.
Many bugs (usually subtle ones) are fixed at each release, and if yours is out of date, the problem may
already have been solved. Second, please read this man page and the reference manual carefully to be sure
that what you think is a bug really is, instead of just a quirk in the language.
Whatever you do, do NOT post a bug report in comp.lang.awk. While the gawk developers occasionally
read this newsgroup, posting bug reports there is an unreliable way to report bugs. Instead, please use the
electronic mail addresses given above.

ACKNOWLEDGEMENTS

Brian Kernighan of Bell Labs provided valuable assistance during testing and debugging. We thank him.

COPYING PERMISSIONS

Copyright ) 1996,97,98,99 Free Software Foundation, Inc.


Permission is granted to make and distribute verbatim copies of this manual page provided the copyright
notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual page under the conditions for
verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual page into another language, under
the above conditions for modified versions, except that this permission notice may be stated in a translation
approved by the Foundation.

138

Apr 28 1999

Free Software Foundation

JOIN(1)

NOM

Manuel de lutilisateur Linux

JOIN(1)

join Fusionner les lignes de deux fichiers ayant un champ commun.

SYNOPSIS

join [a 1|2] [v 1|2] [e chane] [o liste_champs...] [t caractre] [j[1|2] champ] [1 champ] [2


champ] fichier_1 fichier_2
join {help,version}

DESCRIPTION

Cette page de manuel documente la version GNU de join.


join affiche sur la sortie standard une ligne pour chaque paire de lignes dentre, lune provenant de
fichier_1 et lautre de fichier_2, qui disposent de champs de fusion identiques.

Nimporte lequel des deux fichiers (mais pas les deux en mme temps) peut tre ce qui reprsente
lentre standard.
fichier_1 et fichier_2 doivent tre pralablement tris en ordre croissant (pas ncssairement numrique)
sur leur champ utilis pour la fusion. Si loption t nest pas prcise, les fichiers doivent tre tris en ignorant les blancs en dbut de ligne, comme sort(1) le fait avec loption b.
Les lments par dfaut sont les suivants : Le champ de fusion est le premier champ sur chaque ligne. Les
champs en entre sont spars par un ou plusieurs blancs, les blancs en dbut de ligne tant ignors. Les
champs en sortie sont spars par un espace. Chaque ligne de sortie commence par le champ de fusion,
puis les champs restants de fichier_1, enfin, ceux restants de fichier_2.
OPTIONS
a numro
Afficher en plus sur la sortie standard une ligne pour chaque ligne du fichier numro (1 ou 2), qui
ne peut pas tre apparie.
e chane
Remplacer les champs de sortie vides (ceux qui manquent dans les entres) par la chane.
1, j1 champ
Effectuer la fusion sur le champ (un entier positif) du fichier 1.
2, j2 champ
Effectuer la fusion sur le champ (un entier positif) du fichier 2.
j champ
Equivalent 1 champ 2 champ.
o liste_des_champs...
Construire les lignes de sortie en utilisant le format indiqu dans la liste_des_champs. Chaque
lment de la liste_des_champs. consiste en un numro de fichier (1 ou 2), un point-virgule, et un
numro de champ (un entier positif). Les lments de la liste sont spars par des virgules ou des
espaces. Plusieurs arguments de la liste_de_champs peuvent tre fournis en une seule option o.
Les arguments de toutes les listes indiques par les options o sont mises bout a bout.
t caractre
Utiliser le caractre indiqu comme sparateur de champs, tant en entre quen sortie.
v numro
Afficher sur la sortie standard, la place du rsultat habituel, une ligne pour chaque ligne du
fichier numro (1 ou 2), qui ne peut pas tre apparie.
De plus, quand la version GNU de join est invoque avec un seul argument, les options suivantes sont
reconnues :
help Afficher un message daide sur la sortie standard et terminer normalement.

FSF

12 Janvier 1997

139

JOIN(1)

Manuel de lutilisateur Linux

JOIN(1)

version
Afficher un numro de version sur la sortie standard et terminer normalement.

TRADUCTION

Christophe Blaess, 1997.

140

12 Janvier 1997

FSF

SED(1)

NAME

SED(1)

sed a Stream EDitor

SYNOPSIS

sed [-n] [-V] [--quiet] [--silent] [--version] [--help]


[-e script] [--expression=script]
[-f script-file] [--file=script-file]
[script-if-no-other-script]
[file...]

DESCRIPTION

Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a
file or input from a pipeline). While in some ways similar to an editor which permits scripted edits (such as
ed), sed works by making only one pass over the input(s), and is consequently more efficient. But it is seds
ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

OPTIONS

Sed may be invoked with the following command-line options:

-V
--version
Print out the version of sed that is being run and a copyright notice, then exit.
-h
--help

Print a usage message briefly summarizing these command-line options and the bug-reporting
address, then exit.

-n
--quiet
--silent By default, sed will print out the pattern space at the end of each cycle through the script. These
options disable this automatic printing, and sed will only produce output when explicitly told to
via the p command.
-e script
--expression=script
Add the commands in script to the set of commands to be run while processing the input.
-f script-file
--file=script-file
Add the commands contained in the file script-file to the set of commands to be run while processing the input.
If no -e,-f,--expression, or --file options are given on the command-line, then the first non-option argument
on the command line is taken to be the script to be executed.
If any command-line parameters remain after processing the above, these parameters are interpreted as the
names of input files to be processed. A file name of - refers to the standard input stream. The standard
input will processed if no file names are specified.

Command Synopsis

This is just a brief synopsis of sed commands to serve as a reminder to those who already know sed; other
documentation (such as the texinfo document) must be consulted for fuller descriptions.

Zero-address commands
: label Label for b and t commands.

GNU Project

1998-05-07

141

SED(1)

SED(1)
#comment
The comment extends until the next newline (or the end of a -e script fragment).
}

The closing bracket of a { } block.

Zero- or One- address commands


=
Print the current line number.
a\
text

Append text, which has each embedded newline preceeded by a backslash.

i\
text

Insert text, which has each embedded newline preceeded by a backslash.

Immediately quit the sed script without processing any more input, except that if auto-print is not
diabled the current pattern space will be printed.

r filename
Append text read from filename.
Commands which accept address ranges
{
Begin a block of commands (end with a }).
b label Branch to label; if label is omitted, branch to end of script.
t label

If a s/// has done a successful substitution since the last input line was read and since the last t
command, then branch to label; if label is omitted, branch to end of script.

c\
text

Replace the selected lines with text, which has each embedded newline preceeded by a backslash.

Delete pattern space. Start next cycle.

Delete up to the first embedded newline in the pattern space. Start next cycle, but skip reading
from the input if there is still data in the pattern space.

hH

Copy/append pattern space to hold space.

gG

Copy/append hold space to pattern space.

Exchange the contents of the hold and pattern spaces.

List out the current line in a visually unambiguous form.

nN

Read/append the next line of input into the pattern space.

Print the current pattern space.

Print up to the first embedded newline of the current pattern space.

s/regexp/replacement/
Attempt to match regexp against the pattern space. If successful, replace that portion matched
with replacement. The replacement may contain the special character & to refer to that portion of
the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
w

filename Write the current pattern space to filename.

y/source/dest/
Transliterate the characters in the pattern space which appear in source to the corresponding character in dest.

Addresses

Sed commands can be given with no addresses, in which case the command will be executed for all input
lines; with one address, in which case the command will only be executed for input lines which match that
address; or with two addresses, in which case the command will be executed for all input lines which match
the inclusive range of lines starting from the first address and continuing to the second address. Three

142

1998-05-07

GNU Project

SED(1)

SED(1)
things to note about address ranges: the syntax is addr1,addr2 (i.e., the addresses are separated by a
comma); the line which addr1 matched will always be accepted, even if addr2 selects an earlier line; and if
addr2 is a regexp, it will not be tested against the line that addr1 matched.
After the address (or address-range), and before the command, a ! may be inserted, which specifies that the
command shall only be executed if the address (or address-range) does not match.
The following address types are supported:
number
Match only the specified line number.
firststep
Match every stepth line starting with line first. For example, sed -n 12p will print all the oddnumbered lines in the input stream, and the address 25 will match every fifth line, starting with
the second. (This is a GNU extension.)
$
/regexp/

Match the last line.


Match lines matching the regular expression regexp.

\cregexpc
Match lines matching the regular expression regexp. The c may be any character.

Regular expressions

POSIX.2 BREs should be supported, but they arent completely yet. The \n sequence in a regular expression matches the newline character. There are also some GNU extensions. [XXX FIXME: more needs to
be said. At the very least, a reference to another document which describes what is supported should be
given.]

Miscellaneous notes

This version of sed supports a \<newline> sequence in all regular expressions, the replacement part of a
substitute (s) command, and in the source and dest parts of a transliterate (y) command. The \ is stripped,
and the newline is kept.

SEE ALSO

awk(1), ed(1), expr(1), emacs(1), perl(1), tr(1), vi(1), regex(5) [well, one ought to be written... XXX],
sed.info, any of various books on sed, the sed FAQ (http://www.wollery.demon.co.uk/sedtut10.txt,
http://www.ptug.org/sed/sedfaq.htm).

BUGS

E-mail bug reports to bug-gnu-utils@gnu.org. Be sure to include the word sed somewhere in the
Subject: field.

GNU Project

1998-05-07

143

SORT(1)

NOM

Manuel de lutilisateur Linux

SORT(1)

sort Trier les lignes dun fichier texte.

SYNOPSIS

sort [cmus] [t sparateur] [o fichier_de_sortie] [T rpertoire_temporaire] [bdfiMnr] [+POS1


[POS2]] [k POS1[,POS2]] [fichier...]
sort {help,version}

DESCRIPTION

Cette page de manuel documente la version GNU de sort.


sort trie, regroupe ou compare toutes les lignes des fichiers indiqus. Si aucun fichier nest fourni, ou si le
nom est mentionn, la lecture se fera depuis lentre standard.
Par dfaut, sort crit ses rsultats sur la sortie standard.

sort peut oprer suivant trois modes : tri (par dfaut), regroupement, et vrification de lordre. Les options
suivantes modifient le mode opratoire :
c

([NDT] c = check - vrifier) Vrifie si les fichiers fournis sont dj tris : sils ne le sont pas,
afficher un message derreur, et terminer avec un code de retour valant 1.

([NDT] m = merge - melanger) Regrouper les fichiers indiqus en les triant. Chaque fichier
dentre doit dj tre tri individuellement. Il est toujours possible de trier plutt que de runir, le
regroupement est fourni parce quil est plus rapide dans les cas o il fonctionne.

La comparaison de deux lignes se fait ainsi : Si un champ cl a t indiqu, sort compare chaque paire de
champs, dans lordre prcis sur la ligne de commande, jusqu ce quune diffrence soit trouve, ou quil
ne reste plus de champs.
Si lune des options globales Mbdfinr est utilise, et si aucun champ cl nest indiqu, sort compare les
lignes entires en fonction des options globales.
Finalement, si toutes les cls sont gales, en dernier ressort sort compare les lignes octet par octet suivant
lordre dfini sur la machine. Cette dernire comparaison accepte loption globale -r. Loption s (stable)
inhibe cette comparaison en dernier recours afin que les lignes considres comme gales restent leurs
positions relatives. Si aucun champ cl, et aucune option ne sont fournis, s est sans effet.
La version GNU de sort na pas de limitation concernant la longueur des lignes dentre ou les caractres
autoriss. De plus, si le dernier octet dune ligne dentre nest pas un saut de ligne (NewLine), la version
GNU de sort en ajoute un automatiquement.
Si la variable denvironnement TMPDIR est configure, sort utilise ce rpertoire pour stocker les fichiers
temporaires la place du rpertoire par dfaut /tmp. Loption T rpertoire_temporaire permet galement
de slectionner un rpertoire pour placer les fichiers temporaires, elle a priorit sur la variable denvironnement.
Les options suivantes affectent lordre des lignes de sortie. Elles peuvent tre mentionnes globalement, ou
appliques un champ cl spcifique. Si aucun champ cl nest indiqu, les options globales sappliquent
aux comparaisons des lignes entires, sinon elles sont transmises aux champs cls nayant pas doption
spcifique.

144

Ignorer les blancs en dbut de ligne pendant la recherche de la cl de tri sur chaque ligne.

Trier dans lordre des rpertoires tlphoniques : ignorer pour le tri tous les caractres autres que
les lettres, les chiffres et les blancs.

Considrer les minuscules comme leur quivalent en majuscule pendant le tri. Ainsi b est trie de
manire quivalente a B. ([NDT] Bien entendu cela ne fonctionne pas avec les minuscules
accentues...)

Ignorer pour le tri les caractres en dehors de lintervalle ASCII octal 040-0176 (bornes comprises).

14 Janvier 1997

FSF

SORT(1)

Manuel de lutilisateur Linux

SORT(1)

Une chane initiale, consistant en un nombre quelconque de blancs, suivi de trois lettres correspondant une abreviation de mois est convertie en majuscules avant dtre compare dans lordre
JAN < FEB < ... < DEC. Les noms invalides sont considres comme infrieurs aux noms
valides. ([NDT] Quen-est-il vis vis de la localisation ?)

Comparer suivant la valeur arithmtique dune chane numrique initiale compose despaces
ventuels, suivis optionnellement du signe , et de zro ou plusieurs chiffres, ventuellement suivi
dun point dcimal et de zro ou plusieurs chiffres.

Inverser lordre de tri, afin que les lignes avec la plus grande valeur de cl apparaissent en premier.

Les autres options sont :


o fichier_de_sortie
Ecrire dans le fichier_de_sortie plutt que sur la sortie standard. Si fichier_de_sortie est galement un fichier dentre, sort copie les donnes dans un fichier temporaire avant le tri pour pouvoir crire correctement ses rsultats dans le fichier_de_sortie.
t caractre_sparateur
Utiliser le caractre_sparateur afin de distinguer les champs pour rechercher la cl de tri sur
chaque ligne. Par dfaut le sparateur de champs est une chane blanche entre chanes nonblanches. Ceci signifie quavec lentre foo bar, sort distingue deux champs foo et bar. Le
sparateur nappartient ni au champ prcdent, ni au champ suivant.
u

Pour laction par dfaut, ou pour laction m, nafficher que la premire squence de lignes considres comme gales. Pour laction c, vrifier quaucune lignes conscutives ne soient gales.

+POS1 [POS2]
Indiquer un champ utiliser comme cl de tri pour chaque ligne. Le champ consiste en une portion de de ligne dbutant la position POS1, et stendant jusqu POS2 non-inclue (ou jusqu la
fin de la ligne si POS2 nest pas mentionne). Les positions des champs et des caractres sont
numrotes partir de 0.
k POS1[,POS2]
Une autre syntaxe possible pour indiquer les cls de tri. Les positions des champs et des caractres sont numrotes partir de 1.
Une position est de la forme f.c, o f est le numro du champ utiliser, et c le numro du premier caractre
depuis le dbut du champ (avec +pos) ou depuis la fin du champ prcdent (avec pos). La partie .c de la
position peut tre omise, auquel cas le caractre considr est le premier du champ. Si loption b est
choisie, la partie .c dune spcification de champ est compte partir du premier caractre non-blanc du
champ (pour +pos) ou partir du premier caractre non-blanc suivant le champ prcdent (pour pos).
Un argument +pos ou -pos peut galement avoir un prfixe constitu dune des lettres doption Mbdfinr
auquel cas les options globales ne sappliquent pas ce champ. loption b peut tre attache indpendament aux parties +pos ou pos dune spcification de champ. Si elle est hrite dune option globale, elle
sappliquera aux deux parties. Si une option n ou M est utilise, ceci implique que loption b
sapplique aux deux spcifications +pos et pos. Les cls peuvent stendre sur plusieurs champs.
De plus quand la version GNU de sort est invoque avec un seul argument, les options suivantes sont
reconnues :
help Afficher un message daide sur la sortie standard et terminer normalement.
version
Afficher un numro de version sur la sortie standard et terminer normalement.

COMPATIBILITE

Les implmentations historiques (BSD et System V) de sort diffrent dans leurs interprtations de certaines
options, notamment b, f , et n. La version GNU suit le comportement POSIX, qui est gnralement
(mais pas toujours) celui de la version System V. Suivant POSIX n nimplique plus obligatoirement b.
Pour assurer lhomognte, M a t modifie de la mme manire. Dans certains cas, assez obscurs, ceci
peut affecter la signification des positions de caractres dans les spcifications de champs. Si ceci vous

FSF

14 Janvier 1997

145

SORT(1)

Manuel de lutilisateur Linux

SORT(1)

perturbe, vous pouvez ajouter explicitement un b.

BUGS

Les diffrentes significations des numros de champs en fonction de lutilisation ou non de loption -k
induit une confusion certaine. Cest la faute POSIX !

TRADUCTION

Christophe Blaess, 1997.

146

14 Janvier 1997

FSF

ASCII(7)

NOM

Manuel de ladministrateur Linux

ASCII(7)

ascii Le jeu de caractres ASCII en octal, dcimal, et hexadcimal.

DESCRIPTION

ASCII est lacronyme de American Standard Code for Information Interchange. Il sagit dun code sur 7
bits. De nombreux codes sur 8 bits (tels que lISO 8859-1n le jeu de caractres par dfaut de Linux) contiennent lASCII dans leur premire moiti. Lquivalent international de lASCII est connu sous le nom de
ISO 646.
La table suivante contient les 128 caracteres ASCII.

Les squences dchappement \X pour les programmes C sont mentionnes.


Oct
000
001
002
003
004
005
006
007
010
011
012
013
014
015
016
017
020
021
022
023
024
025
026
027
030
031
032
033
034
035
036
037
040
041
042
043
044
045
046
047

Linux

Dec
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

Hex
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27

Car
NUL \0
SOH
STX
ETX
EOT
ENQ
ACK
BEL \a
BS \b
HT \t
LF \n
VT \v
FF \f
CR \r
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
SPACE
!
"
#
$
%
&

Oct
100
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
133
134
135
136
137
140
141
142
143
144
145
146
147

25 Janvier 1997

Dec
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

Hex
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
60
61
62
63
64
65
66
67

Car
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
\\
]

a
b
c
d
e
f
g

147

ASCII(7)

Manuel de ladministrateur Linux


050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F

(
)
*
+
,

.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?

150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
177

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

ASCII(7)
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F

h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}

DEL

HISTORIQUE

Une page de manuel ascii est apparue dans AT&T UNIX VERSION 7.

Sur les terminaux anciens, le code de soulignement (underscore) est affich sous forme de flche vers la
gauche (backarrow), laccent circonflexe (caret) est affich sous forme de flche vers le haut, et la barre verticale est interrompue en son centre.
Le standard ASCII a t publi par lUSASI (United States of America Standards Institute) en 1968.

VOIR AUSSI

iso_8859_1(7)

TRADUCTION

Christophe Blaess, 1997.

148

25 Janvier 1997

Linux

ISO_8859_1(7)

NOM

Manuel de ladministrateur Linux

ISO_8859_1(7)

iso_8859_1 Le jeu de caractres ISO 8859-1 en octal, dcimal et hexadcimal.

DESCRIPTION

Le standard ISO 8859 inclut plusieures extensions au jeu de caractres ASCII (ISO 646-IRV). Le jeu le
plus important est ISO 8859-1, lalphabet Latin numro 1, largement implment, et qui est devenu un
standard de-facto remplaant le standard ASCII.

Le standard ISO 8859-1 supporte les langages suivants : Afrikaans, Allemand, Anglais, Basque, Catalan,
Danois, Ecossais, Espagnol, Faeroese, Finois, Franais, Galique, Hollandais, Islandais, Irlandais, Italien,
Norvgien, Portugais, et Suedois.
Notez que le jeu de caractres ISO 8859-1 correspond aux 256 premiers caractres du standard ISO 10646
(Unicode).
Alphabets ISO 8859
lensemble complet dalphabets 8859 inclut :
ISO 8859-1
ISO 8859-2
ISO 8859-3
ISO 8859-4
ISO 8859-5
ISO 8859-6
ISO 8859-7
ISO 8859-8
ISO 8859-9
ISO 8859-10
ISO 8859-11
ISO 8859-13
ISO 8859-14
ISO 8859-15

Langues ouest-europennes (Latin-1)


Langues est-europennes (Latin-2)
Sud-Est europens et diverses langues (Latin-3)
Scandinavie/Baltique (Latin-4)
Latin/Cyrillique
Latin/Arabe
Latin/Grec
Latin/Hbreu
Latin-1 modifi pour le Turc (Latin-5)
Langages Lappon/Nordique/Eskimo (Latin-6)
Tha
Langues baltiques (Latin-7)
Celtique (Latin-8)
Langues ouest-europennes (Latin-9)

Caractres ISO 8859-1


La table suivante prsente les caractres du jeu ISO 8859 Latin-1, imprimables et non lists dans la page de
manuel ascii(7).
Oct
240
241
242
243
244
245
246
247
250
251
252
253
254
255
256
257
260
261

Linux

Dec
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

Hex
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
AA
AB
AC
AD
AE
AF
B0
B1

Car

Description
ESPACE INSCABLE
POINT DEXCLAMATION INVERS
SYMBOLE CENT
SYMBOLE LIVRE
SYMBOLE MONTAIRE
SYMBOLE YEN
BARRE INTERROMPUE
PARAGRAPHE
TRMA
SYMBOLE COPYRIGHT
FEMININE ORDINAL INDICATOR
GUILLEMET GAUCHE
SYMBOLE NGATION
TIRET
SYMBOLE REGISTERED
MACRON
DEGR
SYMBOLE PLUS OU MOINS

20 Octobre 1996

149

ISO_8859_1(7)
262
263
264
265
266
267
270
271
272
273
274
275
276
277
300
301
302
303
304
305
306
307
310
311
312
313
314
315
316
317
320
321
322
323
324
325
326
327
330
331
332
333
334
335
336
337
340
341
342
343
344
345
346

150

Manuel de ladministrateur Linux


178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230

B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
BC
BD
BE
BF
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB
DC
DD
DE
DF
E0
E1
E2
E3
E4
E5
E6

ISO_8859_1(7)

PUISSANCE DEUX
PUISSANCE TROIS
ACCENT AIGU
SYMBOLE MICRON
PILCROW SIGN
POINT CENTRAL
CEDILLE
PUISSANCE UN
MASCULINE ORDINAL INDICATOR
GUILLEMET DROIT
UN QUART
UN DEMI
TROIS QUARTS
POINT DINTERROGATION INVERS
A MAJUSCULE ACCENT GRAVE
A MAJUSCULE ACCENT AIGU
A MAJUSCULE ACCENT CIRCONFLEXE
A MAJUSCULE TILDE
A MAJUSCULE TRMA
A MAJUSCULE AVEC CERCLE
LIAISON AE MAJUSCULES
C CDILLE MAJUSCULE
E MAJUSCULE ACCENT GRAVE
E MAJUSCULE ACCENT AIGU
E MAJUSCULE ACCENT CIRCONFLEXE
E MAJUSCULE TRMA
I MAJUSCULE ACCENT GRAVE
I MAJUSCULE ACCENT AIGU
I MAJUSCULE CIRCONFLEXE
I MAJUSCULE TRMA
LATIN CAPITAL LETTER ETH
N MAJUSCULE TILDE
O MAJUSCULE ACCENT GRAVE
O MAJUSCULE ACCENT AIGU
O MAJUSCULE ACCENT CIRCONFLEXE
O MAJUSCULE TILDE
O MAJUSCULE TRMA
SYMBOLE MULTIPLICATION
O MAJUSCULE BARRE
U MAJUSCULE ACCENT GRAVE
U MAJUSCULE ACCENT AIGU
U MAJUSCULE ACCENT CIRCONFLEXE
U MAJUSCULE TRMA
Y MAJUSCULE ACCENT AIGU
LATIN CAPITAL LETTER THORN
SYMBOLE DOUBLE S
A MINUSCULE ACCENT GRAVE
A MINUSCULE ACCENT AIGU
A MINUSCULE ACCENT CIRCONFLEXE
A MINUSCULE TILDE
A MINUSCULE TRMA
A MINUSCULE AVEC CERCLE
LIAISON AE MINUSCULES

20 Octobre 1996

Linux

ISO_8859_1(7)
347
350
351
352
353
354
355
356
357
360
361
362
363
364
365
366
367
370
371
372
373
374
375
376
377

Manuel de ladministrateur Linux


231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

E7
E8
E9
EA
EB
EC
ED
EE
EF
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF

ISO_8859_1(7)

C CDILLE MINUSCULE
E MINUSCULE ACCENT GRAVE
E MINUSCULE ACCENT AIGU
E MINUSCULE ACCENT CIRCONFLEXE
E MINUSCULE TRMA
I MINUSCULE ACCENT GRAVE
I MINUSCULE ACCENT AIGU
I MINUSCULE ACCENT CIRCONFLEXE
I MINUSCULE TRMA
LATIN SMALL LETTER ETH
N MINUSCULE TILDE
O MINUSCULE ACCENT GRAVE
O MINUSCULE ACCENT AIGU
O MINUSCULE ACCENT CIRCONFLEXE
O MINUSCULE TILDE
O MINUSCULE TRMA
SYMBOLE DIVISION
O MINUSCULE BARRE
U MINUSCULE ACCENT GRAVE
U MINUSCULE ACCENT AIGU
U MINUSCULE ACCENT CIRCONFLEXE
U MINUSCULE TRMA
Y MINUSCULE ACCENT GRAVE
LATIN SMALL LETTER THORN
Y MINUSCULE TREMA

[NDT] Je ne connais pas le nom des symboles 170, 186, 208, 222, 240 et 254.

VOIR AUSSI

ascii(7)

TRADUCTION

Christophe Blaess, 1997.

Linux

20 Octobre 1996

151

INTRODUCTION()

152

INTRODUCTION()

Petit manuel Unix 2002

INDEX
a2ps anything to PostScript nimporte quoi en PostScript ............................................. 12
ae - ae - ae ............................................................................................................................. 57
ar archive archive ............................................................................................................ 12
arch architecture architecture ......................................................................................... 54
basename base name nom de base ................................................................................. 12
bc basic calculator calculette basique ............................................................................. 47
bzip2 bunzip2 compress compresse ............................................................................... 13
cal calendar calendrier .................................................................................................... 48
cat catenate concatner ................................................................................................... 13
cc C compiler compilateur C .......................................................................................... 27
cd change working Directory change le rpertoire de travail ......................................... 11
chgrp change group changer le groupe ........................................................................... 22
chmod change mode changer le mode ........................................................................... 22
chown change owner changer le propritaire ................................................................. 22
cl common lisp lisp commun .......................................................................................... 27
comm common commun ................................................................................................ 13
compress uncompress zcat compress compresse ........................................................... 14
convert convert image format convertir des formats dimages ....................................... 14
cp copy copier ................................................................................................................ 14
cplus-dem C++ demangler dmangleur C++ .............................................................. 31
cpp C language preprocessor pr-processeur de langage C ........................................... 30
cut cut couper ................................................................................................................. 15
date date date .................................................................................................................. 41
df disk space on filesystems espace disque des systmes de fichiers ............................. 24
diff differences diffrences ............................................................................................. 15
doxygen documentatin generator gnrateur de documentation .................................... 31
du disk usage usage disque ............................................................................................. 24
echo echo cho ............................................................................................................... 38
emacs - emacs - emacs .......................................................................................................... 57
expand expand expanser ................................................................................................. 15
expr expression expression ............................................................................................ 48
f77 fortan 77 fortran 77 .................................................................................................. 28
file file fichier .................................................................................................................. 41
find find trouver .............................................................................................................. 24
free free memory mmoire libre ..................................................................................... 54
ftp file transfer program programme de transfert de fichier ........................................... 53
gdb gnu debugger dbogueur de gnu .............................................................................. 31
gprof graph profile profileur graphique .......................................................................... 32
grep global regexp print imprime un expresion rgulire .............................................. 32
groff - groff - groff ................................................................................................................ 63
gzip gunzip zcat compress compresse ............................................................................ 16
head head tte ................................................................................................................. 16
host host hte .................................................................................................................. 54
hugs hugs hugs ............................................................................................................... 28
id identifier identifiant .................................................................................................... 41
indent indent indenter ..................................................................................................... 33
javac java compiler compilateur de java ......................................................................... 28
javadoc java documentatin documentation java ............................................................. 33
kill kill tuer ..................................................................................................................... 38
killall kill all tuer les tous ............................................................................................... 39
latex latex latex ............................................................................................................... 65
ld link editor diteur de liens .......................................................................................... 33
ldd shared libraries dependencies dpendances par rapport aux bibliothques partages 34
lint C program checker vrificateur de sources C .......................................................... 34

Petit manuel Unix 2001

153

INDEX
ln link lier ....................................................................................................................... 22
locate locate localiser ..................................................................................................... 25
login login connexion ..................................................................................................... 6
lpr off line printer impression en diffr ........................................................................ 17
ls list lister ...................................................................................................................... 41
lsof list open files liste des fichiers ouverts .................................................................... 54
mail mail courrier ........................................................................................................... 51
make make fabriquer ...................................................................................................... 34
man manuel manuel ........................................................................................................ 49
mesg message message .................................................................................................. 51
mkdir make directory cration de rpertoire .................................................................. 11
more more and more de plus en plus .............................................................................. 17
mv move dplacer ........................................................................................................... 23
netstat net statistics statistiques rseau ........................................................................... 55
nice nice mignon ............................................................................................................ 39
nm name nom ................................................................................................................. 35
nohup no hangup ne pas raccrocher ............................................................................... 39
od octal dump impression en octal ................................................................................. 35
passwd password mot de passe ...................................................................................... 7
paste paste coller ............................................................................................................ 18
patch patch rustine .......................................................................................................... 36
pc pascal compiler compilateur pascal ........................................................................... 28
perfmeter performance meter mesure de performance ................................................... 55
perl practical extraction and report language perle ........................................................ 28
php php php .................................................................................................................... 28
pr print imprimer ............................................................................................................ 18
prof profile profil ............................................................................................................ 36
ps process status statut des processus ............................................................................. 42
pwd print working directory imprime le rpertoire de travail ........................................ 45
python python python ..................................................................................................... 29
ranlib make a random library fabriquer une bibliothque .............................................. 36
recode recode text file recoder des fichiers texte ............................................................ 19
rm remove enlever .......................................................................................................... 23
rmdir remove directory destruction de rpertoire ........................................................... 11
rup remote time up temps de marche distant .................................................................. 55
rusers remote users utilisateurs distants ......................................................................... 45
scp secure copy copie sre ............................................................................................. 10
script script script ........................................................................................................... 39
sftp secure file transfer program programme de transfert scuris de fichier ................ 53
size size taille .................................................................................................................. 36
sleep sleep dormir ........................................................................................................... 39
sox sound exchange conversion de fichiers son ............................................................. 19
split split dcouper un fichier ......................................................................................... 19
ssh OpenSSH secure shell client shell de scurit distance ......................................... 8
strace system call trace trace des appels systmes ......................................................... 36
strip strip enlever ............................................................................................................ 37
stty set terminal type positionner des options de terminal ............................................. 6
tail tail queue .................................................................................................................. 20
talk talk parler ................................................................................................................. 51
tar tape archive archive sur bande .................................................................................. 20
tee tee t .......................................................................................................................... 20
test test tester .................................................................................................................. 50
time time temps .............................................................................................................. 37
top top dessus ................................................................................................................. 55

154

Petit manuel Unix 2001

INDEX
touch touch touche ..........................................................................................................
tr translate remplace .......................................................................................................
tty terminal terminal .......................................................................................................
uname name of current system nom du systme ...........................................................
uniq unique unique .........................................................................................................
uptime time up temps de marche ....................................................................................
users users utilisateurs ....................................................................................................
vi - visual editor - diteur visuel ...........................................................................................
vmstat virtual memory statistics statistique de la mmoire virtuelle .............................
w who and what qui et quoi ............................................................................................
wc word count compte de mots ......................................................................................
web browsers navigateurs web ....................................................................................
whereis where is o est-ce ..............................................................................................
which which lequel .........................................................................................................
who who qui ...................................................................................................................
write write crire ............................................................................................................

23
16
45
56
21
56
45
61
56
45
21
53
26
26
46
51

En fin de document se trouvent les documentations des commandes suivantes extraites du manuel GNU :
bash Bourne again shell encore la coquille bourne
ed editor diteur
gawk la version GNU du langage dAho, Weinberger et Kernighan
join join joindre
sed stream editor diteur de flot
sort sort trier
Et enfin les deux pages de manuel dcrivant les jeux de caractres ascii et iso-8859-1.

Petit manuel Unix 2001

155