Académique Documents
Professionnel Documents
Culture Documents
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()
INTRODUCTION
NOM
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
INTRODUCTION
DITEURS DE TEXTES
ae emacs vi
COMPOSEURS DE TEXTES
groff latex
OUTILS GRAPHIQUES
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).
NOM
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
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
vitesse
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
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
-isig
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.
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.
ACCS EN RSEAU
NOM
SYNTAXE
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
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.
ACCS EN RSEAU
NOM
SYNTAXE
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
MANIPULATION DE RPERTOIRES
NOM
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
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
SYNTAXE
rmdir rpertoire
DESCRIPTION
Dtruit un rpertoire. Ce dernier doit tre vide (plus exactement, ne contenir que les deux entres . et ..).
11
MANIPULATION DE FICHIERS
NOM
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
-s 2
-Elangage
force le langage du fichier. Utiliser -Etext pour imprimer du source HTML et -Ejava pour du
source PHP.
-Lnombre
-lnombre
ar archive archive
SYNTAXE
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.
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.
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.
NOM
SYNTAXE
12
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
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
SYNTAXE
DESCRIPTION
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
SYNTAXE
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.
13
MANIPULATION DE FICHIERS
NOM
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
SYNTAXE
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
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
MANIPULATION DE FICHIERS
NOM
SYNTAXE
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
SYNTAXE
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
SYNTAXE
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. .
NOM
SYNTAXE
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
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
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
MANIPULATION DE FICHIERS
NOM
SYNTAXE
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
SYNTAXE
more fichiers
DESCRIPTION
more affiche de faon interactive les fichiers donns en arguments cran par cran. Les principales commandes sont :
17
MANIPULATION DE FICHIERS
ESPACE
RC
/modle
reprend laffichage sur lcran commenant deux lignes avant la ligne contenant une expression
correspondant au modle.
b ou B
:p
:n
sort de more
aide en ligne
Note : La commande GNU less, malgr son nom peut en faire plus :-).
NOM
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
+n
commence la page n.
-t
-sc
-m
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
MANIPULATION DE FICHIERS
NOM
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 é, 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
SYNTAXE
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
SYNTAXE
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
19
MANIPULATION DE FICHIERS
NOM
SYNTAXE
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
SYNTAXE
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
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
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
SYNTAXE
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
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.
21
NOM
SYNTAXE
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
SYNTAXE
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
SYNTAXE
DESCRIPTION
NOM
ln link lier
SYNTAXE
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
NOM
mv move dplacer
SYNTAXE
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.
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
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.
23
PARCOURS DE HIRARCHIE
NOM
SYNTAXE
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
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
SYNTAXE
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
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
-user utilisateur
-size n
-atime n
-mtime n
-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.
toujours vrai. A comme effet dimprimer le nom du fichier examin (est sous-entendu
avec GNU).
-newer 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
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.
25
PARCOURS DE HIRARCHIE
NOM
SYNTAXE
whereis commandes
DESCRIPTION
NOM
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
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
-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
-pipe
NOM
SYNTAXE
cl
gcl
DESCRIPTION
27
LANGAGES
NOM
SYNTAXE
f77 ...
g77 ...
DESCRIPTION
Compilateur fortran 77. Non disponible en standard. g77 est la version de gcc qui comprend le fortran.
NOM
SYNTAXE
hugs ...
DESCRIPTION
NOM
SYNTAXE
javac fichiers
DESCRIPTION
NOM
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
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
SYNTAXE
php4 [ fichier ]
28
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
SYNTAXE
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.
29
OUTILS DE DVELOPPEMENT
NOM
SYNTAXE
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.
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
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.
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
SYNTAXE
doxygen
DESCRIPTION
Ce programme permet de gnrer de la documentation de programmes C++ un peu comme javadoc fait
avec des programmes Java.
NOM
SYNTAXE
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
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 ]
bt
where
idem.
print expression
next
step [n]
info break
delete numro
tbreak [fichier:]num_ligne
pose un point darrt temporaire, cest--dire valable que pour une seule fois.
display expression
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
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
SYNTAXE
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
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
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
SYNTAXE
javadoc
DESCRIPTION
Ce programme permet de gnrer de la documentation de programmes Java un peu comme doxygen fait
avec des programmes C++.
NOM
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
33
OUTILS DE DVELOPPEMENT
NOM
-Bstatic
-shared
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
SYNTAXE
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
SYNTAXE
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
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
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
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 ASCII. Les caractres non affichables sont donns comme trois chiffres octal
ou comme caractre dchappement du langage C.
35
OUTILS DE DVELOPPEMENT
NOM
SYNTAXE
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
SYNTAXE
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
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
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
SYNTAXE
36
OUTILS DE DVELOPPEMENT
DESCRIPTION
strace va lancer la ligne de commande et tracer chaque appel systme avec leurs arguments et leur code
retour.
NOM
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
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.
37
EXCUTION DE PROGRAMMES
NOM
SYNTAXE
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
SYNTAXE
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
EXCUTION DE PROGRAMMES
NOM
SYNTAXE
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
SYNTAXE
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
SYNTAXE
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
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
SYNTAXE
sleep temps
DESCRIPTION
On peut utiliser sleep pour excuter une commande aprs un certain temps :
{ sleep 500; commande } &
ou pour excuter une commande priodiquement :
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
DEMANDES DTATS
NOM
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
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
-C
-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
-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.
41
DEMANDES DTATS
-m
-n
identique loption -l lexception du nom du crateur et de son groupe, qui ont remplacs par leurs
numros (UID et GID).
-R
-r
-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
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
-d
description de tous les processus, excepts les processus pres dun groupe de processus.
-a
-f
-l
-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)
DEMANDES DTATS
attente, 10 : en cours de "swapping".
S
(l)
UID
(f,l)
numro dutilisateur du propritaire. Sans loption -f, celui-ci est remplac par le
nom de lutilisateur.
PID
()
PPID
(f,l)
(f,l)
utilisation du processeur.
PRI
(l)
NI
(l)
ADDR
(l)
SZ
(l)
WCHAN
(l)
STIME
(f)
TTY
()
TIME
()
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
43
DEMANDES DTATS
<
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.
-x
-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
NI
SZ
44
SIZE
RSS
LIM
%MEM
RE
SL
PAGEIN
UID
identifiant de lutilisateur.
PPID
SID
PGID
TPGID
DEMANDES DTATS
NOM
CP
PRI
START
WCHAN
SYNTAXE
pwd
DESCRIPTION
NOM
SYNTAXE
rusers
DESCRIPTION
Donne le nom de login des utilisateurs connects sur les machines du rseau local.
NOM
SYNTAXE
tty
DESCRIPTION
NOM
SYNTAXE
users
DESCRIPTION
NOM
SYNTAXE
w [utilisateur]
DESCRIPTION
w fait un rsum de lutilisation du systme. Si utilisateur est prcis, seule son activit est rapporte.
45
DEMANDES DTATS
NOM
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
DIVERS
NOM
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
Expressions
Un nom
Un nombre de longueur quelconque
( expression )
sqrt( expression )
length( expression )
scale( expression )
l( expression, expression, ...)
Oprateurs
+ - * / %
++ -== <= >= != < >
= += -= *= /= %= =
Instructions
Dfinition de fonction
define l (l, ..., l ) {
auto l, ...,l
instruction; ... instruction
return( expression )
}
47
DIVERS
NOM
SYNTAXE
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
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
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
expr $VAR : .*
SYNTAXE
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 jeux.
Exemples, man(1)
du manuel :
$ man
$ man
$ man
dcrit la commande man, alors que man(7) dcrit le paquetage de macros de formatage
man
7 man
-s 7 man
49
DIVERS
NOM
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
-w fichier
-x fichier
-f fichier
-d fichier
-s fichier
-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
-n c1
c1 = c2
c1 != c2
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 "\"
50
NOM
SYNTAXE
mail adresse-email
mail
DESCRIPTION
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
SYNTAXE
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
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
SYNTAXE
51
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
OUTILS RSEAUX
NOM
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
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.
53
NOM
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
SYNTAXE
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
SYNTAXE
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
SYNTAXE
lsof
DESCRIPTION
lofs affiche les fichiers ouverts de chaque processus sous forme dun tableau de 9 colonnes :
54
COMMAND
PID
USER
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
NOM
SIZE
NODE
NAME
SYNTAXE
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
-g
-i
NOM
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
SYNTAXE
rup [machines]
DESCRIPTION
NOM
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.
55
NOM
SYNTAXE
uname [-snrvma]
DESCRIPTION
uname affiche des informations concernant la machine et le systme dexploitation sur lequel il est
invoqu. Les options :
-s --sysname
-n --nodename
-r --release
-v
affiche la version du systme dexploitation (celui de la commande est affich par --version).
-m --machine
-a --all
NOM
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
SYNTAXE
DESCRIPTION
vmstat affiche des statistiques dutilisation de la machine un certain nombre de fois et tous les dlais secondes.
56
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 :
X I XW
XC Q
M XV
XH
L
typed keys
[
_
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
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).
57
DITEURS DE TEXTES
Liste des menus de base
Item
Raccourcis
C-x C-b
Files->Open File
Files->Open Directory
Files->Save Buffer
Files->Save Buffer As
C-x
C-x
C-x
C-x
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
CC-w
C-y
C-espace
C-s
C-r
C-s
C-r
MAide en ligne
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
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
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
,
!
RETURN
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
C-x
C-x
C-x
C-x
C-x
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
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
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
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
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
=
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
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
COMPOSEURS DE TEXTES
NOM
SYNTAXE
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
.ce n
.sp n
.ta i1 i2 . . .
Dfinit les nouveaux taquets de tabulation qui sont utiliss pour interprter le caractre de tabulation (ascii 9 ou 011).
.ul n
.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
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
Italiques
.IB
.IR
.SB
.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
.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
.PP
Nouveau paragraphe.
.RE
.RS
.SS t
.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
COMPOSEURS DE TEXTES
NOM
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.
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
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.
69
OUTILS GRAPHIQUES
70
OUTILS GRAPHIQUES
71
BASH(1)
NOM
BASH(1)
SYNOPSIS
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)
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
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)
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.
74
2 Octobre 1997
FSF
BASH(1)
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)
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)
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
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)
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)
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)
BASH(1)
La seule exception cette rgle est lexpansion de $@ comme on la vu plus haut (voir le paragraphe
PARAMTRES).
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)
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)
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)
BASH(1)
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)
BASH(1)
&>mot
>&mot
FSF
2 Octobre 1997
85
BASH(1)
BASH(1)
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)
BASH(1)
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)
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.
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)
BASH(1)
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.
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)
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)
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)
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
92
2 Octobre 1997
FSF
BASH(1)
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)
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)
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)
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)
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
Modificateurs
Aprs lventuel indicateur de mot, vous pouvez ajouter une squence de modificateurs, chacun prcd par
un :.
h
r
e
FSF
2 Octobre 1997
97
BASH(1)
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.
: [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)
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.
FSF
2 Octobre 1997
99
BASH(1)
cd [rep]
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.
100
2 Octobre 1997
FSF
BASH(1)
BASH(1)
FSF
2 Octobre 1997
101
BASH(1)
BASH(1)
102
2 Octobre 1997
FSF
BASH(1)
BASH(1)
FSF
2 Octobre 1997
103
BASH(1)
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.
104
2 Octobre 1997
FSF
BASH(1)
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)
BASH(1)
ignoreeof
t
u
v
x
l
d
C
H
P
106
2 Octobre 1997
FSF
BASH(1)
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)
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.
108
2 Octobre 1997
FSF
BASH(1)
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)
BASH(1)
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)
BASH(1)
VOIR AUSSI
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
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
FSF
2 Octobre 1997
111
BASH(1)
BASH(1)
TRADUCTION
112
2 Octobre 1997
FSF
ED(1)
NAME
ED(1)
SYNOPSIS
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
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 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
+
+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
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\}
\<
\>
The following extended operators are preceded by a backslash (\) to distinguish them from traditional ed
syntax.
\
\
116
\?
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
\w
\W
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.
(.)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.
($)=
(.+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
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)
SYNOPSIS
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
122
Apr 28 1999
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
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.
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).
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
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
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
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
FS
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
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
NR
OFMT
OFS
ORS
RS
RT
The record terminator. Gawk sets RT to the input text that matched the character or regular expression specified by RS.
RSTART
RLENGTH
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
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).
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
Apr 28 1999
127
GAWK(1)
Utility Commands
GAWK(1)
\c
[abc...]
r1r2
r+
r*
r?
(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
\<
\>
\w
\W
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
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:]
[: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
Apr 28 1999
129
GAWK(1)
Utility Commands
GAWK(1)
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.
++
130
Exponentiation (** may also be used, and **= for the assignment operator).
+!
*/%
space
String concatenation.
<>
<= >=
!= ==
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
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)
getline
getline var
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.
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.
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.
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.
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
%e
%E
A floating point number of the form []d.dddddde[+ ]dd. The %E format uses E instead of e.
%f
%g
%G
%o
%s
A character string.
%x
%X
An unsigned hexadecimal number (an integer). %X format uses ABCDEF instead of abcdef.
%%
There are optional, additional parameters that may lie between the % and the control letter:
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
GAWK(1)
Utility Commands
GAWK(1)
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
cos(expr)
exp(expr)
int(expr)
truncates to integer.
log(expr)
rand()
sin(expr)
sqrt(expr)
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])
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)
length([s])
match(s, r)
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.
sub(r, s [, t])
just like gsub(), but only the first matching substring is replaced.
substr(s, i [, n])
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
Apr 28 1999
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 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 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)
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
Apr 28 1999
135
GAWK(1)
Utility Commands
GAWK(1)
{ print $1 | "sort" }
Count lines in a file:
END
{ nlines++ }
{ print nlines }
SEE ALSO
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
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
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.
Apr 28 1999
137
GAWK(1)
Utility Commands
GAWK(1)
VERSION INFORMATION
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
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
JOIN(1)
NOM
JOIN(1)
SYNOPSIS
DESCRIPTION
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)
JOIN(1)
version
Afficher un numro de version sur la sortie standard et terminer normalement.
TRADUCTION
140
12 Janvier 1997
FSF
SED(1)
NAME
SED(1)
SYNOPSIS
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
-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).
}
i\
text
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 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
gG
nN
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
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/
\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
SORT(1)
SYNOPSIS
DESCRIPTION
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)
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.
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)
SORT(1)
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
146
14 Janvier 1997
FSF
ASCII(7)
NOM
ASCII(7)
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.
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)
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
148
25 Janvier 1997
Linux
ISO_8859_1(7)
NOM
ISO_8859_1(7)
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
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
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
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
Linux
20 Octobre 1996
151
INTRODUCTION()
152
INTRODUCTION()
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
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
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.
155