Provided by:
manpages-fr-extra_20101103_all 
NOM
bash - Interpreteur de commandes GNU Bourne-Again SHell
SYNOPSIS
bash [options] [fichier]
COPYRIGHT
Bash is Copyright (C) 1989-2009 by the Free Software Foundation, Inc.
DESCRIPTION
Bash est un interpreteur de commandes (shell) compatible sh qui execute
les commandes lues depuis l'entree standard ou depuis un fichier. Bash
inclut aussi des fonctionnalites utiles des interpreteurs de commandes
Korn et C (ksh et csh).
Bash vise a etre une implementation conforme a la partie relative aux
interpreteurs de commandes et utilitaires des specifications IEEE POSIX
(norme IEEE 1003.1). Bash peut etre configure pour etre conforme aux
specifications POSIX par defaut.
OPTIONS
En plus des options d'interpreteur monocaracteres documentees dans la
description de la commande interne set, bash accepte les options
suivantes lors de son appel :
-c cha^ine Si l'option -c est presente, les commandes sont lues depuis
la cha^ine fournie. S'il y a des arguments apres la cha^ine,
ils sont affectes aux parametres positionnels, en commencant
par $0.
-i Si l'option -i est presente, l'interpreteur est interactif.
-l Faire que bash se comporte comme s'il avait ete appele comme
interpreteur de commandes de connexion (voir APPEL plus bas).
-r Si l'option -r est presente, l'interpreteur devient restreint
(voir INTERPR'ETEUR RESTREINT plus bas).
-s Si l'option -s est presente ou s'il ne reste plus d'argument
apres le traitement des options, alors les commandes sont
lues depuis l'entree standard. Cette option permet d'affecter
les parametres positionnels tout en appelant un interpreteur
interactif.
-D Une liste de toutes les chaines entre guillemets doubles
precedees de $ est affichee sur la sortie standard. Ce sont
les chaines qui sont sujettes a une traduction quand le
parametre linguistique regional n'est ni C ni POSIX. Cela
implique l'option -n ; aucune commande ne sera executee.
[-+]O [option_shopt]
option_shopt est une des options de l'interpreteur acceptees
par la commande interne shopt (voir COMMANDES INTERNES DE
L'INTERPR'ETEUR plus bas). Si option_shopt est presente, -O
cree cette option ; +O la detruit. Si option_shopt n'est pas
fournie, les noms et valeurs des options de l'interpreteur
acceptees par shopt sont affiches sur la sortie standard. Si
l'option d'appel est +O, la sortie est affichee dans un
format reutilisable en entree.
-- Deux caracteres -- indiquent la fin des options et
desactivent le traitement des arguments. Tous les arguments
apres le -- sont traites comme des noms de fichiers et
parametres. - est equivalent a --.
Bash reconnait egalement plusieurs options multicaracteres. Ces options
doivent, pour etre reconnues, apparaitre sur la ligne de commande avant
les options monocaracteres.
--debugger
Prend les dispositions pour que le parametrage du tracage soit
execute avant que l'interpreteur demarre. Enclenche le mode de
tracage etendu (voir plus bas la description de l'option
extdebug de la commande interne shopt) et le tracage des
fonctions de l'interpreteur (voir plus bas la description de
l'option -o functrace de la commande interne set).
--dump-po-strings
Equivalent a -D, mais la sortie est dans le format des fichiers
po (objets portables) de l'outil GNU gettext.
--dump-strings
Equivalent a -D.
--help Affiche un message d'aide sur la sortie standard et termine avec
succes.
--init-file fichier
--rcfile fichier
Executer les commandes contenues dans fichier plutot que celles
du fichier d'initialisation commun a tout le systeme
/etc/bash.bashrc et que le fichier d'initialisation personnel
standard ~/.bashrc si l'interpreteur est interactif (voir APPEL
plus bas).
--login
Equivalent a -l.
--noediting
Ne pas utiliser la bibliotheque GNU readline pour lire les
lignes de commande, lorsque l'interpreteur est interactif.
--noprofile
Ne lire ni le fichier de configuration generale /etc/profile ,
ni les fichiers d'initialisation personnels ~/.bash_profile,
~/.bash_login ou ~/.profile. Par defaut, bash lit ces fichiers
lorsqu'il est appele comme interpreteur de commandes de
connexion (voir APPEL plus bas).
--norc Ne pas lire ou executer le fichier de configuration commun a
tout le systeme /etc/bash.bashrc, ni le fichier personnel
d'initialisation ~/.bashrc lorsque l'interpreteur est
interactif. Cette option est activee par defaut si
l'interpreteur est appele sous le nom sh.
--posix
Aligner le comportement de bash sur le standard POSIX, en ce qui
concerne les options dont l'action par defaut differe de ce
standard (mode posix).
--restricted
L'interpreteur devient restreint (voir INTERPR'ETEUR RESTREINT
plus bas).
--verbose
Equivalent a -v.
--version
Affiche le numero de version de bash sur la sortie standard et
termine avec succes.
ARGUMENTS
S'il reste des arguments sur la ligne de commande apres traitement des
options et que ni l'option -c, ni l'option -s n'ont ete fournies, le
premier argument est suppose etre le nom du fichier dans lequel lire
les commandes d'interpreteur. Si bash est appele de cette facon, le nom
du ficher est affecte a $0 et les arguments restants aux autres
parametres positionnels. Bash lit et execute les commandes depuis ce
fichier, puis termine. L'etat final de bash est l'etat final de la
derniere commande executee dans le script. Si aucune commande n'a ete
executee, l'etat final est 0. Une tentative est d'abord faite de
trouver le fichier dans le repertoire courant et, si aucun fichier
n'est trouve, l'interpreteur cherche le script dans les repertoires
contenus dans PATH.
APPEL
Un interpreteur de commandes est dit de connexion (login shell) si le
premier caractere de son argument numero zero est un - ou s'il est
appele avec l'option --login.
Un interpreteur est interactif s'il est appele sans argument autre que
des options et sans l'option -c, dont l'entree standard et sa sortie
d'erreur sont toutes deux connectees a des terminaux (comme determine
par la fonction isatty(3)) ou s'il est appele avec l'option -i. PS1
est creee et $- contient la lettre i si bash est interactif, ce qui
permet a un script ou a un fichier de demarrage de tester cet etat.
Le paragraphe suivant decrit comment bash execute ses fichiers
d'initialisation. Si un de ces fichiers existe mais n'est pas
accessible en lecture, bash signale une erreur. Les tildes sont
remplaces par des noms de fichiers comme decrit plus bas dans
D'eveloppement du tilde dans le paragraphe D'EVELOPPEMENTS.
Lorsque bash est lance comme interpreteur de commandes de connexion
interactif ou comme interpreteur non interactif avec l'option --login,
il lit et execute tout d'abord les commandes se trouvant dans le
fichier /etc/profile si ce fichier existe. Apres lecture de ce fichier,
il recherche ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet
ordre, puis lit et execute les commandes se trouvant dans le premier
fichier existant et accessible en lecture. L'option --noprofile peut
etre utilisee a l'appel de l'interpreteur pour empecher ce
comportement.
Lorsqu'un interpreteur de commandes de connexion termine, bash lit et
execute les commandes du fichier ~/.bash_logout, s'il existe.
Quand un interpreteur interactif demarre sans etre un interpreteur de
commandes de connexion, bash lit et execute les commandes se trouvant
dans /etc/bash.bashrc et ~/.bashrc s'ils existent. Ce comportement peut
etre empeche a l'aide de l'option --norc. L'option --rcfile fichier
forcera bash a lire et executer les commandes dans fichier plutot que
dans /etc/bash.bashrc et ~/.bashrc.
Quand bash est demarre de facon non interactive, par exemple pour
lancer un script, il consulte la variable BASH_ENV dans
l'environnement, developpe son contenu si elle existe et considere
cette valeur comme le nom d'un fichier a lire et executer. Bash se
comporte comme si la commande suivante etait executee :
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
mais la valeur de la variable PATH n'est pas utilisee pour rechercher
le fichier.
Si bash est appele sous le nom sh, il essaye d'imiter le comportement
de demarrage des versions historiques de sh aussi fidelement que
possible, tout en restant conforme aux specifications POSIX. Lorsqu'il
est appele comme interpreteur de commandes de connexion interactif ou
non interactif avec l'option --login, il essaye d'abord de lire et
executer, dans cet ordre, les commandes de /etc/profile puis de
~/.profile. L'option --noprofile peut etre utilisee pour empecher ce
comportement. Quand il est appele en tant qu'interpreteur interactif
sous le nom sh, bash consulte la variable ENV, developpe sa valeur si
elle est definie et utilise le resultat en tant que nom de fichier a
lire et executer. Comme un interpreteur appele sous le nom sh n'essaye
ni de lire, ni d'executer des commandes d'un autre fichier de
demarrage, l'option --rcfile n'a aucun effet. Un interpreteur non
interactif appele sous le nom sh n'essaie de lire aucun autre fichier
d'initialisation. Quand il est appele sous le nom sh, bash entre en
mode posix apres avoir lu les fichiers d'initialisation.
Quand bash est appele en mode posix comme avec l'option --posix sur la
ligne de commande, il suit le standard POSIX pour les fichiers de
demarrage. Dans ce mode, les interpreteurs interactifs developpent la
variable ENV et les commandes sont lues et executees a partir du
fichier dont le nom est la valeur developpee. Aucun autre fichier
d'initialisation n'est lu.
Bash tente de determiner s'il est execute avec son entree standard
relie a une connexion reseau, comme par le demon lancant les
interpreteurs de commandes distants, generalement rshd, ou le demon de
shell securise sshd. Si bash conclut qu'il est execute de cette facon,
il lit et execute les commandes de /etc/bash.bashrc et ~/.bashrc si ces
fichiers existent et sont accessibles en lecture. Il n'a pas ce
comportement lorsqu'il est appele sous le nom sh. L'option --norc peut
etre utilisee pour empecher ce comportement et l'option --rcfile peut
etre utilisee pour forcer la lecture d'un autre fichier, mais rshd
n'appelle generalement pas l'interpreteur avec ces options ni ne permet
de les indiquer.
Si l'interpreteur est lance avec un identifiant (de groupe)
d'utilisateur effectif different de l'identifiant (de groupe)
d'utilisateur reel et si l'option -p n'est pas fournie, aucun fichier
d'initialisation n'est lu, les fonctions de l'interpreteur ne sont pas
importees depuis l'environnement, les variables SHELLOPTS, BASHOPTS,
CDPATH, et GLOBIGNORE, si presentes dans l'environnement, sont
ignorees, et l'identifiant de l'utilisateur effectif est configure a
celui de l'utilisateur reel. Si l'option -p est fournie a l'appel, le
comportement au demarrage est le meme mais l'identifiant d'utilisateur
effectif n'est pas modifie.
D'EFINITIONS
Les definitions suivantes sont utilisees dans toute la suite ce
document.
blanc Une espace ou une tabulation.
mot Une suite de caracteres consideree comme une unite elementaire
par l'interpreteur. On parle egalement de lex`eme (<< token >>).
nom Un mot ne contenant que des caracteres alphanumeriques ou tirets
bas (<< underscore >>), commencant par une lettre ou un tiret
bas. On s'y refere egalement sous le terme identificateur.
m'etacaract`ere
Un caractere qui, non protege, separe les mots. Un de ceux-ci :
| & ; ( ) < > space tab
op'erateur de contr^ole
Un lex`eme ayant une fonction de controle. C'est l'un des
symboles suivants :
|| & && ; ;; ( ) | |& <newline>
MOTS R'ESERV'ES
Les mots r'eserv'es sont des mots qui ont une signification speciale pour
l'interpreteur. Les mots suivants sont reconnus comme reserves
lorsqu'ils ne sont pas proteges et sont soit le premier mot d'une
commande simple (voir GRAMMAIRE DE L'INTERPR'ETEUR plus bas) soit le
troisieme mot d'une commande case ou for :
! case do done elif else esac fi for function if in select then until
while { } time [[ ]]
GRAMMAIRE DE L'INTERPR'ETEUR
Commandes simples
Une commande simple est une suite d'affectations facultatives de
variables, suivie de mots separes par des blancs et de redirections, et
terminee par un op'erateur de contr^ole. Le premier mot indique la
commande a executer et est passe comme argument zero. Les mots restants
sont transmis comme arguments a la commande appelee.
La valeur renvoyee par une commande simple est son etat final ou 128+n
si la commande a ete terminee par le signal n.
Conduites
Une conduite (<< pipeline >>) est une suite d'une ou plusieurs
commandes separees par un des operateurs de controle | ou |&. Le format
d'une conduite est :
[time [-p]] [ ! ] commande_1 [ [|||&] commande_2 ... ]
La sortie standard de la commande_1 est connectee par un tube a
l'entree standard de la commande_2. Cette connexion est effectuee avant
toute redirection indiquee par la commande elle-meme (voir REDIRECTIONS
plus bas). Si |& est utilise, la sortie d'erreur standard de la
commande_1 est connectee a l'entree standard de la commande_2 dans le
tube ; c'est un raccourci pour 2>&1 |. Cette redirection implicite de
la sortie d'erreur standard est realisee apres toute redirection
precisee par la commande.
L'etat renvoye par une conduite est l'etat final de la derniere
commande, a moins que l'option pipefail soit activee. Si pipefail est
activee, l'etat renvoye par la conduite est la valeur de la derniere
commande (la plus a droite) a terminer avec un etat different de zero
ou zero si toutes les commandes se terminent avec succes. Si le mot
reserve ! precede une conduite, l'etat final de cette conduite sera la
negation logique de l'etat final tel que decrit plus haut.
L'interpreteur attend que toutes les commandes de la conduite soient
terminees avant de renvoyer une valeur.
Si le mot reserve time precede une conduite, les temps passes par le
programme en modes utilisateur et systeme sont indiques quand la
conduite se termine. L'option -p modifie le format de sortie pour celui
indique par POSIX. La variable TIMEFORMAT peut contenir une chaine de
format indiquant comment les informations de chronometrage doivent etre
affichees ; consultez plus bas la descriptions de TIMEFORMAT dans
Variables de l'interpr'eteur.
Chaque commande dans une conduite est executee comme un processus
independant (c'est-a-dire dans un sous-interpreteur).
Listes
Une liste est une suite d'une ou plusieurs conduites separees par l'un
des operateurs ;, &, && ou || et facultativement terminee par ;, & ou
<newline>.
Dans cette liste d'operateurs, && et || ont une priorite identique,
suivis par ; et &, qui ont egalement une priorite identique.
Une suite d'un ou plusieurs sauts de ligne peut apparaitre dans une
liste a la place d'un point-virgule pour delimiter les commandes.
Si une commande se termine par l'operateur de controle &,
l'interpreteur l'execute en arri`ere-plan, dans un sous-interpreteur.
L'interpreteur n'attend pas que la commande se termine et l'etat
renvoye est 0. Les commandes separees par un ; sont executees
successivement, l'interpreteur attend que chaque commande se termine
tour a tour. L'etat renvoye est l'etat final de la derniere commande
executee.
Les listes ET et OU sont des suites d'une ou plusieurs conduites
separees respectivement par les operateurs de controle && et ||. Les
listes ET et OU sont executees avec associativite a gauche. Une liste
ET est de la forme
commande_1 && commande_2
commande_2 est executee si, et seulement si, commande_1 renvoie un etat
final de zero.
Une liste OU a la forme
commande_1 || commande_2
commande_2 est executee si et seulement si commande_1 renvoie un etat
final different de zero. L'etat renvoye par des listes de ET et de OU
est l'etat final de la derniere commande executee dans la liste.
Commandes compos'ees
Une commande compos'ee est l'une des constructions suivantes :
(liste)
liste est executee dans un sous-interpreteur (voir ENVIRONNEMENT
D'EX'ECUTION DES COMMANDES plus bas). Les affectations de
variables et les commandes internes qui affectent
l'environnement de l'interpreteur n'ont pas d'effet une fois que
la commande se termine. L'etat renvoye est l'etat final de la
liste.
{ liste; }
liste est simplement executee avec l'environnement de
l'interpreteur en cours. liste doit se terminer par un caractere
de saut de ligne ou un point-virgule. Cette construction est
connue sous le nom de commandes group'ees. L'etat renvoye est
l'etat final de la liste. Remarquez que contrairement aux
metacaracteres ( et ), { et } sont des mots r'eserv'es qui ne
doivent apparaitre que la ou un mot reserve peut etre reconnu.
Puisqu'ils ne conduiront pas un decoupage en mots, ils doivent
etre separes de la liste par un blanc ou un autre metacaractere
de l'interpreteur.
((expression))
L'expression est evaluee selon les regles decrites plus bas dans
'EVALUATION ARITHM'ETIQUE. Si la valeur arithmetique de
l'expression est differente de zero, l'etat renvoye est 0 ;
sinon l'etat renvoye est 1. Ceci est exactement equivalent a let
"expression".
[[ expression ]]
Renvoie un etat de 0 ou 1 selon l'evaluation de la condition
expression. Les conditions sont composees de primitives decrites
plus bas dans CONDITIONS. Le decoupage en mots et le
developpement des chemins ne sont pas effectues sur les mots
entre [[ et ]] ; le developpement des tildes, des parametres,
des variables, le developpement arithmetique, la substitution de
commande et de processus, ainsi que la suppression des
protections sont effectues. Les operateurs conditionnels comme
-f ne doivent pas etre proteges afin d'etre reconnus comme
primitives.
Lorsqu'ils sont utilises avec [[, les operateurs < et >
ordonnent d'un point de vue lexicographique en utilisant les
parametres linguistiques regionaux courants.
Quand les operateurs == et != sont utilises, la chaine placee a
droite de l'operateur est consideree comme etant un motif dont
la correspondance est recherchee selon les regles decrites plus
bas dans Motifs g'en'eriques. Si l'option d'interpreteur
nocasematch est activee, la mise en correspondance est effectuee
sans tenir compte de la casse (difference majuscule/minuscule)
des caracteres alphabetiques. La valeur renvoyee est 0 si les
chaines correspondent (==), ou respectivement ne correspondent
pas (!=), au motif et 1 sinon. Toute partie du motif peut etre
protegee pour la forcer a correspondre en tant que chaine.
Un operateur binaire supplementaire, =~, est disponible, avec la
meme priorite que == et !=. Lorsqu'il est utilise, la chaine a
droite de l'operateur est consideree comme une expression
rationnelle etendue et est mise en correspondance en consequence
(comme avec regex(3)). La valeur renvoyee est 0 si la chaine
correspond au motif et 1 si elle ne correspond pas. Si
l'expression rationnelle n'est pas syntaxiquement correcte, la
valeur renvoyee de l'expression conditionnelle est 2. Si
l'option d'interpreteur nocasematch est activee, la mise en
correspondance est effectuee sans tenir compte de la casse.
Toute partie du motif peut etre protegee pour la forcer a
correspondre en tant que chaine. Les sous-chaines mises en
correspondance avec des sous-expressions entre parentheses dans
l'expression rationnelle sont sauvegardees dans la variable
tableau BASH_REMATCH. L'element d'indice 0 de BASH_REMATCH est
la partie de la chaine correspondant a l'expression rationnelle
complete. L'element d'indice n de BASH_REMATCH est la partie de
la chaine correspondant a la n-ieme sous-expression entre
parentheses.
Les expressions peuvent etre combinees en utilisant les
operateurs suivants, decrits par ordre de priorite
decroissante :
( expression )
Renvoie la valeur de l'expression. Cela peut etre utilise
pour surpasser la priorite normale des operateurs.
! expression
Vrai si expression est fausse.
expression1 && expression2
Vrai si expression1 et expression2 sont toutes les deux
vraies.
expression1 || expression2
Vrai si expression1 ou expression2 est vraie.
Les operateurs && et || n'evaluent pas expression2 si la valeur
de expression1 suffit a determiner la valeur renvoyee par la
condition tout entiere.
for nom [ [ in [ mot ... ] ] ; ] do liste ; done
La liste de mots suivant in est developpee, produisant une liste
d'elements. La variable nom prend tour a tour la valeur de
chacun des elements et liste est executee a chaque fois. Si in
mot est omis, la commande for execute la liste une fois pour
chacun des parametres positionnels existants (voir PARAM`ETRES
plus bas). L'etat renvoye est l'etat final de la derniere
commande executee. Si le developpement des elements suivant in
conduit a une liste vide, aucune commande n'est executee et
l'etat renvoye est 0.
for (( expr1 ; expr2 ; expr3 )) ; do liste ; done
L'expression arithmetique expr1 est d'abord evaluee selon les
regles decrites plus bas sous 'EVALUATION ARITHM'ETIQUE.
L'expression arithmetique expr2 est ensuite evaluee
repetitivement jusqu'a valoir zero. Chaque fois que expr2 est
evaluee en une valeur differente de zero, liste est executee et
l'expression arithmetique expr3 est evaluee. Si l'une des
expressions est omise, elle est consideree comme s'evaluant a 1.
La valeur renvoyee est l'etat final de la derniere commande dans
liste qui est executee ou faux si l'une des expressions est
incorrecte.
select nom [ in mot ] ; do liste ; done
La liste de mots a la suite de in est developpee, produisant une
liste d'elements. L'ensemble des mots developpes est imprime sur
la sortie d'erreur standard, chacun precede par un nombre. Si in
mot est omis, les parametres positionnels sont imprimes (voir
PARAM`ETRES plus bas). L'invite PS3 est affichee et une ligne est
lue depuis l'entree standard. Si la ligne est constituee d'un
nombre correspondant a l'un des mots affiches, alors ce mot est
affecte a la valeur de la variable nom. Si la ligne est vide,
les mots et l'invite sont affiches a nouveau. Si une fin de
fichier (EOF) est lue, la commande se termine. Toute autre
valeur lue conduit a mettre a vide la variable nom. La ligne lue
est conservee dans la variable REPLY. La liste est executee
apres chaque selection, jusqu'a ce qu'une commande break soit
atteinte. L'etat final de select est l'etat final de la derniere
commande executee dans la liste ou zero si aucune commande n'a
ete executee.
case mot in [ [(] motif [ | motif ] ... ) liste ;; ] ... esac
Une commande case commence d'abord par developper le mot, puis
essaye de le mettre en correspondance tour a tour avec chacun
des motifs en utilisant les memes regles que pour le
developpement des chemins (voir plus bas D'eveloppement des
chemins). Le mot est developpe en utilisant le developpement du
tilde, le developpement des parametres et des variables, la
substitution arithmetique, la substitution de commande, la
substitution de processus et la suppression des protections.
Chaque motif examine est developpe en utilisant le developpement
du tilde, le developpement des parametres et des variables, la
substitution arithmetique, la substitution de commande et la
substitution de processus. Si l'option d'interpreteur
nocasematch est activee, la mise en correspondance est effectuee
sans tenir compte de la casse des caracteres alphabetiques.
Quand une correspondance est trouvee, la liste associee est
executee. Des qu'un motif correct a ete trouve, il n'y a plus
d'autre essai si l'operateur ;; est utilise. Si ;& est utilise
au lieu de ;;, l'execution continue avec la liste associee au
jeu de motifs suivant. Si ;;& est utilise au lieu de ;;,
l'interpreteur essaye la liste de motifs suivant, si elle
existe, et execute toute liste associee a un motif
correspondant. L'etat final est zero si aucun motif ne
correspond. Sinon il est l'etat final de la derniere commande
executee dans la liste.
if liste; then liste; [ elif liste; then liste; ] ... [ else liste; ]
fi
La liste du if est executee. Si son etat final est zero, la
liste du then est executee. Sinon, chacune des listes des elif
est executee tour a tour et si son etat final est zero, la liste
du then associe est executee et la commande termine. Sinon, la
liste du else, si presente, est executee. L'etat final est
l'etat final de la derniere commande executee ou zero si aucune
condition n'a ete satisfaite.
while liste; do liste; done
until liste; do liste; done
La commande while repete la liste du do tant que la derniere
commande de la liste du while renvoie un etat final de zero. La
commande until est identique a la commande while, sauf que le
test est inverse ; la liste du do est executee tant que la
derniere commande de la liste renvoie un etat final different de
zero. L'etat final des commandes while et until est l'etat final
de la derniere commande executee dans la liste du do ou zero si
aucune commande n'a ete executee.
Coprocessus
Un coprocessus est une commande d'interpreteur precedee par le mot
reserve coproc. Un coprocessus est execute de facon asynchrone dans un
sous-interpreteur, comme si la commande se terminait par l'operateur de
controle &, avec un tube bidirectionnel etabli entre l'interpreteur
d'execution et le coprocessus.
Le format d'un coprocessus est :
coproc [NOM] commande [redirections]
Un coprocessus appele NOM est cree. Si NOM n'est pas fourni, le nom par
defaut est COPROC. NOM ne doit pas etre fourni si commande est une
commande simple (voir plus haut) ; sinon, il est interprete comme le
premier mot d'une commande simple. Quand le coprocessus est execute,
l'interpreteur cree une variable tableau (voir Tableaux plus bas)
appelee NOM dans le contexte de l'interpreteur d'execution. La sortie
standard de commande est connecte par un tube a un descripteur de
fichier dans l'interpreteur d'execution, et ce descripteur de fichier
est affecte a NOM[0]. L'entree standard de commande est connecte par un
tube a un descripteur de fichier dans l'interpreteur d'execution, et ce
descripteur de fichier est affecte a NOM[1]. Ce tube est etabli avant
toute redirection indiquee par la commande (voir REDIRECTIONS plus
bas). Les descripteurs de fichier peuvent etre utilises comme arguments
aux commandes d'interpreteur et redirections utilisant les
developpements standards de mot. L'identifiant du processus (PID) de
l'interpreteur engendre pour executer le coprocessus est disponible
comme valeur de la variable NAME_PID. La commande interne wait peut
etre utilisee pour attendre que le coprocessus soit termine.
L'etat renvoye d'un coprocessus est l'etat final de commande.
D'efinitions des fonctions de l'interpr'eteur
Une fonction de l'interpreteur est un objet qui est appele comme une
commande simple et qui execute une commande composee avec un nouveau
jeu de parametres positionnels. Les fonctions de l'interpreteur sont
declarees de la facon suivante :
[ function ] nom () commande-compos'ee [redirection]
Ceci definit une fonction possedant le nom mentionne. Le mot
reserve function est facultatif. S'il est fourni, les
parentheses sont facultatives. Le corps de la fonction est la
commande composee commande-compos'ee (voir Commandes compos'ees
plus haut). Cette commande est generalement une liste de
commandes entre { et }, mais peut etre n'importe quelle commande
decrite dans Commandes compos'ees plus haut. La commande-compos'ee
est executee chaque fois que nom est indique comme le nom d'une
commande normale. Toutes les redirections (voir REDIRECTIONS
plus bas) indiquees lorsqu'une fonction est definie sont
effectuees lorsque la fonction est executee. L'etat final d'une
definition de fonction est zero, a moins qu'une erreur de
syntaxe ne se produise ou qu'une fonction en lecture seule
n'existe deja avec le meme nom. Lorsque la fonction est
executee, l'etat final est celui de la derniere commande
executee dans le corps de la fonction (voir FONCTIONS plus bas).
COMMENTAIRES
Dans un interpreteur non interactif ou dans un interpreteur interactif
avec l'option interactive_comments activee par la commande interne
shopt (voir COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas), un mot
commencant par # conduit a ignorer ce mot et tous les caracteres
restants sur la ligne. Un interpreteur interactif sans l'option
interactive_comments n'autorise pas les commentaires. L'option
interactive_comments est activee par defaut dans les interpreteurs
interactifs.
PROTECTIONS
Les protections (<< quoting >>) permettent de forcer l'interpreteur a
ignorer la signification speciale de certains caracteres ou mots. Les
protections peuvent etre utilisees pour desactiver le traitement des
caracteres speciaux, eviter la reconnaissance des mots reserves ou
empecher le developpement des parametres.
Tous les m'etacaract`eres decrits plus haut dans D'EFINITIONS ont des
significations speciales pour l'interpreteur et doivent etre proteges
pour ne representer que leur propre caractere.
Lorsque les outils de developpement de l'historique des commandes sont
utilises (voir D'EVELOPPEMENT DE L'HISTORIQUE plus bas), le caractere de
d'eveloppement de l'historique, generalement !, doit etre protege pour
eviter le developpement de l'historique.
Il y a trois mecanismes de protection : le caractere d'echappement, les
guillemets simples (<< single quotes >>) et les guillemets doubles
(<< double quotes >>).
Le caract`ere d''echappement est une contre-oblique (\) non protegee. Il
preserve la valeur litterale du caractere qui le suit, a l'exception du
<newline>. Si un couple \<newline> apparait et si la contre-oblique
n'est pas elle-meme protegee, l'ensemble \<newline> est considere comme
une continuation de ligne (c'est-a-dire qu'il est supprime du flux
d'entree et ignore en pratique).
Encadrer des caracteres entre des guillemets simples preserve la valeur
litterale de chacun des caracteres entre guillemets simples. Un
guillement simple ne peut pas etre place entre deux guillemets simples,
meme s'il est precede d'une contre-oblique.
Encadrer des caracteres entre des guillemets doubles preserve la valeur
litterale de chacun des caracteres sauf $, `, \ et, lorsque le
developpement de l'historique est active, !. Les caracteres $ et `
conservent leurs significations speciales entre guillemets doubles. La
contre-oblique ne conserve sa signification speciale que lorsqu'elle
est suivie par l'un des caracteres suivants : $, `, ", \ ou <newline>.
Un guillemet double peut etre protege entre deux guillemets doubles en
le faisant preceder d'une contre-oblique. S'il est active, le
developpement de l'historique sera effectue, a moins qu'un !
n'apparaissant entre guillemets doubles ne soit protege par une
contre-oblique. La contre-oblique precedant le ! n'est pas supprimee.
Les caracteres speciaux * et @ ont des significations speciales
lorsqu'ils se trouvent entre des guillemets doubles (voir PARAM`ETRES
plus bas).
Les mots de la forme $'cha^ine' sont traites specialement. Le mot est
developpe en cha^ine avec les caracteres proteges par contre-oblique
remplaces comme indique par le standard ANSI C. Les suites
d'echappement par contre-oblique, si presentes, sont decodees comme
suit :
\a alerte (alarme) ;
\b effacement arriere (<< backspace >>) ;
\e
\E caractere d'echappement ;
\f saut de page (<< form feed >>) ;
\n saut de ligne (<< new line >>) ;
\r retour chariot (<< carriage return >>) ;
\t tabulation horizontale ;
\v tabulation verticale ;
\\ contre-oblique ;
\' guillemet simple ;
\" guillemet double ;
\nnn le caractere 8 bits dont la valeur octale est nnn (un a
trois chiffres) ;
\xHH le caractere 8 bits dont la valeur hexadecimale est HH
(un ou deux chiffres hexadecimaux) ;
\cx un caractere controle-x.
Le resultat developpe est protege par des guillemets simples comme si
le symbole dollar n'avait pas ete present.
Une chaine entre guillemets doubles precedee d'un symbole dollar
($"cha^ine") conduira a la traduction de la chaine selon le parametre
linguistique regional en vigueur. Si le parametre linguistique regional
courant est C ou POSIX, le symbole dollar est ignore. Si la chaine est
traduite et remplacee, le resultat est protege par des guillemets
doubles.
PARAM`ETRES
Un param`etre est une entite permettant de stocker des valeurs. Il peut
etre un nom, un nombre ou un des caracteres speciaux decrits plus bas,
dans Param`etres sp'eciaux. Une variable est un parametre note par un
nom. Une variable possede une valeur et zero ou plusieurs attributs.
Les attributs sont affectes en utilisant la commande interne declare
(voir declare dans COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas).
Un parametre est cree si une valeur lui a ete affectee. La chaine vide
est une valeur correcte. Une fois qu'une variable est creee, elle ne
peut etre detruite qu'en utilisant la commande interne unset (voir
COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas).
Une variable peut recevoir une valeur par une affectation de la forme
nom=[valeur]
Si aucune valeur n'est indiquee, une chaine vide est affectee a la
variable. Toutes les valeurs sont sujettes au developpement du tilde,
des parametres et des variables, a la substitution de commande, au
developpement arithmetique et a la suppression des protections (voir
D'EVELOPPEMENTS plus bas). Si une variable a son attribut integer
configure, alors la valeur est soumise a l'evaluation arithmetique,
meme si la syntaxe $((...)) n'est pas utilisee (voir D'eveloppement
arithm'etique plus bas). Le decoupage en mots n'est pas effectue, a
l'exception de "$@" comme explique plus bas dans Param`etres sp'eciaux.
Le developpement des chemins n'est pas effectue. Les affectations
peuvent egalement apparaitre comme argument des commandes internes
suivantes : alias, declare, typeset, export, readonly et local.
Dans le contexte ou une affectation affecte une valeur a une variable
de l'interpreteur ou a un indice de tableau, l'operateur += peut etre
utilise pour ajouter ou additionner a la precedente valeur de la
variable. Lorsque l'operateur += est applique a une variable dont
l'attribut integer (entier) a ete positionne, la valeur est evaluee
comme une expression arithmetique et additionnee a la valeur actuelle
de la variable qui est egalement evaluee. Lorsque += est applique a une
variable tableau en utilisant l'affectation composee (voir Tableaux
plus bas), la valeur de la variable n'est pas detruite (comme elle
l'est lorsque = est utilise) et les nouvelles valeurs sont ajoutees au
tableau, en commencant a l'indice maximum du tableau plus un (pour les
tableaux indices) ou ajoutees comme comme un couple cle-valeur pour un
tableau associatif. Lorsque l'operateur est applique a une variable de
type chaine, la valeur est developpee et concatenee en valeur de la
variable.
Param`etres positionnels
Un param`etre positionnel est un parametre note par un ou plusieurs
chiffres (a l'exception du chiffre 0 seul). Les parametres positionnels
sont affectes avec les arguments de l'interpreteur lors de son appel.
Ils peuvent etre reaffectes avec la commande interne set. On ne peut
pas utiliser les affectations pour les parametres positionnels. Ils
sont temporairement remplaces lors de l'execution d'une fonction de
l'interpreteur (voir FONCTIONS plus bas).
Un parametre positionnel constitue de plusieurs chiffres doit etre
encadre par des accolades lors de son developpement (voir
D'EVELOPPEMENTS plus bas).
Param`etres sp'eciaux
L'interpreteur traite plusieurs parametres specifiquement. Ces
parametres peuvent uniquement etre consultes, il n'est pas permis de
leur affecter une valeur.
* Se developpe en ensemble des parametres positionnels, commencant
par le premier. Quand le developpement se produit entre des
guillemets doubles, * se transforme en un seul mot constitue de
la valeur de tous les parametres positionnels separes par le
premier caractere de la variable speciale IFS. C'est-a-dire que
"$*" est equivalent a "$1c$2c...", ou c est le premier caractere
de la valeur de la variable IFS. Si IFS est inexistante, les
parametres sont separes par des espaces. Si IFS est vide, les
parametres sont accoles sans separateurs.
@ Se developpe en ensemble des parametres positionnels, commencant
par le premier. Quand le developpement a lieu entre guillemets
doubles, chaque parametre se developpe en un mot distinct.
C'est-a-dire que "$@" est equivalent a "$1" "$2" .... Si le
developpement des guillemets doubles survient dans un mot, le
developpement du premier parametre est accole a la premiere
partie du mot d'origine et le developpement du dernier parametre
est accole a la derniere partie du mot d'origine. Quand il n'y a
pas de parametres positionnels, "$@" et $@ ne se developpent en
rien (c'est-a-dire qu'ils sont simplement elimines).
# Correspond au nombre de parametres positionnels, en base
decimale.
? Se developpe en etat final de la derniere conduite executee au
premier plan.
- Est remplace par la liste des options de l'interpreteur
indiquees durant l'appel, configurees avec la commande interne
set ou celles creees par l'interpreteur lui-meme (comme avec
l'option -i).
$ Se transforme en PID de l'interpreteur. Dans un
sous-interpreteur (), il se transforme en PID de l'interpreteur
et non pas du sous-interpreteur.
! Se transforme en PID de la commande (asynchrone) executee en
arriere-plan le plus recemment.
0 Se developpe en nom de l'interpreteur ou du script. Ce parametre
est cree lors de l'initialisation de l'interpreteur. Si bash est
appele avec un fichier de commandes, $0 correspond au nom de ce
fichier. Si bash est lance avec l'option -c, alors $0 contient
le premier argument, s'il y en a un, apres la chaine de
commandes a executer. Sinon, ce parametre contient le nom de
fichier utilise pour appeler bash, comme indique par l'argument
zero.
_ Au lancement de l'interpreteur, contient le chemin d'acces
absolu utilise pour appeler l'interpreteur, ou le script en
cours d'execution tel qu'il est passe dans l'environnement ou
dans la liste des arguments. Devient le dernier argument de la
commande precedente, apres developpement. Contient egalement le
chemin d'acces complet de chaque commande executee et se
retrouve dans l'environnement exporte a cette commande. Lors de
la verification de l'arrivee de courrier, contient le nom du
fichier de courrier en cours de consultation.
Variables de l'interpr'eteur
Les variables suivantes sont creees par l'interpreteur :
BASH Se developpe en chemin d'acces complet a l'instance courante de
bash.
BASHOPTS
Liste des options activees de l'interpreteur, separees par des
deux-points << : >>. Chaque mot de la liste est un argument
correct pour l'option -s de la commande interne shopt (voir
COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas). Les options
apparaissant dans BASHOPTS sont celles indiquees comme actives
par shopt. Si cette variable est dans l'environnement au
lancement de bash, chaque option de la liste est activee avant
de lire n'importe quel fichier d'initialisation. Cette variable
est en lecture seule.
BASHPID
Se transforme en PID de l'interpreteur bash courant. Differe de
$$ sous certaines conditions, comme dans les sous-interpreteurs
ne necessitant pas que bash soit reinitialise.
BASH_ALIASES
Une variable de type tableau associatif dont les elements
correspondent a une liste interne d'alias comme celle geree par
la commande interne alias. Les elements ajoutes a ce tableau
apparaissent dans la liste d'alias ; la destruction d'elements
du tableau implique le retrait des alias de la liste.
BASH_ARGC
Une variable de type tableau contenant le nombre de parametres
de chaque trame de la pile d'appel d'execution de l'interpreteur
bash courant. Le nombre de parametres du sous-programme courant
(fonction de l'interpreteur ou script execute par . ou source)
est au sommet de la pile. Lorsqu'un sous-programme est execute,
le nombre de parametres passes est place dans BASH_ARGC.
L'interpreteur cree BASH_ARGC seulement dans le mode de tracage
etendu (voir plus bas la description de l'option extdebug de la
commande interne shopt).
BASH_ARGV
Une variable de type tableau contenant tous les parametres de la
pile d'appel d'execution de l'interpreteur bash courant. Le
dernier parametre du dernier sous-programme est au sommet de la
pile ; le premier parametre de l'appel initial est en bas.
Lorsqu'un sous-programme est execute, les parametres fournis
sont places dans BASH_ARGV. BASH_ARGV est cree uniquement dans
le mode de tracage etendu (voir plus bas la description de
l'option extdebug de la commande interne shopt).
BASH_CMDS
Une variable de type tableau associatif dont les elements
correspondent a une table de hachage interne de commandes comme
celle geree par la commande interne hash. Les elements ajoutes a
ce tableau apparaissent dans la liste table de hachage ; la
destruction d'elements du tableau implique le retrait des
commandes de la table de hachage.
BASH_COMMAND
La commande en cours d'execution ou sur le point d'etre
executee, a moins que l'interpreteur n'execute une commande a la
suite d'une capture, auquel cas c'est la commande s'executant au
moment de la capture.
BASH_EXECUTION_STRING
L'argument commande de l'option d'appel -c.
BASH_LINENO
Une variable de type tableau dont les elements sont les numeros
de ligne des fichiers sources correspondant a chacun des
elements de FUNCNAME. ${BASH_LINENO[$i]} est le numero de la
ligne dans le fichier source ou ${FUNCNAME[$i]} a ete appele (ou
${BASH_LINENO[$i-1]} si consulte depuis une autre fonction de
l'interpreteur). Le nom du fichier source correspondant est
${BASH_SOURCE[$i]}. Utilisez LINENO pour obtenir le numero de
ligne courant.
BASH_REMATCH
Une variable de type tableau dont les elements sont affectes
avec l'operateur binaire =~ dans la commande conditionnelle [[.
L'element d'indice 0 est la partie de la chaine correspondant a
l'expression rationnelle complete. L'element d'indice n est la
partie de la chaine correspondant a la n-ieme sous-expression
entre parentheses. Cette variable est en lecture seule.
BASH_SOURCE
Une variable de type tableau dont les elements sont les noms des
fichiers source correspondants aux elements de la variable
tableau FUNCNAME.
BASH_SUBSHELL
Incrementee chaque fois qu'un sous-interpreteur ou qu'un
environnement de sous-interpreteur est engendre. La valeur
initiale est 0.
BASH_VERSINFO
Une variable de type tableau protegee en ecriture dont les
elements representent la version de cette instance de bash.
Cette valeur est affectee aux elements du tableau comme suit :
BASH_VERSINFO[0] Le numero majeur de la version
(release).
BASH_VERSINFO[1] Le numero mineur de la version
(version).
BASH_VERSINFO[2] Le niveau de correctif.
BASH_VERSINFO[3] Le numero de compilation.
BASH_VERSINFO[4] Le statut de cette version (par exemple
beta1).
BASH_VERSINFO[5] La valeur de MACHTYPE.
BASH_VERSION
Se developpe en une chaine decrivant le numero de version de
cette instance de bash.
COMP_CWORD
Un indice dans ${COMP_WORDS} du mot contenant la position
courante du curseur. Cette variable n'est disponible que dans
les fonctions de l'interpreteur appelees par les outils de
completement programmables (voir Compl`etement programmable plus
bas).
COMP_KEY
La touche (ou derniere touche d'une suite de touches) utilisee
pour appeler la fonction de completement courante.
COMP_LINE
La ligne de commande courante. Cette variable n'est disponible
que dans les fonctions de l'interpreteur appelees par les outils
de completement programmables (voir Compl`etement programmable
plus bas).
COMP_POINT
L'indice de la position courante du curseur relatif au debut de
la commande courante. Si la position courante du curseur est a
la fin de la commande courante, la valeur de cette variable est
egale a ${#COMP_LINE}. Cette variable n'est disponible que dans
les fonctions de l'interpreteur et les commandes externes
appelees par les outils de completement programmables (voir
Compl`etement programmable plus bas).
COMP_TYPE
Configuree a une valeur entiere correspondant au type de
completement essaye qui a provoque l'appel d'une fonction de
completement : TAB pour un completement normal, ? pour
l'affichage des completements apres tabulations successives, !
pour l'affichage des alternatives de completement de mot
partiel, @ pour afficher les completements si le mot n'est pas
modifie, ou % pour le menu de completement. Cette variable n'est
disponible que dans les fonctions de l'interpreteur et les
commandes externes appelees par les outils de completement
programmables (voir Compl`etement programmable plus bas).
COMP_WORDBREAKS
Le jeu de caracteres que la bibliotheque readline considere
comme separateurs de mots lors du completement de mot. Si
COMP_WORDBREAKS est detruite, elle perd ses proprietes
speciales, meme si elle est recreee par la suite.
COMP_WORDS
Une variable de type tableau (voir Tableaux plus bas) consistant
en mots individuels de la ligne de commande courante. La ligne
est decoupee en mots comme readline la decouperait, en utilisant
COMP_WORDBREAKS tel que decrit plus haut. Cette variable n'est
disponible que dans les fonctions de l'interpreteur appelees par
les outils de completement programmables (voir Compl`etement
programmable plus bas).
DIRSTACK
Une variable de type tableau (voir Tableaux plus bas)
representant le contenu courant de la pile de repertoires. Les
repertoires apparaissent dans la pile dans l'ordre dans lequel
la commande interne dirs les affiche. Les affectations des
elements de cette variable tableau peuvent etre utilises pour
modifier les repertoires deja dans la pile, mais les commandes
internes pushd et popd doivent etre utilisees pour ajouter et
enlever des repertoires. L'affectation de cette variable ne
modifiera pas le repertoire courant. Si DIRSTACK est detruite,
elle perd ses proprietes speciales, meme si elle est recreee par
la suite.
EUID Contient l'UID effectif de l'utilisateur, initialise au
demarrage de l'interpreteur. Cette variable est en lecture
seule.
FUNCNAME
Une variable de type tableau contenant le nom de toutes les
fonctions de l'interpreteur actuellement dans la pile d'appel
d'execution. L'element d'indice 0 est le nom de l'une des
fonctions en cours d'execution dans l'interpreteur. L'element le
plus bas est "main". Cette variable n'existe que si une
fonction de l'interpreteur est en cours d'execution. Les
affectations de FUNCNAME n'ont aucun effet et renvoient un etat
d'erreur. Si FUNCNAME est detruite, elle perd ses proprietes
speciales, meme si elle est recreee par la suite.
GROUPS Une variable de type tableau contenant la liste des groupes dont
l'utilisateur est membre. Les affectations de GROUPS n'ont aucun
effet et renvoient un etat d'erreur. Si GROUPS est detruite,
elle perd ses proprietes speciales, meme si elle est recreee par
la suite.
HISTCMD
Le numero d'historique, ou l'indice dans la file d'historique,
de la commande en cours. Si HISTCMD est detruite, elle perd ses
proprietes speciales, meme si elle est recreee par la suite.
HOSTNAME
Automatiquement configuree au nom de la machine courante.
HOSTTYPE
Automatiquement configuree en chaine decrivant de facon unique
le type de machine sur laquelle bash s'execute. La valeur par
defaut depend du systeme.
LINENO Chaque fois que ce parametre est consulte, l'interpreteur le
remplace par un nombre decimal representant le numero de la
ligne actuelle (commencant a 1), au sein du script ou de la
fonction. Hors d'un script ou d'une fonction, la valeur n'a pas
necessairement de sens. Si LINENO est detruite, elle perd ses
proprietes speciales, meme si elle est recreee par la suite.
MACHTYPE
Automatiquement configuree en chaine decrivant le type du
systeme sur lequel bash s'execute, dans le format standard de
GNU processeur-compagnie-syst`eme. La valeur par defaut depend du
systeme.
OLDPWD Le repertoire de travail precedent tel que configure par la
commande cd.
OPTARG La valeur du dernier argument d'option traite par la commande
interne getopts (voir COMMANDES INTERNES DE L'INTERPR'ETEUR plus
bas).
OPTIND L'indice du prochain argument a traiter par la commande interne
getopts (voir COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas).
OSTYPE Automatiquement configuree en chaine decrivant le systeme
d'exploitation sur lequel bash s'execute. La valeur par defaut
depend du systeme.
PIPESTATUS
Une variable de type tableau (voir Tableaux plus bas) contenant
une liste des etats finaux des processus executes dans la
conduite executee la plus recemment au premier plan (qui peut
eventuellement contenir une seule commande).
PPID L'identifiant du processus parent de l'interpreteur. Cette
variable est en lecture seule.
PWD Le repertoire de travail courant tel que configure par la
commande cd.
RANDOM A chaque fois que ce parametre est consulte, un entier aleatoire
entre 0 et 32767 est engendre. Cette suite de nombres aleatoires
peut etre initialisee en affectant une valeur a RANDOM. Si
RANDOM est detruite, elle perd ses proprietes speciales, meme si
elle est recreee par la suite.
REPLY Configuree en ligne de saisie lue par la commande interne read
lorsqu'aucun argument n'a ete fourni.
SECONDS
A chaque fois que ce parametre est consulte, le nombre de
secondes ecoulees depuis le lancement de l'interpreteur est
renvoye. Si une valeur est affectee a SECONDS, les valeurs
renvoyees lors des consultations ulterieures sont le nombre de
secondes ecoulees depuis l'affectation, ajoutees a la valeur
affectee. Si SECONDS est detruite, elle perd ses proprietes
speciales, meme si elle est recreee par la suite.
SHELLOPTS
Liste des options activees de l'interpreteur, separees par des
deux-points << : >>. Chaque mot de la liste est un argument
correct pour l'option -o de la commande interne set (voir
COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas). Les options
apparaissant dans SHELLOPTS sont celles indiquees comme actives
par set -o. Si cette variable est dans l'environnement au
lancement de bash, chaque option de la liste est activee avant
de lire n'importe quel fichier d'initialisation. Cette variable
est en lecture seule.
SHLVL Incremente de 1 a chaque appel d'une instance de bash.
UID Contient l'UID de l'utilisateur courant, initialise au demarrage
de l'interpreteur. Cette variable est en lecture seule.
Les variables suivantes sont utilisees par l'interpreteur. Dans
certains cas, bash affecte des valeurs par defaut aux variables ; ces
cas sont decrits plus bas.
BASH_ENV
Si ce parametre existe lorsque bash execute un script, sa valeur
est consideree comme un nom de fichier contenant les commandes
d'initialisation de l'interpreteur, comme dans ~/.bashrc. La
valeur de BASH_ENV est soumise au developpement des parametres,
a la substitution de commande et au developpement arithmetique
avant d'etre consideree comme un nom de fichier. PATH n'est pas
utilisee pour rechercher le fichier obtenu.
CDPATH Le chemin de recherche de la commande interne cd. Il s'agit
d'une liste de repertoires, separes par des deux-points << : >>,
que l'interpreteur consulte lorsqu'il cherche un sous-repertoire
destination de la commande cd. Un exemple de valeur est
".:~:/usr".
BASH_XTRACEFD
Si configuree a une valeur entiere correspondant a un
descripteur de fichier correct, bash ecrira la trace de sortie
si set -x est active vers ce descripteur de fichier. Le
descripteur de fichier est ferme quand BASH_XTRACEFD est
detruite ou qu'une nouvelle valeur lui est affectee. Detruire
BASH_XTRACEFD ou lui affecter la chaine vide conduit la trace de
sortie a etre envoye vers la sortie d'erreur standard. Remarquez
que configurer BASH_XTRACEFD a 2 (le descripteur de fichier de
la sortie d'erreur standard) puis la detruite revient a fermer
la sortie d'erreur standard.
COLUMNS
Utilisee par la commande interne select pour determiner la
taille du terminal lors de l'affichage des listes de selection.
Automatiquement configuree a la reception d'un signal SIGWINCH.
COMPREPLY
Une variable de type tableau dans lequel bash lit les
completements possibles produits par une fonction de
l'interpreteur appelee par les outils de completement
programmables (voir Compl`etement programmable plus bas).
EMACS Si bash trouve cette variable dans l'environnement lorsque
l'interpreteur demarre avec la valeur "t", il considere que
l'interpreteur est lance dans un tampon d'interpreteur d'Emacs
et desactive l'edition en ligne.
FCEDIT L'editeur par defaut utilise par la commande interne fc.
FIGNORE
Une liste de suffixes, separes par des deux-points << : >>, que
bash ignorera lors du completement des noms de fichiers (voir
READLINE plus bas). Un nom de fichier dont le suffixe correspond
a l'un de ceux mentionnes dans FIGNORE est exclu de la liste des
noms de fichiers correspondant pour le completement. Par
exemple, cette variable peut prendre la valeur ".o:~" (des
protections sont necessaires pour l'affectation d'une valeur a
cette variable, qui contient des tildes).
GLOBIGNORE
Une liste de motifs separes par des deux-points << : >>,
definissant l'ensemble des noms de fichiers a ignorer lors du
developpement des chemins. Si un nom de fichier correspondant a
un motif de developpement des chemins correspond egalement a un
motif dans GLOBIGNORE, il est supprime de la liste des
correspondances.
HISTCONTROL
Une liste de valeurs, separees par des deux-points << : >>,
commandant la facon dont les commandes sont sauvegardees dans la
file d'historique. Si la liste des valeurs contient la valeur
ignorespace, les lignes commencant par une espace ne sont pas
sauvegardees dans la file d'historique. La valeur ignoredups
conduit a ne pas sauvegarder une ligne correspondant exactement
a la ligne de commande precedente. La presence de ignoreboth est
un condense pour ignorespace et ignoredups. La valeur erasedups
conduit a retirer de la file d'historique toutes les lignes
precedant la ligne courante et lui correspondant avant que cette
ligne y soit sauvegardee. Toute valeur qui ne fait pas partie de
la liste ci-dessus est ignoree. Si HISTCONTROL est inexistante
ou si elle ne contient pas une valeur correcte, toutes les
lignes lues par l'analyseur de l'interpreteur seront
sauvegardees dans la file d'historique, selon la valeur de
HISTIGNORE. La seconde ligne et les suivantes d'une commande
multiligne ne sont pas testees et sont ajoutees dans
l'historique independamment de la valeur de HISTCONTROL.
HISTFILE
Le nom du fichier dans lequel l'historique des commandes est
sauvegarde (voir HISTORIQUE plus bas). Par defaut, il s'agit de
~/.bash_history. Si inexistante, l'historique des commandes
n'est pas sauvegarde lorsqu'un interpreteur interactif termine.
HISTFILESIZE
Le nombre maximum de lignes contenues dans le fichier
d'historique. Quand cette variable contient une valeur, le
fichier historique est tronque, si besoin, en enlevant les
entrees les plus anciennes, pour ne contenir que ce nombre de
lignes. La valeur par defaut est 500. Ce fichier est aussi
tronque a cette taille apres son ecriture quand un interpreteur
interactif termine.
HISTIGNORE
Une liste de motifs, separes par des deux-points << : >>,
determinant quelles lignes de commande devraient etre
sauvegardees dans la file d'historique. Chaque motif est
accroche au debut de la ligne et doit lui correspondre en
completement (aucun ajout de << * >> implicite). Chaque motif
est compare a chaque ligne apres application des verifications
de HISTCONTROL. En plus des motifs generiques usuels de
l'interpreteur, << & >> correspond a la ligne precedente de
l'historique. << & >> peut etre protegee par une
contre-oblique ; la contre-oblique est supprimee avant de tenter
une comparaison. La seconde ligne et les suivantes d'une
commande multiligne ne sont pas testees et sont ajoutees dans
l'historique quelque soit la valeur de HISTIGNORE.
HISTSIZE
Le nombre de commandes a memoriser dans l'historique (voir
HISTORIQUE plus bas). La valeur par defaut est 500.
HISTTIMEFORMAT
Si cette variable existe et n'est pas vide, sa valeur est
utilisee comme une chaine de caracteres par strftime(3) afin
d'imprimer l'horodatage associe a chaque element de l'historique
affiche par la commande interne history. Si cette variable
existe, les horodatages sont ecrits dans le fichier d'historique
afin d'etre conserves au fur et a mesure des sessions de
l'interpreteur. Cela utilise le caractere de commentaire
d'historique pour distinguer l'horodatage des autres lignes de
l'historique.
HOME Le repertoire d'accueil de l'utilisateur courant ; l'argument
par defaut de la commande interne cd. La valeur de cette
variable est aussi utilisee lors du developpement du tilde.
HOSTFILE
Contient le nom d'un fichier ayant le meme format que /etc/hosts
qui devra etre lu lorsque l'interpreteur aura besoin de
completer un nom de machine. La liste des completements
possibles de noms de machines peut etre changee pendant
l'execution de l'interpreteur ; a la tentative de completement
de nom de machine suivant le changement de valeur, bash ajoute
le contenu du nouveau fichier a la liste existante. Si HOSTFILE
existe mais est vide, ou designe un fichier non accessible en
lecture, bash essaie de lire /etc/hosts pour obtenir la liste
des completements de noms de machines possibles. Lorsque
HOSTFILE est detruite, la liste des noms de machines est
effacee.
IFS Le s'eparateur de champs interne (<< Internal Field Separator >>)
qui est utilise pour le decoupage en mots apres les
developpements et pour decouper les lignes en mots avec la
commande interne read. La valeur par defaut est
<< <space><tab><newline> >>.
IGNOREEOF
Commande le comportement d'un interpreteur interactif a
reception d'un caractere EOF (fin de fichier) comme unique
saisie. Si elle existe, la valeur est le nombre de caracteres
EOF consecutifs qui doivent etre tapes comme premiers caracteres
sur une ligne de saisie avant que bash ne termine. Si la
variable existe mais que sa valeur n'est pas numerique ou si
elle n'a pas de valeur, la valeur par defaut est 10. Si elle
n'existe pas, EOF signifie la fin de la saisie pour
l'interpreteur.
INPUTRC
Le nom du fichier de configuration de readline prioritaire sur
le fichier par defaut ~/.inputrc (voir READLINE plus bas).
LANG Utilisee pour determiner le parametre linguistique regional pour
toute categorie non specifiquement selectionnee par une variable
commencant par LC_.
LC_ALL Cette variable surpasse LANG et toute autre variable LC_
indiquant une categorie de parametres linguistiques regionaux.
LC_COLLATE
Cette variable determine l'ordre de collation utilise pour trier
les resultats du developpement des chemins et determine le
comportement des expressions de plage, des classes
d'equivalences et des suites de collations dans le developpement
des chemins et la correspondance de motifs.
LC_CTYPE
Cette variable determine l'interpretation des caracteres et le
comportement des classes de caracteres lors du developpement des
chemins et de la recherche de correspondances de motifs.
LC_MESSAGES
Cette variable determine le parametre linguistique regional
utilise pour traduire les chaines entre guillemets doubles
precedees d'un $.
LC_NUMERIC
Cette variable determine le parametre linguistique regional
utilise pour formater les nombres.
LINES Utilisee par la commande interne select pour determiner la
longueur de colonne lors de l'affichage des listes de selection.
Automatiquement configuree a la reception d'un signal SIGWINCH.
MAIL Si ce parametre correspond a un nom de fichier et si la variable
MAILPATH est inexistante, bash informe l'utilisateur de
l'arrivee de messages dans le fichier indique.
MAILCHECK
Indique l'intervalle (en secondes) avec lequel bash verifie si
un nouveau message est arrive. La valeur par defaut est 60
secondes. Lorsque le delai est ecoule, l'interpreteur verifiera
la presence d'un courrier electronique avant d'afficher son
invite de base. Si cette variable est inexistante, ou contient
une valeur strictement negative, l'interpreteur desactive la
verification du courrier.
MAILPATH
Une liste de noms de fichiers separes par des deux-points
<< : >>, dans lesquels on verifiera l'arrivee de courrier. Le
nom d'un fichier peut etre suivi d'un point d'interrogation
<< ? >>, puis d'une chaine de caracteres indiquant le message a
afficher en cas de courrier. Dans cette chaine, le parametre $_
correspond au nom du fichier de courrier courant. Exemple :
MAILPATH='/usr/spool/mail/bfox?"Vous avez du
courrier":~/shell-mail?"$_ a du courrier !"'
Bash fournit une valeur par defaut pour cette variable, mais
l'emplacement du fichier boite a lettres depend du systeme (par
exemple /usr/spool/mail/$USER).
OPTERR Si positionne a la valeur 1, bash affiche les messages d'erreurs
engendres par la commande interne getopts (voir COMMANDES
INTERNES DE L'INTERPR'ETEUR plus bas). OPTERR est initialisee
avec la valeur 1 a chaque appel de l'interpreteur ou au
lancement d'un script.
PATH Le chemin de recherche des commandes a executer. Il s'agit d'une
liste de repertoires, separes par des deux-points << : >> dans
lesquels l'interpreteur recherche les commandes (voir EX'ECUTION
DES COMMANDES plus bas). Un nom de repertoire de taille nulle
(vide) dans la valeur de PATH designe le repertoire courant. Un
repertoire vide peut apparaitre comme deux deux-points
consecutifs ou comme des deux-points en debut ou en fin. Le
chemin par defaut depend du systeme et est choisi par
l'administrateur installant bash. Une valeur commune est
``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin''.
POSIXLY_CORRECT
Si cette variable existe dans l'environnement lorsque bash
demarre, l'interpreteur passe en mode posix avant de lire les
fichiers de configuration comme si l'option --posix avait ete
fournie. Si elle est creee pendant que l'interpreteur est en
cours d'execution, bash active le mode posix comme si la
commande set -o posix avait ete executee.
PROMPT_COMMAND
Si existante, sa valeur est executee comme commande
prealablement a l'affichage de chaque invite de base.
PROMPT_DIRTRIM
Si elle contient un nombre superieur a zero, cette valeur est
utilisee comme nombre de repertoires finaux a conserver lors du
developpement des protections de chaine d'invite \w et \W (voir
INVITES plus bas). Les caracteres supprimes sont remplaces par
une ellipse.
PS1 La valeur de ce parametre est developpee puis utilisee comme
chaine d'invite de base (voir INVITES plus bas). La valeur par
defaut est << \s-\v\$ >>.
PS2 La valeur de ce parametre est developpee comme PS1 puis utilisee
comme chaine d'invite secondaire. La valeur par defaut est
<< > >>.
PS3 La valeur de ce parametre est utilisee comme invite de la
commande select (voir GRAMMAIRE DE L'INTERPR'ETEUR plus haut).
PS4 La valeur de ce parametre est developpee comme PS1 puis affichee
entre chaque commande lors d'un suivi d'execution. Le premier
caractere de PS4 est repete autant de fois que necessaire pour
indiquer le niveau d'imbrication. La valeur par defaut est
<< + >>.
SHELL Le chemin d'acces complet a l'interpreteur de commandes est
conserve dans cette variable d'environnement. Si inexistante au
demarrage de l'interpreteur, bash lui affecte le chemin d'acces
complet a l'interpreteur de commandes de connexion de
l'utilisateur courant.
TIMEFORMAT
La valeur de ce parametre est utilisee en tant que chaine de
format indiquant comment les informations de parametrage doivent
etre affichees pour les conduites precedees du mot reserve time.
Le caractere % introduit une suite de caracteres d'echappement
qui est developpee en valeur de temps ou autre information. Les
suites de caracteres d'echappement et leurs significations sont
les suivantes ; les crochets marquent les parties facultatives.
%% Un % seul (non interprete).
%[p][l]R Le temps ecoule en secondes.
%[p][l]U Le temps processeur ecoule en mode utilisateur en
secondes.
%[p][l]S Le temps processeur ecoule en mode systeme en
secondes.
%P Le pourcentage de temps processeur utilise calcule
avec (%U + %S) / %R.
Le p facultatif est un chiffre indiquant la pr'ecision, le nombre
de chiffres apres la virgule. Une valeur de 0 conduit a
affichage de nombre entiers. Trois chiffres au plus peuvent etre
affiches apres la virgule ; tout valeur superieure a 3 sera
modifiee en 3. Si p n'est pas precise, la valeur 3 est utilisee.
Le l facultatif indique un format plus long, incluant les
minutes, de la forme MMmSS.DDs. La valeur de p determine si la
partie decimale est affichee ou non.
Si cette variable n'existe pas, bash agit comme si elle avait la
valeur $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'. Si la valeur est
vide, aucune information de chronometrage n'est affichee. Un
caractere final de saut de ligne est ajoute quand la chaine de
format est affichee.
TMOUT Si configuree en valeur strictement positive, TMOUT est traitee
comme le delai par defaut pour la commande interne read. La
commande select se termine s'il n'y a pas de saisie au bout de
TMOUT secondes lorsque l'entree vient d'un terminal. Dans un
interpreteur interactif, la valeur est interpretee comme le
nombre de secondes a attendre une saisie apres avoir affiche
l'invite de base. Bash se termine apres avoir attendu pendant ce
nombre de secondes si aucune saisie n'est arrivee.
TMPDIR Si existante, bash utilise sa valeur comme nom de repertoire
dans lequel bash cree les fichiers temporaires necessaires au
fonctionnement de l'interpreteur.
auto_resume
Cette variable commande le comportement de l'interpreteur
vis-a-vis de l'utilisateur et du controle des taches. Si cette
variable existe, les commandes simples constituees d'un seul
mot, sans redirection, sont considerees comme de possibles
relances de taches suspendues. Aucune ambiguite n'est possible,
si plusieurs taches commencent par la chaine saisie, la tache a
laquelle il a ete accede le plus recemment est selectionnee. Le
nom d'une tache suspendue, dans ce contexte, est la ligne de
commande utilisee pour la lancer. Si configuree a la valeur
exact, la chaine fournie doit correspondre exactement au nom
d'une tache suspendue ; si configuree a substring, la chaine
fournie doit correspondre a une sous-chaine du nom de la tache
suspendue. La valeur substring donne une fonctionnalite analogue
a l'identificateur de tache %? (voir CONTR^OLE DES T^ACHES plus
bas). Si configuree a toute autre valeur, la chaine fournie doit
etre le prefixe du nom d'une tache suspendue ; cela fournit une
fonctionnalite analogue a l'identificateur de tache %string.
histchars
Les deux ou trois caracteres commandant le developpement de
l'historique et le decoupage en lexemes (voir D'EVELOPPEMENT DE
L'HISTORIQUE plus bas). Le premier caractere est le caract`ere de
d'eveloppement de l'historique, celui qui indique le debut d'un
developpement d'historique (normalement << ! >>). Le second
caractere est celui de substitution rapide, utilise comme
raccourci pour relancer la commande precedente, en modifiant une
partie de la chaine (par defaut << ^ >>). Le troisieme caractere
facultatif est celui qui indique, lorsqu'on le trouve en debut
de mot que le reste de la ligne est un commentaire (normalement
<< # >>). Ce caractere de commentaire empeche le developpement
de l'historique pour tous les mots restants sur la ligne. Il ne
conduit pas necessairement l'analyseur de l'interpreteur a
considerer le reste de la ligne comme un commentaire.
Tableaux
Bash fournit des variables de type tableau indice ou associatif, a une
dimension. Toute variable peut etre utilisee comme tableau indice ; la
commande interne declare peut servir a declarer explicitement un
tableau. Il n'y a pas de limitation maximum a la taille d'un tableau,
ni d'obligation a indicer les elements ou les affecter de facon
contigue. Les tableaux indices sont consultes avec des entiers
(evaluations arithmetiques comprises)commencant a zero ; les tableaux
associatifs sont consultes avec des chaines arbitraires.
Un tableau indice est cree automatiquement si une variable quelconque
est affectee en utilisant la syntaxe nom[indice]=valeur. L'indice est
traite comme une expression arithmetique et s'evalue en un nombre
positif. Pour declarer explicitement un tableau indice, on utilise
declare -a nom (voir COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas).
declare -a nom[indice] est aussi accepte ; l'indice est ignore.
Les tableaux associatifs sont crees en utilisant declare -A nom.
Des attributs peuvent etre indiques pour une variable tableau en
utilisant les commandes internes declare et readonly. Les attributs
s'appliquent a tous les elements d'un tableau.
Les tableaux sont affectes en utilisant l'affectation composee de la
forme nom=(valeur_1 ... valeur_n), ou chaque valeur est de la forme
[indice]=cha^ine. Les affectations de tableau indice ne necessitent ni
crochets ni indices. Lors de l'affectation de tableaux indices, si les
crochets et les indices facultatifs sont fournis, les affectations ont
lieu en consequence ; sinon l'indice de l'element affecte est le
dernier indice affecte plus un. L'indexation commence a zero.
Lors de l'affectation d'un tableau associatif, l'indice est
obligatoire.
Cette syntaxe est aussi acceptee par la commande interne declare. Les
elements individuels du tableau sont affectes en utilisant la syntaxe
nom[indice]=valeur presentee plus haut.
Tout element d'un tableau est accessible avec la notation
${nom[indice]}. Les accolades sont necessaires pour eviter les conflits
avec le developpement des chemins. Si indice est @ ou *, le mot se
developpe en tous les elements de nom. Ces deux indices ne different
que lorsque le mot apparait entre guillemets doubles. Si le mot est
entre guillemets doubles, ${nom[*]} se developpe en un seul mot
contenant les valeurs de chaque element du tableau separees par le
premier caractere de la variable speciale IFS et ${nom[@]} developpe
chaque element de nom en un mot distinct. Quand il n'y a pas d'element
dans le tableau, ${nom[@]} ne se developpe en rien. Si le developpement
entre guillemets doubles survient a l'interieur d'un mot, le
developpement du premier parametre est accole a la premiere partie du
mot original et le developpement du dernier parametre est accole a la
derniere partie du mot original. Le comportement est analogue a celui
des parametres speciaux * et @ (voir Param`etres sp'eciaux plus haut).
${#nom[indice]} s'evalue en longueur de l'element ${nom[indice]}. Si
l'indice est * ou @, s'evalue en nombre d'elements dans le tableau.
Acceder a une variable tableau sans indice est equivalent a acceder a
l'element de tableau d'indice 0.
Une variable tableau est consideree configuree si une valeur a ete
affectee a un indice. La chaine vide est une valeur correcte.
La commande interne unset sert a detruire les tableaux. unset
nom[indice] detruit l'element de tableau d'indice indice. Un soin
particulier doit etre apporte afin d'eviter des effets de bords non
desires provoques par le developpement des chemins. unset nom, ou nom
est un tableau, ou unset nom[indice], avec indice valant * ou @
supprime le tableau entier.
Les commandes internes declare, local et readonly acceptent toutes une
option -a pour preciser un tableau indice et une option -A pour
preciser un tableau associatif. La commande interne read accepte une
option -a pour affecter une liste de mots lus depuis l'entree standard
dans un tableau. Les commandes internes set et declare affichent les
valeurs d'un tableau d'une facon qui permet de les reutiliser pour des
affectations.
D'EVELOPPEMENTS
Les developpements sont appliques a la ligne de commande apres avoir
ete decoupee en mots. Sept types de developpements sont effectues : le
d'eveloppement des accolades, le d'eveloppement du tilde, le
d'eveloppement des param`etres et des variables, la substitution de
commande, le d'eveloppement arithm'etique, le d'ecoupage en mots et le
d'eveloppement des chemins.
L'ordre des developpements est : developpement des accolades, du tilde,
des parametres, des variables, arithmetique et substitution de commande
(effectuee de la gauche vers la droite), decoupage en mots et
developpement des chemins.
Sur les systemes qui le permettent, un developpement supplementaire a
lieu : la substitution de processus.
Seuls le developpement des accolades, le decoupage en mots et le
developpement des chemins peuvent modifier le nombre de mots. Les
autres developpement transforment un mot unique en un autre mot unique.
La seule exception a cette regle est le developpement de << $@ >> et
<< ${nom[@]} >> comme explique plus haut (voir PARAM`ETRES).
D'eveloppement des accolades
Le d'eveloppement des accolades est un mecanisme permettant de produire
des chaines quelconques. Il est similaire au d'eveloppement des chemins,
mais les noms de fichiers produits n'existent pas necessairement. Les
motifs qui seront developpes prennent la forme d'un pr'eambule
facultatif, suivi soit par une serie de chaines separees par des
virgules, soit par l'expression d'une serie entre accolades, et suivi
par un post-scriptum facultatif. Le preambule est insere devant chacune
des chaines contenues entre les accolades et le post-scriptum est
concatene a la fin de chacune des chaines resultantes, le developpement
se faisant de gauche a droite.
Plusieurs developpements d'accolades peuvent etre imbriques. Les
resultats de chaque developpement ne sont pas tries, l'ordre de gauche
a droite est conserve. Par exemple a{d,c,b}e se developpe en << ade ace
abe >>.
Une expression de serie est de la forme {x..y[..incr]}, ou x et y sont
soit des entiers, soit des caracteres uniques, et incr, un increment
facultatif, est un entier. Lorsqu'il s'agit d'entiers, l'expression est
remplacee par la liste des nombres entre x et y inclus. Les entiers
fournis peuvent etre prefixes par 0 pour forcer chaque terme a avoir la
meme longueur. Si x ou y commencent par un zero, l'interpreteur
essaiera de forcer tous les termes crees a la meme longueur, en
ajoutant des zeros au besoin. S'il s'agit de caracteres, l'expression
se developpe en ensemble des caracteres situes entre x et y d'un point
de vue lexicographique. Remarquez que x et y doivent etre du meme type.
Si l'increment est fourni, il est utilise comme difference entre chaque
terme. L'increment par defaut est 1 ou -1 suivant les valeurs de x et
y.
Le developpement des accolades est effectue avant tout autre
developpement et tous les caracteres ayant une signification speciale
pour les autres developpements sont conserves dans le resultat. Il
s'agit d'une modification purement litterale. Bash n'effectue aucune
interpretation syntaxique du texte entre les accolades.
Un developpement d'accolades correctement forme doit contenir des
accolades ouvrante et fermante non protegees et au moins une virgule
non protegee ou une expression de serie correcte. Tout developpement
d'accolades incorrectement forme est laisse inchange. Un { ou un ,
peuvent etre proteges par une contre-oblique pour eviter d'etre
consideres comme partie d'une expression entre accolades. Pour eviter
tout conflit avec le developpement des parametres, la chaine ${ n'est
pas consideree comme eligible au developpement des accolades.
Cette construction est typiquement utilisee comme raccourci lorsque le
prefixe commun aux chaines a engendrer est plus long que dans l'exemple
ci-dessus :
mkdir /usr/local/src/bash/{old,new,dist,bugs}
ou
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
Le developpement des accolades induit une legere incompatibilite avec
les versions historiques de sh. sh n'effectue aucun traitement sur les
accolades ouvrantes et fermantes lorsqu'elles apparaissent dans un mot
et les laisse inchangees. Bash supprime les accolades dans les mots,
apres developpement. Par exemple, si le mot file{1,2} est fourni a sh,
il reste inchange en sortie. En revanche, il est transforme en file1
file2 par bash. Si une compatibilite stricte avec sh est necessaire,
lancez bash avec l'option +B ou desactivez le developpement des
accolades avec l'option +B de la commande set (voir COMMANDES INTERNES
DE L'INTERPR'ETEUR plus bas).
D'eveloppement du tilde
Si un mot commence par un caractere tilde (<< ~ >>) non protege, tous
les caracteres precedant la premiere barre oblique non protegee (voire
tous les caracteres s'il n'y a pas de barre oblique non protegee), sont
consideres comme un pr'efixe tilde. Si aucun caractere du prefixe tilde
n'est protege, les caracteres suivant le tilde sont traites comme un
identifiant de connexion possible. Si cet identifiant de connexion est
une chaine vide, le tilde est remplace par la valeur du parametre
d'interpreteur HOME. Si HOME n'existe pas, le repertoire d'accueil de
l'utilisateur executant l'interpreteur est utilise a la place. Sinon le
prefixe tilde est remplace par le repertoire d'accueil associe a
l'identifiant de connexion indique.
Si le prefixe tilde est << ~+ >>, la valeur de la variable de
l'interpreteur PWD le remplace. Si le prefixe tilde est << ~- >>, la
valeur de la variable de l'interpreteur OLDPWD, si existante, lui est
substituee. Si les caracteres a la suite du tilde dans le prefixe tilde
representent un nombre N prefixe facultativement par un << + >> ou un
<< - >> le prefixe tilde est remplace par l'element correspondant de la
pile de repertoires telle qu'il serait affiche par la commande interne
dirs appelee avec le prefixe tilde en argument. Si les caracteres a la
suite du tilde dans le prefixe tilde representent un nombre sans un
<< + >> ou << - >> en tete, on suppose qu'il s'agit de << + >>.
Si l'identifiant de connexion est incorrect ou si le developpement du
tilde echoue, le mot est inchange.
Chaque affectation de variable verifie immediatement la presence de
prefixes tilde non proteges suivant un : ou le premier =. Dans ces cas,
le developpement des tildes est aussi effectue. On peut donc utiliser
des noms de fichiers avec des tildes dans des affectations de PATH,
MAILPATH et CDPATH et l'interpreteur affectera la valeur developpee.
Remplacement des param`etres
Le caractere << $ >> permet d'introduire le developpement des
parametres, la substitution de commande ou le developpement
arithmetique. Le nom du parametre ou du symbole a developper peut etre
encadre par des accolades facultatives mais permettant d'eviter le
developpement de la variable a partir de caracteres la suivant
immediatement et qui pourraient etre consideres comme appartenant a son
nom.
Lorsque les accolades sont utilisees, l'accolade de fin correspondante
est le premier caractere << } >> ni protege par une contre-oblique, ni
inclus dans une chaine protegee, un developpement arithmetique, une
substitution de commande ou un developpement des parametres.
${param`etre}
est remplace par la valeur du param`etre. Les accolades sont
necessaires quand le param`etre est un parametre positionnel
ayant plusieurs chiffres, ou si le param`etre est suivi de
caracteres n'appartenant pas a son nom.
Si le premier caractere du param`etre est un point d'exclamation (!), un
niveau d'imbrication de variable est introduit. Bash utilise la valeur
de la variable formee par le reste du param`etre comme un nom de
variable. Cette variable est alors developpee et la valeur utilisee
pour le reste de la substitution plutot que la valeur du param`etre
lui-meme. On appelle ce mecanisme le d'eveloppement imbriqu'e. Les
exceptions a celui-ci sont les developpements de ${!pr'efixe*} et de
${!nom[@]} decrits plus bas. Le point d'exclamation doit immediatement
suivre l'accolade ouvrante afin d'introduire l'imbrication.
Dans chacun des cas ci-dessous, le mot est soumis au developpement du
tilde, au developpement des parametres, a la substitution de commande
et au developpement arithmetique.
Quand il n'effectue pas de developpement de sous-chaine, en utilisant
les formes documentees ci-dessous, bash teste si le parametre est
inexistant ou vide. L'absence de deux-points induit un test sur la
seule inexistence du parametre.uand il n'effectue pas de developpem
${param`etre:-mot}
Utilisation de valeur par d'efaut. Si le param`etre est inexistant
ou vide, le developpement du mot est substitue. Sinon, c'est la
valeur du param`etre qui est substituee.
${param`etre:=mot}
Affectation de valeur par d'efaut. Si le param`etre est inexistant
ou vide, le developpement du mot lui est affecte. La valeur du
param`etre est alors substitue. Les parametres positionnels et
speciaux ne peuvent pas etre affectes de cette facon.
${param`etre:?mot}
Affichage d'erreur si vide ou inexistant. Si le param`etre est
inexistant ou vide, le developpement du mot (ou un message
approprie si aucun mot n'est fourni) est affiche sur la sortie
d'erreur standard et l'interpreteur termine, s'il n'est pas
interactif. Sinon, la valeur du param`etre est substituee.
${param`etre:+mot}
Utilisation de valeur alternative. Si le param`etre est vide ou
inexistant, rien n'est substitue. Sinon le developpement du mot
est substitue.
${param`etre:d'ebut}
${param`etre:d'ebut:longueur}
D'eveloppement des sous-cha^ines. Se developpe pour fournir la
sous-chaine de longueur indiquee (en caracteres) commencant au
d'ebut. Si la longueur est omise, fournit la sous-chaine
commencant au caractere de d'ebut et s'etendant jusqu'a la fin du
param`etre. La longueur et le d'ebut sont des expressions
arithmetiques (voir 'EVALUATION ARITHM'ETIQUE plus bas). La
longueur doit etre positive. Si le d'ebut est negatif, sa valeur
est consideree a partir de la fin du contenu du param`etre. Les
expressions arithmetiques commencant par un << - >> doivent etre
separees par une espace des << : >> (deux-points) les precedant
pour etre distinguees du developpement Utilisation de valeur par
d'efaut. Si le param`etre est @, le resultat correspond aux
longueur parametres positionnels commencant au d'ebut. Si le
param`etre est un nom de tableau indice par @ ou *, le resultat
est les longueur elements du tableau commencant a
${param`etre[d'ebut]}. Une valeur negative de d'ebut est prise
relativement a la valeur maximum de l'indice du tableau
considere, augmentee de un. Le developpement de sous-chaine
s'applique aux tableaux associatifs. Remarquez qu'une valeur
negative de d'ebut doit etre separee du deux-points par au moins
une espace pour eviter toute confusion avec le developpement de
<< :- >>. L'indexation des sous-chaines debute a zero, sauf pour
les parametres positionnels pour lesquels l'indexation commence
a 1 par defaut. Si d'ebut est 0, et que les parametres
positionnels sont utilises, la liste sera prefixee par $0.
${!pr'efixe*}
${!pr'efixe@}
Noms correspondant au pr'efixe. Se developpe en noms des
variables dont les noms commencent par pr'efixe, separes par le
premier caractere de la variable speciale IFS. Si @ est utilise
et que le developpement apparait entre guillemets doubles,
chaque nom de variable se developpe separement.
${!nom[@]}
${!nom[*]}
Liste des clefs du tableau. Si nom est une variable de type
tableau, elle se developpe en liste des indices (clefs) du
tableau affecte a nom. Si nom n'est pas un tableau, se developpe
en 0 si nom existe et en vide sinon. Quand @ est utilise et que
le developpement apparait entre guillemets doubles, chaque clef
se developpe en un mot separe.
${#param`etre}
Longueur du param`etre. Est remplace par la longueur, en
caracteres, de la valeur du param`etre. Si le param`etre est * ou
@, la valeur est le nombre de parametres positionnels. Si le
param`etre est un nom de tableau indice par * ou @, la valeur
donnee est le nombre d'elements du tableau.
${param`etre#mot}
${param`etre##mot}
Retrait du motif correspondant au pr'efixe. Le mot est developpe
pour fournir un motif, comme dans le developpement des chemins.
Si le motif correspond au debut de la valeur du param`etre, alors
le developpement prend la valeur developpee du param`etre apres
suppression du plus court (cas << # >>) ou du plus long (cas
<< ## >>) motif correspondant. Si le param`etre est @ ou *,
l'operation de suppression de motif est appliquee a chaque
parametre positionnel tour a tour et le developpement est la
liste resultante. Si le param`etre est une variable tableau
indicee par @ ou *, l'operation de suppression de motif est
appliquee a chaque element du tableau tour a tour et le
developpement est la liste resultante.
${param`etre%mot}
${param`etre%%mot}
Retrait du motif correspondant au suffixe. Le mot est developpe
pour fournir un motif, comme dans le developpement des chemins.
Si le motif correspond a une portion finale de la valeur
developpee du param`etre, alors le developpement prend la valeur
developpee du param`etre apres suppression du plus court (cas
<< % >>) ou du plus long (cas << %% >>) motif correspondant. Si
le param`etre est @ ou *, l'operation de suppression de motif est
appliquee a chaque parametre positionnel tour a tour et le
developpement est la liste resultante. Si le param`etre est une
variable tableau indicee par @ ou *, l'operation de suppression
de motif est appliquee a chaque element du tableau tour a tour
et le developpement est la liste resultante.
${param`etre/motif/cha^ine}
Substitution de motif. Le motif est developpe comme dans le
traitement des chemins. Le param`etre est developpe et la plus
longue portion correspondant au motif est remplacee par la
cha^ine. Si le motif commence par /, toutes les correspondances
au motif sont remplacees par la cha^ine. Normalement, seule la
premiere correspondance est remplacee. Si le motif commence par
#, il doit correspondre au debut de la valeur developpee du
param`etre. Si le motif commence par %, il doit correspondre a la
fin du developpement du param`etre. Si la cha^ine est vide, les
portions correspondant au motif sont supprimees et le / suivant
le motif peut etre omis. Si le param`etre est @ ou *, l'operation
de substitution est appliquee a chacun des parametres
positionnels tour a tour et le developpement est la liste
resultante. Si le param`etre est une variable tableau indicee par
@ ou *, l'operation de substitution s'applique a chaque element
du tableau tour a tour et le developpement est la liste
resultante.
${param`etre^motif}
${param`etre^^motif}
${param`etre,motif}
${param`etre,,motif}
Modification de la casse. Ce developpement modifie la casse des
caracteres alphabetiques du param`etre. Le mottif est developpe
pour fournir un motif, comme dans le developpement des chemins.
L'operateur ^ convertit les lettre minuscules correspondant a ce
motif en majuscule ; l'operateur , convertit les lettre
majuscules correspondant a ce motif en minuscule. Les
developpements ^^ et ,, convertissent tous les caracteres
correspondant a leur valeur developpee ; les developpements ^ et
, convertissent seulement le premier caractere de la valeur
developpee correspondant. Si motif est omis, il est traite comme
un ?, ce qui correspond a n'importe quel caractere. Si le
param`etre est @ ou *, la modification de casse s'applique a
chaque parametre positionnel tour a tour et le developpement est
la liste resultante. Si le param`etre est une variable tableau
indicee par @ ou *, la modification de casse s'applique a chaque
element du tableau tour a tour et le developpement est la liste
resultante.
Substitution de commande
La substitution de commande permet de remplacer le nom d'une commande
par son resultat. Il en existe deux formes :
$(commande)
ou
`commande`
Bash effectue la substitution en executant la commande et en la
remplacant par sa sortie standard, dont les eventuels sauts de lignes
finaux sont supprimes. Les sauts de lignes internes ne sont pas
supprimes mais peuvent disparaitre lors du decoupage en mots. La
substitution de commande $(cat fichier) peut etre remplacee par
l'equivalent plus rapide $(< fichier).
Quand l'ancienne forme de substitution avec les accents graves << ` >>
est utilisee, le caractere contre-oblique garde sa signification propre
sauf lorsqu'il est suivi de $, ` ou \. Le premier accent grave non
protege par une contre-oblique termine la substitution de commande.
Quand on utilise la forme $(commande), tous les caracteres entre
parentheses constituent la commande ; aucun n'est traite
specifiquement.
Les substitutions de commande peuvent etre imbriquees. Pour imbriquer
en utilisant la forme a accents graves, il faut proteger les accents
graves internes avec des contre-obliques.
Si la substitution apparait entre guillemets doubles, le decoupage en
mots et le developpement des chemins ne sont pas effectues sur ses
resultats.
D'eveloppement arithm'etique
Le developpement arithmetique permet de remplacer une expression
arithmetique par le resultat de son evaluation. Le format du
developpement arithmetique est :
$((expression))
L'ancien format $[expression] est obsolete et sera supprime dans les
prochaines versions de bash.
L'expression est traitee comme si elle etait entre guillemets doubles,
mais un guillemet double a l'interieur de parentheses n'est pas traite
specifiquement. Tous les lexemes dans l'expression sont sujet au
developpement des parametres, a la substitution de commande et a la
suppression des protections. Les developpements arithmetiques peuvent
etre imbriques.
L'evaluation est effectuee en suivant les regles decrites plus bas dans
'EVALUATION ARITHM'ETIQUE. Si l'expression est incorrecte, bash affiche
un message indiquant l'echec et aucune substitution n'a lieu.
Substitution de processus
La substitution de processus n'est disponible que sur les systemes
acceptant le mecanisme des tubes nommes (FIFO) ou la methode /dev/fd de
noms de fichiers. Elle prend la forme <(liste) ou >(liste). La liste de
processus est executee avec son entree ou sa sortie connectee a une
FIFO ou a un fichier dans /dev/fd. Le nom de ce fichier est passe en
argument a la commande qui sera executee comme resultat de cette
substitution. Si on utilise la forme >(liste), l'ecriture dans le
fichier fournira des entrees pour la liste. Si la forme <(liste) est
utilisee, le fichier passe en argument devra etre lu pour obtenir la
sortie de la liste.
Sur les systemes qui le permettent, la substitution de processus est
effectuee simultanement au developpement des parametres et variables, a
la substitution de commande et au developpement arithmetique.
D'ecoupage en mots
Les resultats du developpement des parametres, de la substitution de
commande et du developpement arithmetique qui ne se trouvent pas entre
guillemets doubles sont analyses par l'interpreteur afin d'appliquer le
d'ecoupage en mots.
L'interpreteur considere chaque caractere du parametre IFS comme un
delimiteur et decoupe le resultat des transformations precedentes en
fonction de ceux-ci. Si IFS est inexistante ou si sa valeur est
exactement <space><tab><newline>, la valeur par defaut, alors les
suites de caracteres <space>, <tab> et <newline> au debut ou a la fin
du resultat des developpements precedents sont ignores, et toute suite
de caracteres de IFS ni au debut ni a la fin sert a delimiter les mots.
Si IFS a une valeur autre que celle par defaut, alors les suites de
caracteres blancs espace et tabulation sont ignorees en debut et fin de
mot, a condition que ces caracteres blancs se trouvent dans la valeur
de IFS (un caractere blanc de IFS). Tout caractere de IFS qui n'est
pas un caractere blanc, se trouvant a cote d'un caractere blanc de IFS,
delimite un champ. Une suite de caracteres blancs de IFS est egalement
traitee comme un delimiteur. Si la valeur de IFS est vide, aucun
decoupage en mots n'a lieu.
Les arguments vides explicites ("" ou '') sont conserves. Les arguments
vides implicites non proteges, resultant du developpement des
parametres qui n'ont pas de valeurs, sont supprimes. Si un parametre
sans valeur est developpe entre guillemets doubles, le resultat est un
argument vide qui est conserve.
Remarquez que si aucun developpement n'a lieu, le decoupage en mots
n'est pas effectue.
D'eveloppement des chemins
Apres le decoupage en mots, a moins que l'option -f soit presente, bash
recherche dans chaque mot les caracteres *, ? et [. Si l'un d'eux
apparait, le mot est considere comme un motif et remplace par une
liste, classee par ordre alphabetique, des noms de fichiers
correspondant a ce motif. Si aucun nom de fichier ne correspond et si
l'option d'interpreteur nullglob n'est pas activee, le mot reste
inchange. Si l'option nullglob existe et si aucune correspondance n'est
trouvee, le mot est supprime. Si l'option d'interpreteur failglob
existe et si aucune correspondance n'est trouvee, un message d'erreur
est affiche et la commande n'est pas executee. Si l'option
d'interpreteur nocaseglob est activee, la correspondance est effectuee
sans tenir compte de la casse des caracteres alphabetiques. Remarquez
que lorsque des expressions de plage comme [a-z] (voir plus bas) sont
utilisees les lettres de l'autre casse peuvent etre incluses, selon le
parametrage de LC_COLLATE. Quand un motif est utilise pour le
developpement des chemins, le caractere << . >> au debut d'un nom ou
immediatement a la suite d'une barre oblique doit etre explicitement
mis en correspondance, a moins que l'option d'interpreteur dotglob
n'existe. Lors de la correspondance avec un chemin, le caractere barre
oblique doit toujours etre mis en correspondance explicitement. Dans
les autres cas, le caractere << . >> n'est pas traite specifiquement.
Voyez la description de la commande shopt dans COMMANDES INTERNES DE
L'INTERPR'ETEUR pour une description des options d'interpreteur
nocaseglob, nullglob, failglob et dotglob.
La variable de l'interpreteur GLOBIGNORE peut servir a restreindre
l'ensemble des noms de fichiers correspondant a un motif. Si GLOBIGNORE
existe, chaque nom de fichier qui correspond aussi a un motif de
GLOBIGNORE est supprime de la liste des correspondances. Les noms de
fichiers << . >> et << .. >> sont toujours ignores quand GLOBIGNORE
existe et n'est pas vide. Toutefois, configurer GLOBIGNORE avec une
valeur non vide a pour effet d'activer l'option d'interpreteur dotglob,
ainsi tous les autres noms de fichiers commencant par << . >>
correspondront. Pour obtenir l'ancien comportement ignorant les noms
commencant par << . >>, placez << .* >> dans l'un des motifs de
GLOBIGNORE. L'option dotglob est desactivee si la variable GLOBIGNORE
est inexistante.
Motifs g'en'eriques
Tout caractere apparaissant dans un motif, hormis les caracteres
speciaux decrits plus bas correspond avec lui-meme. Le caractere NUL ne
peut pas se trouver dans un motif. Une contre-oblique protege le
caractere qui la suit ; la contre-oblique de protection est supprimee
lors de la recherche de correspondance. Les caracteres speciaux de
motifs doivent etre proteges s'ils sont destines a une correspondance
litterale.
Les caracteres speciaux ont les significations suivantes :
* Correspond a n'importe quel chaine, chaine vide comprise. Si
l'option globstar de l'interpreteur est activee, et que * est
utilise dans un contexte de developpement des chemins, deux *
adjacents sont utilises pour un seul motif correspondant a tous
les fichier et zero ou plus de repertoires et sous-repertoires.
Lorsqu'il sont suivis de /, deux * adjacents correspondront
seulement aux repertoires et sous-repertoires.
? Correspond a n'importe quel caractere.
[...] Correspond a tout caractere entre les crochets. Un couple de
caracteres separes par un trait d'union indique une expression
de plage ; tout caractere qui correspond a n'importe quel
caractere situe entre les deux bornes incluses, en utilisant les
suites de collations des parametres linguistiques regionaux
courants et le jeu de caracteres. Si le premier caractere
suivant le [ est un ! ou un ^ alors la correspondance se fait
sur tous les caracteres hors plage. L'ordre de tri des
caracteres dans les expressions de plage est determine par les
parametres linguistiques regionaux courants et par la valeur de
la variable de l'interpreteur LC_COLLATE si existante. Un - peut
etre mis en correspondance en l'incluant en premier ou dernier
caractere de l'ensemble. Un ] peut etre mis en correspondance en
l'incluant en premier caractere de l'ensemble.
Entre [ et ], on peut indiquer une classe de caract`ere en
utilisant la syntaxe [:classe:], ou classe est l'une des classes
suivantes, definies dans le standard POSIX :
alnum alpha ascii blank cntrl digit graph lower print punct
space upper word xdigit
Une classe correspond a n'importe quel caractere qui s'y trouve.
La classe de caracteres word correspond aux lettres, aux
chiffres et au caractere souligne << _ >>.
Entre [ et ], on peut indiquer une classe d''equivalence en
utilisant la syntaxe [=c=], qui correspond a n'importe quel
caractere ayant le meme poids de collation (comme indique par
les parametres linguistiques regionaux courants) que le
caractere c.
Entre [ et ], la syntaxe [.symbole.] correspond au symbole de
collation symbole.
Si l'option extglob d'interpreteur est activee par la commande interne
shopt plusieurs operateurs de correspondance etendue sont reconnus.
Dans la description suivante, une liste-motif est une liste d'un ou
plusieurs motifs separes par des |. Les motifs composes sont formes en
utilisant un ou plusieurs sous-motifs comme suit :
?(liste-motif)
Correspond a zero ou une occurrence des motifs indiques.
*(liste-motif)
Correspond a zero ou plusieurs occurrences des motifs
indiques.
+(liste-motif)
Correspond a une ou plusieurs occurrences des motifs
indiques.
@(liste-motif)
Correspond a une occurrence exactement des motifs
indiques.
!(liste-motif)
Correspond a tout sauf l'un des motifs indiques.
Suppression des protections
Apres les developpements precedents, toutes les occurrences non
protegees des caracteres \, ' et " qui ne resultent pas d'un des
developpements ci-dessus sont supprimees.
REDIRECTIONS
Avant qu'une commande ne soit executee, il est possible de rediriger
son entree et sa sortie en utilisant une notation speciale interpretee
par l'interpreteur. Les redirections peuvent egalement servir a ouvrir
ou fermer des fichiers dans l'environnement courant de l'interpreteur.
Les operateurs de redirection suivants peuvent preceder ou apparaitre
n'importe ou dans une commande simple ou suivre une commande. Les
redirections sont traitees dans leur ordre d'apparition, de gauche a
droite.
Toutes les redirections pouvant etre precedees par un numero de
descripteur de fichier peuvent aussi etre precedees par un mot de la
forme {nom_de_variable}. Dans ce cas, pour chaque operateur de
redirection a part >&- et <&-, l'interpreteur de commande allouera un
descripteur de fichier superieur a 10 et l'affectera a nom_de_variable.
Si >&- ou <&- est precede de {nom_de_variable}, la valeur de
nom_de_variable definit le descripteur de fichier a fermer.
Dans les descriptions suivantes, si le numero de descripteur de fichier
est omis et si le premier caractere de l'operateur de redirection est
<, la redirection se rapporte a l'entree standard (descripteur de
fichier 0). Si le premier caractere de l'operateur de redirection est
>, la redirection se rapporte a la sortie standard (descripteur de
fichier 1).
Le mot qui suit l'operateur de redirection dans les descriptions
suivantes, a moins qu'il en soit fait etat autrement, est soumis au
developpement des accolades, du tilde, des parametres, a la
substitution de commande, au developpement arithmetique, a la
suppression des protections, au developpement des chemins et au
decoupage en mots. S'il se developpe en plusieurs mots, bash signale
une erreur.
Remarquez que l'ordre des redirections est important. Par exemple, la
commande
ls > liste_repertoires 2>&1
redirige a la fois la sortie standard et la sortie d'erreur standard
vers le fichier liste_r'epertoires, alors que la commande
ls 2>&1 > liste_repertoires
ne redirige que la sortie standard vers le fichier liste_r'epertoires,
car la sortie d'erreur standard a ete dupliquee de la sortie standard
avant que celle-ci ne soit redirigee vers liste_r'epertoires.
Bash gere plusieurs noms de fichiers de facon particuliere, lorsqu'ils
sont utilises dans des redirections, comme decrit dans la table
suivante :
/dev/fd/fd
Si fd est un entier correct, le descripteur de fichier fd
est duplique.
/dev/stdin
Le descripteur de fichier 0 est duplique.
/dev/stdout
Le descripteur de fichier 1 est duplique.
/dev/stderr
Le descripteur de fichier 2 est duplique.
/dev/tcp/host/port
Si host est une adresse Internet ou un nom de machine
correct et si port est un numero de port entier ou un nom
de service, bash tentera d'ouvrir une connexion TCP sur
la << socket >> correspondante.
/dev/udp/host/port
Si host est un nom de machine correct ou une adresse
Internet et si port est un numero de port entier ou un
nom de service, bash tentera d'ouvrir une connexion UDP
sur la << socket >> correspondante.
Un echec a l'ouverture ou a la creation de fichier conduit a l'echec de
la redirection.
Les redirections utilisant des descripteurs de fichiers superieurs a 9
doivent etre utilisees avec precaution car des conflits peuvent
survenir avec les descripteurs de fichiers utilises en interne par
l'interpreteur.
Notez que la commande interne exec peut faire appliquer les
redirections a l'interpreteur de commande en cours.
Redirection d'entr'ee
Une redirection d'entree conduit a l'ouverture en lecture avec le
descripteur de fichier numero n du fichier dont le nom resulte du
developpement du mot ou en tant qu'entree standard (descripteur de
fichier 0) si n n'est pas indique.
Le format general des redirections d'entree est :
[n]<mot
Redirection de sortie
Une redirection de sortie conduit a l'ouverture en ecriture du fichier
dont le nom resulte du developpement du mot avec comme descripteur de
fichier n ou en tant que sortie standard (descripteur de fichier 1) si
n n'est pas indique. Si le fichier n'existe pas, il est cree. S'il
existait deja, sa taille est reduite a zero.
Le format general des redirections de sortie est le suivant :
[n]>mot
Si l'operateur de redirection est > et si l'option noclobber de la
commande interne set est activee, la redirection echouera si le fichier
dont le nom resulte du developpement du mot existe et est un fichier
normal. Si l'operateur de redirection est >| ou l'operateur > avec
l'option noclobber de la commande interne set n'est pas activee, la
redirection sera tentee meme si le fichier dont le nom resulte du
developpement du mot existe.
Ajout d'une sortie redirig'ee
La redirection de la sortie de cette facon conduit a l'ouverture du
fichier dont le nom resulte du developpement du mot pour ajouter au
descripteur de fichier n ou a la sortie standard (descripteur de
fichier 1) si n n'est pas indique. Si le fichier n'existe pas, il est
cree.
Le format general pour les sorties avec ajout est :
[n]>>mot
Redirection de la sortie standard et de la sortie d'erreur standard
Cette construction permet la redirection simultanee de la sortie
standard (descripteur 1) et de la sortie d'erreur standard (descripteur
2), dans un fichier dont le nom est le resultat du developpement du
mot.
Il y a deux formes pour rediriger les sortie standard et sortie
d'erreur standard :
&>mot
et
>&mot
La premiere des deux formes est preferee. Ceci est semantiquement
equivalent a
>mot 2>&1
Ajout de la sortie standard et de la sortie d'erreur standard
Cette construction permet l'ajout simultane de la sortie standard
(descripteur 1) et de la sortie d'erreur standard (descripteur 2), dans
un fichier dont le nom est le resultat du developpement du mot.
La forme pour ajouter les sortie standard et sortie d'erreur standard
est :
&>>mot
Ceci est semantiquement equivalent a
>>mot 2>&1
Document en ligne
Ce type de redirection commande a l'interpreteur de lire son entree de
la source courante jusqu'a ce qu'il voie une ligne contenant seulement
le d'elimiteur prevu (sans blancs finaux). Toutes les lignes lues
jusqu'a ce point sont ensuite utilisees comme l'entree standard pour
une commande.
Le format des documents en ligne est le suivant :
<<[-]mot
document_en_ligne
d'elimiteur
Il n'y a ni developpement des parametres, ni substitution de commande,
ni developpement arithmetique, ni developpement des chemins d'effectue
sur le mot. Si un n'importe quel caractere du mot est protege,
d'elimiteur est le resultat de la suppression des protections sur mot et
les lignes du document en ligne ne sont pas developpees. Si le mot
n'est pas protege, toutes les lignes du document en ligne sont soumises
au developpement des parametres, a la substitution de commande et au
developpement arithmetique. Dans ce dernier cas, la suite de caracteres
\<newline> est ignoree et \ doit etre utilisee pour proteger les
caracteres \, $ et `.
Si l'operateur de redirection est <<-, alors les tabulations en tete de
chaque ligne sont supprimees de l'entree, y compris dans la ligne
contenant d'elimiteur. Ceci permet d'indenter de facon naturelle les
documents en ligne au sein des scripts.
Cha^ines en ligne
Une variante aux documents en ligne, le format est :
<<<mot
Le mot est developpe et fourni a la commande sur son entree standard.
D'edoublement de descripteur de fichier
L'operateur de redirection
[n]<&mot
permet de dupliquer les descripteurs de fichiers en entree. Si le mot
se transforme en un ou plusieurs chiffres, le descripteur de fichier
note par n devient une copie de ce descripteur. Si les chiffres du mot
ne correspondent pas a un descripteur ouvert en lecture, une erreur de
redirection se produit. Si le mot prend la forme -, le descripteur n
est ferme. Si n n'est pas mentionne, l'entree standard (descripteur 0)
est utilisee.
L'operateur
[n]>&mot
est utilise de facon similaire pour dupliquer les descripteurs de
sortie. Si n n'est pas explicite, la sortie standard (descripteur 1)
est utilisee. Si les chiffres du mot ne correspondent pas a un
descripteur en ecriture, une erreur de redirection se produit. Dans le
cas particulier ou n est omis et ou mot ne se developpe pas en un ou
plusieurs chiffres, les sorties standard et d'erreur standard sont
toutes deux redirigees comme decrit precedemment.
D'eplacement de descripteurs de fichiers
L'operateur de redirection
[n]<&chiffre-
deplace le descripteur de fichier chiffre vers le descripteur de
fichier n ou sur l'entree standard (descripteur de fichier 0) si n
n'est pas indique. chiffre est ferme apres avoir ete duplique en n.
De la meme facon, l'operateur de redirection
[n]>&chiffre-
deplace le descripteur de fichier chiffre vers le descripteur de
fichier n ou sur la sortie standard (descripteur de fichier 1) si n
n'est pas indique.
Ouverture en Lecture/'Ecriture d'un descripteur de fichier
L'operateur de redirection
[n]<>mot
conduit a l'ouverture du fichier dont le nom resulte du developpement
du mot, a la fois en lecture et en ecriture et lui affecte le
descripteur de fichier n ou bien le descripteur 0 si n n'est pas
mentionne. Si le fichier n'existe pas, il est cree.
ALIAS
Les alias permettent de substituer une chaine a un mot lorsqu'il est
utilise comme premier mot d'une commande simple. L'interpreteur gere
une liste d'alias qui peuvent etre crees et detruits avec les commandes
internes alias et unalias (voir COMMANDES INTERNES DE L'INTERPR'ETEUR
plus bas). L'interpreteur verifie si le premier mot de chaque commande
simple, si non protege, est un alias. Si c'est le cas, ce mot est
remplace par le texte de l'alias. Les caracteres /, $, ` et = et tout
m'etacaract`ere de l'interpreteur ou caractere de protection decrits plus
haut ne peuvent pas apparaitre dans un nom d'alias. Le texte de
remplacement peut contenir toute entree correcte pour l'interpreteur, y
compris les metacaracteres de l'interpreteur. L'interpreteur verifie si
le premier mot du texte de remplacement est a son tour un alias, mais
un mot identique a un alias en cours de developpement n'est pas
developpe une seconde fois. Ceci signifie qu'on peut, par exemple,
creer un alias ls valant ls -F et bash n'essaiera pas de developper
recursivement le texte de substitution. Si le dernier caractere de la
valeur de l'alias est un blanc, alors le prochain mot de commande
suivant l'alias connaitra aussi le developpement d'alias.
Les alias sont crees et affiches avec la commande alias et supprimes
avec la commande unalias.
Il n'existe pas de mecanisme permettant d'utiliser des arguments dans
le texte de remplacement. S'ils sont necessaires, une fonction de
l'interpreteur devrait etre utilisee (voir FONCTIONS plus bas).
Les alias ne sont pas developpes quand l'interpreteur n'est pas
interactif sauf si l'option expand_aliases de l'interpreteur est creee
par la commande shopt (voir la description de shopt dans COMMANDES
INTERNES DE L'INTERPR'ETEUR plus bas).
Les regles concernant la definition et l'utilisation des alias sont un
peu confuses. Bash lit toujours au moins une ligne d'entree
completement avant d'executer une des commandes de cette ligne. Les
alias sont traites lorsque la commande est lue et non pas lorsqu'elle
est executee. Ainsi, une definition d'alias apparaissant sur la meme
ligne qu'une autre commande ne prend pas effet avant la lecture de la
prochaine ligne d'entree. Autrement dit, une commande placee a la suite
d'une definition d'alias, sur la meme ligne ne sera pas affectee par
cet alias. Ce comportement est egalement important lors de l'execution
des fonctions. Les alias sont traites lorsque la definition de la
fonction est lue et non pas lors de l'execution de cette fonction.
Ainsi des alias definis dans une fonction ne sont pas disponibles avant
la fin de l'execution de la fonction. Pour plus de tranquillite, placez
toujours les definitions d'alias sur des lignes isolees et n'utilisez
jamais la commande alias dans les commandes composees.
Les alias sont surpasses par les fonctions de l'interpreteur dans la
plupart des situations.
FONCTIONS
Une fonction de l'interpreteur, definie comme decrit plus haut, dans
GRAMMAIRE DE L'INTERPR'ETEUR, conserve une suite de commandes pour
execution ulterieure. Lorsque le nom d'une fonction de l'interpreteur
est utilisee comme un simple nom de commande, la liste des commandes
associees a ce nom de fonction est executee. Les fonctions sont
executees dans le contexte de l'interpreteur courant ; aucun nouveau
processus n'est cree pour les interpreter (a la difference d'un
script). Lorsqu'une fonction est executee, les arguments de la fonction
deviennent les parametres positionnels pendant son execution. Le
parametre special # est mis a jour en consequence. Le parametre special
0 reste inchange. Le premier element de la variable FUNCNAME contient
le nom de la fonction pendant son execution.
Tous les autres aspects de l'environnement d'execution de
l'interpreteur sont identiques entre la fonction et le contexte
d'appel, aux exceptions suivantes : les captures de DEBUG et RETURN
(voir la description de la commande interne trap dans COMMANDES
INTERNES DE L'INTERPR'ETEUR plus bas) ne sont pas heritees, a moins que
l'attribut trace ne soit positionne pour la fonction (voir la
description de la commande interne declare plus bas) ou que l'option
d'interpreteur -o functrace n'ait ete activee avec la commande interne
set (auquel cas toutes les fonctions heriteront des captures de DEBUG
et RETURN), et la capture ERR n'est pas heritee a moins que l'option
d'interpreteur -o errtrace n'ait ete activee.
Les variables locales d'une fonction peuvent etre declarees avec la
commande interne local. Dans le cas general, les variables et leurs
valeurs sont partagees entre la fonction et le contexte d'appel.
Si la commande interne return est executee dans une fonction, celle-ci
se termine et l'execution reprend avec la commande suivant l'appel de
fonction. Toute commande associee a la capture de RETURN est executee
avant que l'execution reprenne. Quand une fonction se termine, les
parametres positionnels et le parametre special # reprennent les
valeurs qu'ils avaient avant l'appel de la fonction.
Les noms de fonctions et leurs definitions peuvent etre affiches avec
l'option -f des commandes internes declare ou typeset. Les options -F
de declare ou typeset n'afficheront que les noms de fonctions (et
facultativement le fichier source et le numero de ligne, si l'option
d'interpreteur extdebug est activee). Les fonctions peuvent etre
exportees avec l'option -f de la commande interne export, afin d'etre
automatiquement definies dans les sous-interpreteurs. Une definition de
fonction peut etre supprimee avec l'option -f de la commande interne
unset. Remarquez que les fonctions et variables de l'interpreteur de
meme nom pourront induire a plusieurs elements de memes noms dans
l'environnement passe aux enfants de l'interpreteur. Un soin
particulier doit etre pris dans les cas ou cela peut conduire a un
probleme.
Les fonctions peuvent etre recursives. Aucune limite n'est imposee
quant au nombre d'appels recursifs.
'EVALUATION ARITHM'ETIQUE
L'interpreteur permet, dans certaines circonstances, l'evaluation
d'expressions arithmetiques (voir les commandes internes let et declare
ainsi que D'eveloppement arithm'etique). L'evaluation est effectuee en
utilisant des entiers de longueur fixe, sans verification du
debordement. Neanmoins, la division par 0 est capturee et marquee comme
une erreur. Les operateurs, leur priorite, associativite et leur valeur
sont identiques a ceux du langage C. La liste suivante d'operateurs est
entre operateurs de niveaux de priorite identiques. Les niveaux sont
decrits par ordre de priorite decroissante.
id++ id--
post-increment et post-decrement de variables
++id --id
pre-increment et pre-decrement de variables
- + moins et plus unaires
! ~ negations logique et binaire
** exponentiation
* / % multiplication, division, reste
+ - addition, soustraction
<< >> decalage arithmetique a gauche et a droite
<= >= < >
comparaisons
== != egalite et difference
& ET binaire
^ OU exclusif binaire
| OU binaire
&& ET logique
|| OU logique
expr?expr:expr
operateur conditionnel
= *= /= %= += -= <<= >>= &= ^= |=
affectations
expr1 , expr2
virgule
Les variables de l'interpreteur sont utilisables comme operandes, le
developpement des parametres etant effectue avant l'evaluation
arithmetique. Dans une expression, les variables de l'interpreteur
peuvent egalement etre referencees par leur nom, sans utiliser la
syntaxe de developpement des parametres. Une variable d'interpreteur
vide ou inexistante est evaluee a 0 lorsqu'elle est consultee par son
nom sans utiliser la syntaxe de developpement des parametres. La valeur
d'une variable est evaluee comme une expression arithmetique
lorsqu'elle est consultee, ou lorsqu'une valeur lui est affecte alors
que son attribut integer (entier) a ete positionne en utilisant declare
-i. Une valeur vide est evaluee a 0. Une variable d'interpreteur n'a
donc pas besoin d'avoir son attribut integer positionne pour etre
utilisable dans un calcul.
Les constantes commencant par 0 sont interpretees comme des nombres
octaux. Un entete 0x ou 0X indique une valeur hexadecimale. Sinon, les
nombres ont la forme [base#]n ou la base est un nombre decimal entre 2
et 64 representant la base arithmetique et n est un nombre exprime dans
cette base. Si la base# est omise, la base 10 est utilisee. Les
chiffres superieurs a 9 sont representes par les lettres minuscules,
les lettres majuscules, le @ et le _, dans cet ordre. Si la base est
inferieure ou egale a 36 les minuscules et les majuscules sont
interchangeable pour representer les nombres entre 10 et 35.
Les operateurs sont evalues par ordre de priorite. Les sous-expressions
entre parentheses sont evaluees en premier, ce qui permet de surpasser
les regles de priorite ci-dessus.
CONDITIONS
Les conditions sont utilisees par la commande composee [[ et les
commandes internes test et [ pour verifier l'etat d'un fichier et
effectuer des comparaisons arithmetiques ou sur des chaines. Les
conditions se forment a partir des primitives unaires ou binaires
suivantes. Si n'importe quel argument fichier de l'une des primitives
est de la forme /dev/fd/n, alors le descripteur de fichier n est
examine. Si l'argument fichier de l'une des primitives est parmi
/dev/stdin, /dev/stdout ou /dev/stderr, le descripteur de fichier 0, 1
ou 2, respectivement, est examine.
Sauf indication contraire, les primitives relatives aux fichiers
suivent les liens symboliques et operent sur la cible du lien plutot
que sur le lien lui-meme.
Lorsqu'ils sont utilises avec [[, les operateurs < et > ordonnent d'un
point de vue lexicographique en utilisant les parametres linguistiques
regionaux courants.
Voir la description de la commande interne test (voir COMMANDES
INTERNES DE L'INTERPR'ETEUR plus bas) pour la gestion des parametres
(c'est-a-dire des parametres manquants).
-a fichier
Vrai si le fichier existe.
-b fichier
Vrai si le fichier existe et est un fichier special bloc.
-c fichier
Vrai si le fichier existe et est un fichier special caractere.
-d fichier
Vrai si le fichier existe et est un repertoire.
-e fichier
Vrai si le fichier existe.
-f fichier
Vrai si le fichier existe et est un fichier normal.
-g fichier
Vrai si le fichier existe et a son bit Set-GID positionne.
-h fichier
Vrai si le fichier existe et est un lien symbolique.
-k fichier
Vrai si le fichier existe et a son bit << sticky >> positionne.
-p fichier
Vrai si le fichier existe et est un tube nomme (FIFO).
-r fichier
Vrai si le fichier existe et est accessible en lecture.
-s fichier
Vrai si le fichier existe et a une taille strictement positive.
-t fd Vrai si le descripteur de fichier fd est ouvert et se rapporte a
un terminal.
-u fichier
Vrai si le fichier existe et a son bit Set-UID positionne.
-w fichier
Vrai si le fichier existe et est accessible en ecriture.
-x fichier
Vrai si le fichier existe et est executable.
-O fichier
Vrai si le fichier existe et appartient a l'UID effectif de
l'utilisateur.
-G fichier
Vrai si le fichier existe et appartient au GID effectif du
groupe.
-L fichier
Vrai si le fichier existe et est un lien symbolique.
-S fichier
Vrai si le fichier existe et est une << socket >>.
-N fichier
Vrai si le fichier existe et a ete modifie depuis sa derniere
lecture.
fichier_1 -nt fichier_2
Vrai si le fichier_1 est plus recent que le fichier_2 (selon les
dates de derniere modification) ou si fichier_1 existe et non
fichier_2.
fichier_1 -ot fichier_2
Vrai si le fichier_1 est plus ancien que le fichier_2 ou si
fichier_2 existe et non fichier_1.
fichier_1 -ef fichier_2
Vrai si le fichier_1 et le fichier_2 se rapportent au meme
peripherique et ont les memes numeros d'inoeuds.
-o nom_opt
Vrai si l'option d'interpreteur nom_opt est activee. Consulter
la liste des options plus bas dans la description de l'option -o
de la commande interne set.
-z cha^ine
Vrai si la longueur de la cha^ine est nulle.
cha^ine
-n cha^ine
Vrai si la longueur de la cha^ine est non nulle.
cha^ine_1 == cha^ine_2
cha^ine_1 = cha^ine_2
Vrai si les deux chaines sont egales. Le symbole = devrait etre
utilise avec la commande test pour etre en conformite POSIX.
cha^ine_1 != cha^ine_2
Vrai si les deux chaines sont differentes.
cha^ine_1 < cha^ine_2
Vrai si cha^ine_1 se trouve avant cha^ine_2 dans l'ordre
lexicographique.
cha^ine_1 > cha^ine_2
Vrai si cha^ine_1 se trouve apres cha^ine_2 dans l'ordre
lexicographique.
arg1 OP arg2
OP est l'un des operateurs suivants -eq, -ne, -lt, -le, -gt ou
-ge. Ces operateurs arithmetiques binaires renvoient vrai si
arg1 est respectivement egal, different, inferieur, inferieur ou
egal, superieur, superieur ou egal a arg2. arg1 et arg2 peuvent
etre des entiers positifs ou negatifs.
D'EVELOPPEMENT DES COMMANDES SIMPLES
Lors de l'execution d'une commande simple, l'interpreteur effectue les
developpements, affectations et redirections suivants de gauche a
droite.
1. Les mots que l'analyseur a repere comme affectations de
variables (ceux qui precedent le nom de la commande) et les
redirections sont conservees pour un traitement ulterieur.
2. Les mots qui ne sont ni des affectations de variables ni des
redirections sont developpes. S'il reste des mots apres le
developpement, le premier mot est considere comme le nom d'une
commande et les suivants comme ses arguments.
3. Les redirections sont effectuees comme decrit plus haut dans
REDIRECTIONS.
4. Le texte suivant le signe = de chaque affectation de variable
est sujet au developpement du tilde, des parametres, a la
substitution de commande, au developpement arithmetique et a la
suppression des protections avant d'etre affecte a la variable.
Si aucun nom de commande ne resulte des precedentes operations, les
affectations de variables modifient l'environnement courant de
l'interpreteur. Sinon les variables sont ajoutees a l'environnement de
la commande executee et n'affectent pas l'environnement de
l'interpreteur courant. Si l'une des tentatives d'affectation concerne
une variable en lecture seule, une erreur se produit et la commande
termine avec un etat different de zero.
Si aucun nom de commande n'est obtenu, les redirections sont effectuees
mais ne modifient pas l'environnement de l'interpreteur courant. Une
erreur de redirection conduit a la terminaison de la commande avec un
etat different de zero.
S'il reste un nom de commande apres le developpement, l'execution a
lieu comme decrit plus bas. Sinon la commande termine. Si l'un des
developpements contient une substitution de commande, l'etat final de
la commande est l'etat final de la derniere substitution de commande
effectuee. S'il n'y avait aucune substitution de commande, la commande
termine avec un etat de zero.
EX'ECUTION DES COMMANDES
Apres le decoupage de la ligne de commande en mots, si le resultat est
une commande simple suivie d'une liste facultative d'arguments, les
actions suivantes sont effectuees.
Si le nom de la commande ne contient aucune barre oblique,
l'interpreteur tente de la localiser. S'il existe une fonction de
l'interpreteur de ce nom, elle est appelee comme nous l'avons vu plus
haut dans FONCTIONS. Si le nom n'est pas celui d'une fonction,
l'interpreteur le recherche dans la liste des commandes internes. Si
une correspondance est trouvee, cette commande interne est appelee.
Si le nom n'est ni celui d'une fonction de l'interpreteur, ni celui
d'une commande interne et s'il ne contient pas de barre oblique, bash
va chercher dans chacun des elements de PATH un repertoire contenant un
fichier executable du nom desire. Bash utilise une table de hachage
pour memoriser les chemins d'acces complets aux fichiers executables
(voir la commande hash dans COMMANDES INTERNES DE L'INTERPR'ETEUR plus
bas). Une recherche complete dans les repertoires du PATH n'est
effectuee que si la commande ne se trouve pas dans la table de hachage.
Si la recherche est infructueuse, l'interpreteur recherche une fonction
de l'interpreteur appelee command_not_found_handle. Si cette fonction
existe, elle est appelee avec pour arguments la commande d'origine et
ses arguments, et l'etat final de la fonction devient l'etat final de
l'interpreteur. Si cette fonction n'est pas definie, l'interpreteur
affiche un message d'erreur et renvoie un etat final de 127.
Si la recherche reussit ou si le nom de la commande contient une ou
plusieurs barres obliques, l'interpreteur execute le programme demande
dans un environnement d'execution distinct. L'argument 0 est configure
au nom indique et les eventuels arguments restants de la commande sont
configures aux arguments indiques.
Si cette execution echoue parce que le programme n'est pas un
executable et si le fichier n'est pas un repertoire, il est pris pour
un script, un fichier contenant des commandes d'interpreteur. Un
sous-interpreteur est alors cree pour executer ce script. Ce
sous-interpreteur se reinitialisera lui-meme, comme si un nouvel
interpreteur avait ete appele pour executer le script, a la difference
qu'il continuera a memoriser l'emplacement des commandes connues de son
parent (voir hash dans COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas).
Si le programme est un fichier commencant par #!, le reste de la
premiere ligne indique un interprete pour ce programme. L'interpreteur
se chargera d'executer l'interprete indique sur les systemes
d'exploitation qui ne gerent pas eux-memes ce format d'executable. Les
arguments de l'interprete consistent en un seul argument facultatif
fourni sur la premiere ligne du fichier a la suite du nom de
l'interprete, suivi du nom du programme, suivi des arguments de la
commande s'il y en a.
ENVIRONNEMENT D'EX'ECUTION DES COMMANDES
L'interpreteur fournit un environnement d'ex'ecution consistant en
l'ensemble des elements suivants :
o les fichiers ouverts herites par l'interpreteur a son appel et
modifies par les redirections fournies a la commande interne
exec ;
o le repertoire de travail courant comme configure par cd, pushd
ou popd ou herite par l'interpreteur a son appel ;
o le masque de creation de fichier comme configure par umask ou
herite du parent de l'interpreteur ;
o les captures courantes configurees par trap ;
o les parametres de l'interpreteur configures par des affectations
de variables, avec la commande interne set, ou herites de
l'environnement du parent de l'interpreteur ;
o les fonctions de l'interpreteur definies lors de l'execution ou
heritees de l'environnement du parent de l'interpreteur ;
o les options activees a l'appel (par defaut ou avec les arguments
de ligne de commande) ou par set ;
o les options activees par shopt ;
o les alias de l'interpreteur definies par la commande alias ;
o les ID des divers processus, y compris ceux des taches en
arriere-plan, la valeur de $$ et la valeur de PPID.
Lorsqu'une commande differente d'une commande interne ou d'une fonction
de l'interpreteur doit etre executee, elle est appelee dans un
environnement d'execution separe constitue de ce qui suit. Sauf
indication contraire, les valeurs sont heritees de l'environnement de
l'interpreteur :
o les fichiers ouverts de l'interpreteur, ainsi que toutes
modifications et ajouts precises par les redirections de la
commande ;
o le repertoire de travail courant ;
o le masque de creation de fichiers ;
o les variables et les fonctions de l'interpreteur marquees pour
l'exportation, ainsi que les variables exportees specialement
pour la commande ;
o les captures interceptees par l'interpreteur sont reinitialisees
aux valeurs heritees de l'interpreteur parent et les captures
ignorees par l'interpreteur restent ignorees.
Une commande appelee dans un environnement distinct ne peut pas
affecter l'environnement d'execution de l'interpreteur.
Les substitutions de commande, les commandes groupees entre parentheses
et les commandes asynchrones sont appelees dans un environnement de
sous-interpreteur qui est une copie de celui de l'interpreteur, mais
les captures interceptees par l'interpreteur sont reinitialisees aux
valeurs que l'interpreteur avait heritees de son parent a son appel.
Les commandes internes appelees dans une conduite sont aussi executees
dans un environnement de sous-interpreteur. Les modifications apportees
a l'environnement d'un sous-interpreteur n'affectent aucunement
l'environnement d'execution de l'interpreteur.
Les sous-interpreteurs engendres pour executer les substitutions de
commande heritent des valeurs de l'option -e de l'interpreteur parent.
En dehors du mode posix, bash efface l'option -e de tels
sous-interpreteurs.
Si une commande est suivie par un & et que le controle des taches n'est
pas actif, l'entree standard par defaut de la commande est le fichier
vide /dev/null. Sinon, la commande appelee herite des descripteurs de
fichiers de l'interpreteur appelant comme modifies par les
redirections.
ENVIRONNEMENT
Quand un programme est appele, il recoit un tableau de chaines que l'on
appelle environnement. Il s'agit d'une liste de couples nom-valeur, de
la forme nom=valeur.
L'interpreteur fournit plusieurs facons de gerer l'environnement. Au
demarrage, l'interpreteur analyse son propre environnement et cree un
parametre pour chaque nom trouve, en le marquant comme exportable vers
les processus enfants. Les commandes executees heritent de cet
environnement. Les commandes export et declare -x permettent d'ajouter
ou de supprimer des parametres ou des fonctions de l'environnement. Si
la valeur d'un parametre de l'environnement est modifiee, la nouvelle
valeur devient une partie de l'environnement et elle remplace
l'ancienne. L'environnement herite par toute commande executee est
l'environnement initial de l'interpreteur, dont les valeurs peuvent
etre modifiees dans l'interpreteur, sans les elements supprimes par la
commande unset, et avec les elements ajoutes par les commandes export
et declare -x.
L'environnement d'une commande simple ou d'une fonction peut etre
augmente temporairement, en la faisant preceder des affectations de
parametres, comme nous l'avons vu plus haut dans PARAM`ETRES. Ces
affectations ne concernent que l'environnement vu par cette commande.
Si l'option -k est configuree (voir plus bas la commande interne set),
alors toutes les affectations de parametres sont placees dans
l'environnement d'une commande executee et non seulement celles qui
precedent son nom.
Quand bash appelle une commande externe, la variable _ est configuree
en chemin d'acces complet a cette commande et elle est transmise dans
l'environnement.
'ETAT FINAL
L'etat final d'une commande executee est la valeur renvoyee par l'appel
systeme waitpid ou fonction equivalente. Les etats finaux prennent
leurs valeurs entre 0 et 255, neanmoins, comme explique plus bas,
l'interpreteur peut utiliser les valeurs superieures a 125 de facon
particuliere. Les etats finaux des commandes internes et composees sont
egalement limitees a cette plage. Sous certaines conditions,
l'interpreteur utilisera des valeurs particulieres pour indiquer des
modes d'echec particuliers.
Du point de vue de l'interpreteur, une commande qui termine avec etat
final valant zero a reussi. Un etat final de zero indique le succes. Un
etat final different de zero indique un echec. Quand une commande se
termine par un signal mortel N, bash utilise la valeur 128+N comme etat
final.
Si une commande n'est pas trouvee, le processus enfant cree pour
l'executer renvoie un etat de 127. Si une commande est trouvee mais pas
executable, la valeur renvoyee est 126.
Si une commande echoue a cause d'une erreur survenue lors d'un
developpement ou des redirections, l'etat final est strictement plus
grand que zero.
Les commandes internes renvoient un etat de 0 (vrai) si reussies et une
valeur differente de zero (faux) si une erreur se produit pendant leur
execution. Toutes les commandes internes renvoient un etat final de 2
pour indiquer un usage incorrect.
Bash lui-meme renvoie l'etat final de la derniere commande executee, a
moins qu'une erreur de syntaxe ne se produise, auquel cas il termine
avec une valeur differente de zero. Voir aussi plus bas la commande
interne exit.
SIGNAUX
Quand bash fonctionne de facon interactive, en absence de toute
capture, il ignore SIGTERM (c'est ainsi que kill 0 ne tue pas un
interpreteur interactif) et SIGINT est intercepte et gere (c'est ainsi
que la commande interne wait est interruptible). Dans tous les cas,
bash ignore SIGQUIT. Si le controle des taches est actif, bash ignore
SIGTTIN, SIGTTOU et SIGTSTP.
Les commandes externes lancees par bash ont les gestionnaires de
signaux configures aux valeurs heritees par l'interpreteur de son
parent. Quand le controle des taches n'est pas actif, les taches en
arriere-plan ignorent les signaux SIGINT et SIGQUIT en plus des
gestionnaires herites. Les commandes executees en tant que resultat
d'une substitution de commande ignorent les signaux de controle de
taches emis par le clavier SIGTTIN, SIGTTOU et SIGTSTP.
Par defaut, l'interpreteur termine a la reception de SIGHUP. Avant de
terminer, un interpreteur interactif renvoie le SIGHUP a toutes les
taches en cours ou suspendues. Les taches suspendues recoivent aussi
SIGCONT pour s'assurer qu'elles recoivent bien le SIGHUP. Pour
empecher l'interpreteur d'envoyer le signal a une tache particuliere,
elle devrait etre supprimee de la table des taches avec la commande
interne disown (voir COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas) ou
marquee comme exemptee de SIGHUP en utilisant disown -h.
Si l'option d'interpreteur huponexit a ete configuree avec la fonction
shopt, bash envoie un signal SIGHUP a toutes les taches lorsqu'un
interpreteur de commandes de connexion interactif termine.
Lorsque bash attend qu'une commande se termine et qu'il recoit un
signal pour lequel une capture a ete configuree, la capture ne sera pas
executee tant que la commande n'est pas terminee. Lorsque bash attend
la fin d'une commande asynchrone par la commande interne wait, la
reception d'un signal pour lequel une capture a ete configuree conduira
a un retour immediat de la commande interne wait avec un etat final
superieur a 128, a la suite de quoi la capture est immediatement
executee.
CONTR^OLE DES T^ACHES
Le contr^ole des t^aches se refere a la capacite de suspendre (suspend)
selectivement l'execution d'un processus et de la reprendre (resume)
ulterieurement. L'utilisateur beneficie generalement de cette
possibilite grace a l'action conjointe du pilote de terminal du noyau
de systeme d'exploitation et de bash.
L'interpreteur associe une t^ache a chaque conduite. Il maintient une
table des taches en cours d'execution, cette table pouvant etre
affichee avec la commande jobs. Quand bash lance une tache de facon
asynchrone (en arri`ere-plan), il affiche une ligne qui ressemble a :
[1] 25647
Cette ligne indique que la tache est la tache numero 1 et que le PID du
dernier processus dans la conduite associee a cette tache est 25647.
Tous les processus d'une meme conduite font partie de la meme tache.
Bash utilise la notion de t^ache comme base du controle des taches.
Pour faciliter l'implementation d'une interface utilisateur pour le
controle de taches, le systeme introduit la notion d'ID de groupe de
processus associ'es `a un terminal. Les membres de ce groupe de processus
(processus dont le GID est egal au Process Group ID du terminal
courant) recoivent les signaux emis par le clavier comme SIGINT. Ces
processus sont dits au premier plan. Les processus en arri`ere-plan sont
ceux dont le Process-GID differe de celui du terminal ; ils sont
indifferents aux signaux emis par le clavier. Seuls les processus au
premier plan peuvent lire depuis le terminal ou, si l'utilisateur
l'indique avec stty tostop, y ecrire. Les processus en arriere-plan qui
tentent une lecture (ou une ecriture si stty tostop est actif) dans le
terminal recoivent un signal SIGTTIN (SIGTTOU) emis par le pilote du
terminal du noyau, qui, sauf interception, suspend le processus.
Si le systeme d'exploitation sur lequel bash fonctionne permet le
controle des taches, bash fournit des outils pour l'utiliser. La frappe
d'un caractere de suspension (generalement ^Z, Controle-Z) pendant
l'execution d'un processus conduit a la suspension de celui-ci et
redonne la main a bash. La frappe d'un caractere de suspension diff'er'ee
(generalement ^Y, Controle-Y) conduira a la suspension du processus au
moment ou il tentera de lire des saisies depuis le terminal et la main
reviendra a bash. L'utilisateur peut alors manipuler l'etat de cette
tache en utilisant la commande bg (background = arriere-plan) pour en
continuer l'execution en arriere-plan, la commande fg (foreground =
premier plan) pour la continuer au premier plan ou encore la commande
kill pour la tuer. Un ^Z s'applique immediatement et a pour effet de
bord d'eliminer les sorties et saisies en attente.
Plusieurs facons permettent de se rapporter a une tache. Le caractere %
introduit une specification de tache (jobspec). Il est possible de se
rapporter a la tache numero n avec %n. Il est egalement possible de se
rapporter a une tache en utilisant un prefixe du nom utilise pour le
lancer ou une sous-chaine qui apparait dans sa ligne de commande. Par
exemple, %ce se rapporte a une tache suspendue nommee ce. Si ce prefixe
correspond a plusieurs taches, bash signale une erreur. Utiliser %?ce,
d'un autre cote, se rapporte a toute tache contenant la chaine ce dans
sa ligne de commande. Si la sous-chaine correspond a plusieurs taches,
bash signale une erreur. Les symboles %% et %+ se rapportent a la
notion de t^ache courante de l'interpreteur, c'est-a-dire la derniere
tache suspendue alors qu'elle etait au premier plan ou demarree en
arriere-plan. La t^ache pr'ec'edente peut etre designee en utilisant %-.
Si une seule tache existe, %+ et %- peuvent tous deux etre utilises
pour se rapporter a cette tache. Dans les affichages se rapportant aux
taches (par exemple la sortie de la commande jobs), la tache courante
est toujours annotee d'un + et la tache precedente d'un -. Un simple %
(non accompagne de specification de tache) se rapporte egalement a la
tache courante.
Il suffit de nommer une tache pour la ramener au premier plan : %1 est
synonyme de << fg %1 >> et ramene la tache 1 de l'arriere-plan vers le
premier plan. De meme, << %1 & >> reprend la tache 1 en arriere-plan,
de facon equivalente a << bg %1 >>.
L'interpreteur est immediatement prevenu lorsqu'une tache change
d'etat. Normalement bash attend d'etre pret a afficher son interpreteur
avant de signaler des changements dans l'etat des taches, afin de ne
pas interrompre toute autre sortie. Si l'option -b de la commande
interne set est activee, bash signalera de telles modifications
immediatement. Toute capture sur SIGCHLD est executee pour chaque
enfant qui termine.
Si une tentative visant a terminer bash est realisee alors que des
taches sont suspendues (ou, si l'option d'interpreteur checkjobs a ete
activee par la commande interne shopt, en cours d'execution),
l'interpreteur affiche un message d'avertissement, et, si l'option
d'interpreteur checkjobs est activee, affiche la liste les taches et
leurs etats. La commande jobs peut alors etre utilisee pour examiner
leur etat. Si une deuxieme tentative est faite pour terminer sans
commande intercalaire, l'interpreteur n'affiche aucun autre
avertissement et les taches suspendues sont terminees.
INVITES
Quand il est execute de facon interactive, bash affiche l'invite de
base PS1 des qu'il est pret a lire une commande et l'invite secondaire
PS2 quand il a besoin de plus de saisies pour executer une commande.
Bash permet de personnaliser ces chaines d'invite, en inserant un
certain nombre de caracteres speciaux proteges par des contre-obliques
qui sont decodes comme suit :
\a un caractere ASCII d'alarme (07) ;
\d la date au format << Jour_de_la_semaine Mois Quantieme >>
(par exemple : << Tue May 26 >>) ;
\D{format}
le format est passe a strftime(3) et le resultat est
insere dans la chaine de l'invite ; un format vide
implique une representation du temps specifique aux
parametres linguistiques regionaux. Les accolades sont
necessaires ;
\e un caractere d'echappement ASCII (033) ;
\h le nom de la machine, jusqu'au premier point << . >> ;
\H le nom de la machine ;
\j le nombre de taches actuellement gerees par
l'interpreteur ;
\l le nom de base du nom de peripherique de terminal de
l'interpreteur ;
\n saut de ligne ;
\r retour chariot (<< carriage return >>) ;
\s le nom de l'interpreteur, c'est-a-dire le nom de base de
$0 (la portion suivant la derniere barre oblique) ;
\t l'heure actuelle au format HH:MM:SS sur 24 heures ;
\T l'heure actuelle au format HH:MM:SS sur 12 heures ;
\@ l'heure actuelle au format HH:MM sur 12 heures ;
\A l'heure actuelle au format HH:MM sur 24 heures ;
\u le nom de l'utilisateur ;
\v la version de bash (par exemple, 2.00) ;
\V le numero de version complet (avec niveau de correctifs)
de bash, (par exemple, 2.00.0) ;
\w le repertoire de travail courant, avec $HOME abrege en
tilde << ~ >> (utilise la valeur de la variable
PROMPT_DIRTRIM) ;
\W le nom de base du repertoire de travail courant, avec
$HOME abrege en tilde (<< ~ >>) ;
\! le numero d'historique de la commande ;
\# le numero de la commande ;
\$ # si l'UID effectif est 0, $ sinon ;
\nnn le caractere de code octal nnn ;
\\ une contre-oblique ;
\[ debute une suite de caracteres non imprimables, qui
peuvent etre utilises pour inclure une suite de
caracteres de controle du terminal dans l'interpreteur ;
\] finit une suite de caracteres non imprimables.
Le numero de commande et le numero d'historique sont generalement
differents : le numero d'historique d'une commande correspond a sa
position dans la file d'historique qui peut contenir des commandes
relues depuis cette liste (voir HISTORIQUE plus bas), alors que le
numero de commande est simplement une position dans la suite de
commandes executees depuis le debut de la session d'interpreteur
courante. Apres que la chaine ait ete decodee, elle est soumise au
developpement des parametres, a la substitution de commande, au
developpement arithmetique, au decoupage des mots et a la suppression
des protections, selon la valeur de l'option d'interpreteur promptvars
(voir la description de shopt dans COMMANDES INTERNES DE L'INTERPR'ETEUR
plus bas).
READLINE
C'est la bibliotheque qui gere la lecture des saisies lors des sessions
interactives de l'interpreteur, a moins que l'option --noediting ne
soit indiquee a l'appel de l'interpreteur. Par defaut les commandes
d'edition de ligne sont similaires a celles d'Emacs. Une interface
d'edition de ligne dans le style vi est aussi disponible. Pour arreter
l'edition de ligne apres le demarrage de l'interpreteur, utiliser
l'option +o emacs ou +o vi de la commande interne set (voir COMMANDES
INTERNES DE L'INTERPR'ETEUR plus bas).
Notation readline
Dans ce paragraphe on utilisera la notation << a la Emacs >> pour
indiquer les frappes de touches. Les touches Controle sont notees
C-touche, par exemple C-n signifie Controle-N. De meme, les touches
M'eta sont notees par M-touche, ainsi M-x signifie Meta-X. (Sur les
claviers sans touches M'eta, M-x signifie ESC x, c'est-a-dire presser la
touche d'Echappement puis la touche x. Cela fait de ESC le pr'efixe
m'eta. La combinaison M-C-x signifie ESC-Controle-x ou encore presser la
touche d'Echappement puis maintenez la touche Controle enfoncee tout en
pressant la touche x.)
Les commandes readline peuvent recevoir des arguments numeriques, qui
fonctionnent en regle generale comme compteurs de repetitions. Parfois,
cependant, c'est le signe de l'argument qui est significatif.
L'utilisation d'un argument negatif pour une commande agissant dans un
sens donne (par exemple kill-line) conduit cette commande a agir dans
la direction opposee. Les commandes dont le comportement avec les
arguments differe de ceci sont indiquees plus bas.
Lorsqu'une commande est indiquee comme d'etruisant du texte, le texte
efface est en fait sauvegarde pour une eventuelle recuperation
ulterieure (<< yanking >>). Il est conserve dans un tampon circulaire
(<< kill ring >>). Les suppressions successives conduisent a
l'accumulation du texte en un seul bloc qui peut etre recupere en une
fois. Les commandes non destructives separent les blocs de textes dans
le tampon circulaire.
Initialisation de readline
Readline est personnalise en placant des commandes dans un fichier
d'initialisation (le fichier inputrc). Le nom de ce fichier est pris
dans la variable de l'interpreteur INPUTRC. Si cette variable est
inexistante, le nom par defaut est ~/.inputrc. Lorsqu'un programme
utilisant la bibliotheque readline demarre, le fichier d'initialisation
est lu et les raccourcis clavier et les variables sont mis en place. Il
n'y a que quelques constructions elementaires possibles dans le fichier
d'initialisation de readline. Les lignes blanches sont ignorees. Les
lignes commencant par # sont des commentaires. Les lignes commencant
par $ indiquent des constructions conditionnelles. Les autres lignes
indiquent des raccourcis clavier et des parametrages de variables.
Les raccourcis clavier par defaut peuvent etre modifies par un fichier
inputrc. D'autres programmes qui utilisent cette bibliotheque peuvent
ajouter leurs propres commandes et raccourcis.
Par exemple, en placant
M-Control-u: universal-argument
ou
C-Meta-u: universal-argument
dans le fichier inputrc, on associera la suite de touches M-C-u a la
commande readline universal-argument.
Les caracteres symboliques suivants sont acceptes : RUBOUT, DEL, ESC,
LFD, NEWLINE, RET, RETURN, SPC, SPACE et TAB.
En plus des noms de commandes, readline permet d'associer a une touche
une chaine de caracteres qui sera inseree lorsque la touche est pressee
(une macro).
Raccourcis clavier readline
La syntaxe de definition des raccourcis clavier dans le fichier inputrc
est simple. Tout ce qui est necessaire est le nom de la commande ou le
texte d'une macro et la suite de touches a laquelle il faut l'associer.
Les noms de touches peuvent etre indiques de l'une des deux facons :
comme un nom de touche symbolique, eventuellement precede des prefixes
Meta- ou Control- ou sous forme d'une suite de touches.
En utilisant la forme touche:nom_de_fonction ou macro, touche est le
nom de la touche en anglais. Par exemple :
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
Dans l'exemple ci-dessus, C-u est associe a la fonction
universal-argument, M-DEL a la fonction backward-kill-word et C-o a
l'execution de la macro exprimee dans la partie gauche (c'est-a-dire,
inserer le texte ``> output'' sur la ligne).
Avec la seconde forme, "touches":nom_de_fonction ou macro, touches
differe de touche ci-dessus en ce que les chaines notant une suite
complete de touches peut etre indiquee en placant la suite entre
guillemets doubles. Certaines suites de touches d'echappement dans le
style GNU Emacs peuvent etre utilisees, comme dans l'exemple suivant,
mais les noms de caracteres symboliques ne sont pas reconnus.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
Dans cet exemple, C-u est a nouveau associe a la fonction
universal-argument, C-x C-r a la fonction re-read-init-file et ESC [ 1
1 ~ a l'insertion du texte ``Function Key 1''.
Le jeu complet des suites de caracteres d'echappements du style GNU
Emacs est :
\C- prefixe Controle ;
\M- prefixe Meta ;
\e caractere d'echappement ;
\\ contre-oblique ;
\" un guillemet " litteral ;
\' un guillemet ' litteral.
En plus des suites de caracteres d'echappement dans le style GNU Emacs,
un second jeu de suites de caracteres d'echappement par contre-obliques
est disponible :
\a alerte (alarme) ;
\b effacement arriere (<< backspace >>) ;
\d effacement ;
\f saut de page (<< form feed >>) ;
\n saut de ligne ;
\r retour chariot (<< carriage return >>) ;
\t tabulation horizontale ;
\v tabulation verticale ;
\nnn le caractere 8 bits dont la valeur octale est nnn (un a
trois chiffres) ;
\xHH le caractere 8 bits dont la valeur hexadecimale est HH
(un ou deux chiffres hexadecimaux) ;
Lorsqu'on saisit le texte d'une macro, il faut utiliser des guillemets
simples ou doubles pour indiquer la definition de la macro. Les textes
non proteges sont consideres comme des noms de fonctions. Dans le corps
de la macro, les protections par contre-oblique decrites plus haut sont
developpees. La contre-oblique protegera tout autre caractere dans le
texte de la macro, y compris " et '.
Bash permet d'afficher ou de modifier les raccourcis clavier readline
avec la commande interne bind. On peut basculer d'un mode d'edition a
l'autre en mode interactif en utilisant l'option -o de la commande
interne set (voir COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas).
Variables de readline
Readline dispose de variables permettant de personnaliser encore plus
son comportement. Une variable peut etre configuree dans le fichier
inputrc avec une affectation de la forme
set nom_de_variable valeur
Sauf indication contraire, les variables de readline prennent les
valeurs On ou Off (la casse etant sans importance). Les noms de
variables non reconnues sont ignores. Lorsqu'une valeur de variable est
lue, les variables vides ou de valeur nulle, << on >> (insensible a la
casse) et << 1 >> sont equivalent a On. Toutes les autres valeurs sont
equivalentes a Off. Les variables et leurs valeurs par defaut, sont :
bell-style (audible)
Cette variable commande readline lorsqu'il faut declencher
l'alarme du terminal. Si configuree a none, readline n'emet
jamais d'alarme. Si configuree a visible, readline utilise une
alarme visuelle s'il y en a une disponible. Si configuree a
audible, readline essaie de faire sonner l'alarme du terminal.
bind-tty-special-chars (On)
Si configuree a On, readline tente d'associer les caracteres de
controle traites specialement par le pilote de terminal du noyau
a leurs equivalents readline.
comment-begin (<< # >>)
Cette chaine est inseree quand la commande readline
insert-comment est executee. Cette commande est associee a M-#
en mode Emacs et a # en mode de commande vi.
completion-ignore-case (Off)
Si configuree a On, readline effectue les correspondances et
completements de noms de fichiers sans tenir compte de la casse.
completion-prefix-display-length (0)
La longueur, en caracteres, du prefixe commun d'une liste de
completements possibles affiche sans modification. Si configuree
en valeur positive, les prefixes communs plus longs que cette
valeur sont remplaces par une ellipse lors de l'affichage des
completements possibles.
completion-query-items (100)
Ceci determine quand l'utilisateur est interroge pour voir le
nombre de completements possibles produits par la commande
possible-completions. Elle peut etre configuree a toute valeur
entiere positive. Si le nombre de completements possibles est
superieur ou egal a la valeur de cette variable, il est demande
a l'utilisateur s'il veut ou non les voir ; sinon, ils sont
simplement affiches sur le terminal.
convert-meta (On)
Si configuree a On, readline transformera les caracteres avec
leur huitieme bit a 1 en suite de caracteres ASCII en supprimant
le huitieme bit et en inserant comme prefixe un caractere
d'echappement (en fait, en utilisant le caractere d'echappement
comme pr'efixe m'eta).
disable-completion (Off)
Si configuree a On, readline empechera le completement des mots.
Les caracteres de completement seront inseres sur la ligne comme
s'ils avaient ete associes a self-insert.
editing-mode (emacs)
Commande si readline doit demarrer avec des raccourcis clavier
similaires a Emacs ou a vi. editing-mode peut etre positionne
soit a emacs, soit a vi.
echo-control-characters (On)
Si configuree a On, sur les systemes d'exploitation le
permettant, readline affiche un caractere correspondant a un
signal provenant du clavier.
enable-keypad (Off)
Quand configuree a On, readline essayera d'activer le pave
numerique de l'application une fois appelee. Sur certains
systemes, c'est necessaire pour utiliser les fleches.
enable-meta-key (On)
Quand configuree a On, readline essayera d'activer toutes les
touches de modificateur M'eta que le terminal peut prendre en
charge une fois appele. Sur de nombreux terminaux, la touche
M'eta est utilisee pour saisir des caracteres sur huit bits.
expand-tilde (Off)
Si configuree a On, le developpement du tilde est effectue
lorsque readline tente un completement de commandes.
history-preserve-point (Off)
Si configuree a On, le programme d'historique tente de placer le
curseur au meme endroit sur chaque ligne d'historique recuperee
avec previous-history ou next-history.
history-size (0)
Configure le nombre d'elements sauvegardes dans la file de
l'historique. Si configuree a zero, le nombre d'elements de la
file de l'historique n'est pas limite.
horizontal-scroll-mode (Off)
Quand configuree a On, readline utilisera une seule ligne
d'affichage et fera defiler la saisie horizontalement sur une
seule ligne d'ecran quand elle devient plus longue que la
largeur de l'ecran, plutot que de faire un retour a la ligne.
input-meta (Off)
Si configuree a On, readline acceptera des saisies sur huit bits
(autrement dit il ne supprimera pas le huitieme bit), quel que
soit le terminal utilise. Le nom meta-flag est un synonyme pour
cette variable.
isearch-terminators (<< C-[C-J >>)
La chaine de caracteres qui doit terminer une recherche
incrementale sans que le caractere ne soit execute comme une
commande. Si cette variable n'a pas recu de valeur, les
caracteres ESC et C-J termineront une recherche incrementale.
keymap (emacs)
Configure le jeu de raccourcis readline courant. L'ensemble des
noms corrects de jeux de raccourcis est emacs, emacs-standard,
emacs-meta, emacs-ctlx, vi, vi-command et vi-insert. vi est
equivalent a vi-command ; emacs est equivalent a emacs-standard.
La valeur par defaut est emacs ; la valeur de editing-mode
modifie aussi le jeu de raccourcis par defaut.
mark-directories (On)
Si configuree a On, une barre oblique est ajoutee aux noms de
repertoires.
mark-modified-lines (Off)
Si configuree a On, les lignes d'historique qui ont ete
modifiees seront precedees a l'affichage d'un asterisque (*).
mark-symlinked-directories (Off)
Si configuree a On, une barre oblique est ajoutee aux noms
completes si ce sont des liens symboliques vers des repertoires
(selon la valeur de mark-directories).
match-hidden-files (On)
Cette variable, quand elle est configuree a On, conduit readline
a faire correspondre des fichiers dont le nom commence par un
<< . >> (fichiers caches) lors du completement de noms de
fichiers, a moins que le << . >> de tete ne soit fourni par
l'utilisateur dans le nom de fichier a completer.
output-meta (Off)
Si configuree a On, readline affichera directement les
caracteres ayant leur huitieme bit a 1, plutot que d'utiliser
une suite de caracteres d'echappement avec prefixe meta.
page-completions (On)
Si configuree a On, readline utilise un afficheur de texte
interne du type more pour afficher les completements possibles
sur un seul plein ecran.
print-completions-horizontally (Off)
Si configuree a On, readline affichera les completements
correspondants tries horizontalement dans l'ordre alphabetique
plutot que verticalement.
revert-all-at-newline (Off)
Si configuree a On, readline annulera toutes les modifications
des lignes d'historique avant de s'arreter quand accept-line est
execute. Par defaut les lignes d'historique peuvent etre
modifiees et conservent les listes d'annulation individuelles au
fur et a mesure des appels a readline.
show-all-if-ambiguous (Off)
Ceci modifie le comportement par defaut des fonctions de
completement. Si configuree a On, les mots qui ont plus d'un
completement possibles conduisent a l'affichage immediat des
correspondances plutot qu'a l'emission d'une alarme.
show-all-if-unmodified (Off)
Ceci modifie le comportement par defaut des fonctions de
completement de facon similaire a show-all-if-ambiguous. Si
configuree a On, les mots qui ont plus d'un completement
possible sans aucun completement partiel possible (les
completements possibles ne partagent pas de prefixe commun)
conduisent a l'affichage immediat des correspondances plutot
qu'a l'emission d'une alarme.
skip-completed-text (Off)
Si configuree a On, modifie le comportement par defaut du
completement lors de l'insertion d'une unique correspondance
dans la ligne. Elle n'est utilisee que lors d'un completement
effectue au milieu d'un mot. Si elle est activee, readline
n'insere pas de caracteres de completement correspondant a des
caracteres situes apres le curseur dans le mot en train d'etre
complete, ainsi les parties du mots situees apres le curseur ne
sont pas dupliquees.
visible-stats (Off)
Si configuree a On, un caractere indiquant le type de fichier,
comme signale par stat(2) est ajoute aux noms de fichiers en
affichant les completements possibles.
Constructions conditionnelles de readline
Readline implemente un mecanisme inspire des fonctionnalites de
compilation conditionnelle du pre-processeur C qui permet d'effectuer
le parametrage des raccourcis clavier et des variables selon les
resultats de tests. Il y a quatre directives d'analyse utilisees.
$if La structure $if permet de choisir les raccourcis selon le mode
d'edition, le terminal utilise ou l'application utilisant
readline. Le texte du test va jusqu'a la fin de la ligne ; aucun
caractere n'est necessaire pour le delimiter.
mode La forme mode= de la directive $if est utilisee pour
verifier si readline est en mode emacs ou vi. Ceci peut
etre utilise conjointement a la commande set keymap, par
exemple pour ne configurer les raccourcis des jeux de
raccourcis emacs-standard et emacs-ctlx que si readline
demarre en mode emacs.
term La forme term= peut etre utilisee pour ajouter des
raccourcis clavier specifiques au terminal, comme
associer des suites de touches produites par des touches
de fonction du terminal. Le mot a droite du signe = est
compare a la fois au nom complet du terminal et a la
portion de nom du terminal qui precede le premier signe
-. Ceci permet, par exemple, de faire correspondre sun
avec a la fois sun et sun-cmd.
application
La structure application est utilisee pour inclure des
parametrages specifiques a chaque application. Chaque
programme utilisant la bibliotheque readline configure un
nom d'application et un fichier d'initialisation peut
tester une valeur particuliere. Ce peut etre utilise pour
associer des suites de touches a des fonctions utiles
pour un certain programme. Par exemple, les commandes
suivantes ajoutent une suite de touches qui protege le
mot courant ou precedant dans Bash :
$if Bash
# Proteger le mot courant ou le precedant
"\C-xq": "\eb\"\ef\""
$endif
$endif Cette commande, comme on l'a vu dans l'exemple ci-dessus,
termine une commande $if.
$else Permet d'ajouter des commandes qui seront executees si un $if
echoue.
$include
Cette directive prend un seul nom de fichier comme argument et y
lit les commandes et les raccourcis. Par exemple, la directive
suivante lirait le fichier /etc/inputrc :
$include /etc/inputrc
Recherche
Readline fournit des commandes de recherche au sein de l'historique de
commandes (voir HISTORIQUE plus bas) des lignes contenant une chaine
donnee. Il y a deux modes de recherche : incr'emental et non
incr'emental.
Les recherches incrementales commencent avant meme que l'utilisateur
n'ait termine de saisir la chaine recherchee. A chaque caractere saisi,
readline affiche l'element suivant de l'historique qui correspond a la
chaine deja entree. Une recherche incrementale necessite seulement le
nombre de caracteres indispensable pour retrouver l'element
d'historique desire. Les caracteres se trouvant dans la variable
isearch-terminators servent a terminer une recherche incrementale. Si
aucune valeur n'a ete affectee a cette variable, les caracteres
Echappement (<< Escape >>) et Controle-J terminent une recherche
incrementale. Controle-G permet d'interrompre une recherche
incrementale et de restaurer la ligne originale. Lorsque la recherche
est finie, l'element d'historique contenant la chaine desiree devient
la ligne courante.
Pour trouver les autres elements correspondant dans la file
d'historique, saisissez selon Controle-S ou Controle-R. Ceci
recherchera en avant ou en arriere dans l'historique l'element suivant
correspondant a la chaine saisie jusque-la. Toute autre suite de
touches associee a une commande readline interrompra la recherche et
executera la commande. Par exemple, un saut de ligne interrompra la
recherche et acceptera la ligne, executant ainsi la commande de la file
d'historique.
Readline se souvient de la derniere chaine de recherche incrementale.
Si deux Controle-R sont tapes sans caractere pour definir une nouvelle
recherche de chaine, toute chaine memorisee sera utilisee.
Les recherches non incrementales lisent la chaine desiree en entier
avant de demarrer la recherche de correspondance dans la liste
d'historique. La chaine peut etre saisie par l'utilisateur ou faire
partie du contenu de la ligne courante.
Noms des commandes readline
Ce qui suit est une liste des noms de commandes et les suites de
touches auxquelles elles sont associees par defaut. Les noms de
commandes sans suite de touche les accompagnant ne sont pas associees
par defaut. Dans les descriptions suivantes, le curseur (<< point >>)
se rapporte a la position courante du curseur et la marque se rapporte
a une position de curseur sauvegardee par la commande set-mark. Le
texte entre le curseur et la marque est designe comme la zone.
Commandes de d'eplacement
beginning-of-line (C-a)
Saut au debut de la ligne courante.
end-of-line (C-e)
Saut a la fin de la ligne.
forward-char (C-f)
Avancer d'un caractere.
backward-char (C-b)
Reculer d'un caractere.
forward-word (M-f)
Avancer jusqu'a la fin du mot suivant. Les mots sont composes de
caracteres alphanumeriques (lettres et chiffres).
backward-word (M-b)
Reculer jusqu'au debut du mot courant ou du precedent. Les mots
sont composes de caracteres alphanumeriques (lettres et
chiffres).
shell-forward-word
Avancer jusqu'a la fin du mot suivant. Les mots sont separes par
des metacaracteres non proteges de l'interpreteur.
shell-backward-word
Reculer jusqu'au debut du mot courant ou du precedent. Les mots
sont separes par des metacaracteres non proteges de
l'interpreteur.
clear-screen (C-l)
Effacer l'ecran, en laissant la ligne courante au sommet de
l'ecran. S'il y a un argument, rafraichir la ligne courante sans
effacer l'ecran.
redraw-current-line
Rafraichir la ligne courante.
Commandes de manipulation de l'historique
accept-line (saut de ligne, retour chariot)
Valider la ligne, sans se soucier de l'emplacement du curseur.
Si la ligne n'est pas vide, l'ajouter a la file d'historique,
sous controle de la variable HISTCONTROL. Si cette ligne est
une ligne d'historique modifiee, restaurer cette derniere.
previous-history (C-p)
Recuperer la commande precedente de la file d'historique, en
remontant dans la file.
next-history (C-n)
Recuperer la commande suivante dans la file d'historique, en
descendant dans la file.
beginning-of-history (M-<)
Recuperer la premiere ligne de l'historique.
end-of-history (M->)
Retourner a la fin de l'historique de saisie, c'est-a-dire a la
ligne en cours de saisie.
reverse-search-history (C-r)
Rechercher en arriere dans l'historique, en remontant. C'est une
recherche incrementale.
forward-search-history (C-s)
Rechercher en avant dans l'historique, en descendant. C'est une
recherche incrementale.
non-incremental-reverse-search-history (M-p)
Rechercher une chaine en arriere dans l'historique, en remontant
depuis la ligne actuelle, utiliser une recherche non
incrementale pour une chaine fournie par l'utilisateur.
non-incremental-forward-search-history (M-n)
Rechercher une chaine en avant dans l'historique, utiliser une
recherche non incrementale pour une chaine fournie par
l'utilisateur.
history-search-forward
Rechercher en avant dans l'historique la chaine comprise entre
le debut de la ligne actuelle et la position du curseur. C'est
une recherche non incrementale.
history-search-backward
Rechercher en arriere dans l'historique la chaine comprise entre
le debut de la ligne actuelle et la position du curseur. C'est
une recherche non incrementale.
yank-nth-arg (M-C-y)
Inserer, a l'emplacement du curseur, le premier argument de la
commande precedente. Generalement, il s'agit du second mot de la
ligne precedente. Avec un argument n, inserer le n-ieme mot de
la commande precedente (les mots sont numerotes a partir de 0).
Un argument negatif insere le n-ieme mot en partant de la fin de
la commande precedente. Une fois que l'argument n est traite,
l'argument est extrait comme si le developpement d'historique
<< !n >> avait ete indique.
yank-last-arg (M-., M-_)
Inserer le dernier argument de la commande precedente (le
dernier mot de l'element precedent de la file d'historique).
Avec un argument, se comporte exactement comme yank-nth-arg. Les
appels successifs a yank-last-arg remontent dans la file
d'historique en inserant le dernier argument de chaque ligne
tour a tour. Les outils de developpement d'historique sont
utilises pour extraire le dernier argument, comme si le
developpement d'historique << !$ >> avait ete indique.
shell-expand-line (M-C-e)
Developper, comme le fait l'interpreteur, la ligne courante.
Ceci effectue le developpement des alias et d'historique, ainsi
que tous les developpements de mot de l'interpreteur. Voir plus
bas D'EVELOPPEMENT DE L'HISTORIQUE, pour une description
detaillee du developpement de l'historique.
history-expand-line (M-^)
Effectuer le developpement d'historique sur la ligne courante.
Voir plus bas D'EVELOPPEMENT DE L'HISTORIQUE, pour une
description detaillee.
magic-space
Effectuer le developpement de l'historique sur la ligne courante
et inserer une espace. Voir plus bas D'EVELOPPEMENT DE
L'HISTORIQUE, pour une description detaillee.
alias-expand-line
Effectuer le developpement des alias sur la ligne courante. Voir
ALIAS plus haut pour une description des developpements d'alias.
history-and-alias-expand-line
Effectuer le developpement de l'historique et des alias sur la
ligne courante.
insert-last-argument (M-., M-_)
Un synonyme de yank-last-arg.
operate-and-get-next (C-o)
Valider la ligne courante et recuperer la ligne suivante de
l'historique pour edition. Tout argument est ignore.
edit-and-execute-command (C-xC-e)
Appelle un editeur sur la ligne de commande courante et execute
le resultat comme une commande d'interpreteur. Bash tente
d'appeler, dans cet ordre, $VISUAL, $EDITOR et emacs comme
editeur.
Commande d''edition de texte
delete-char (C-d)
Effacer le caractere sous le curseur. Si la ligne est vide et
que le dernier caractere saisi n'etait pas associe a
delete-char, alors renvoyer EOF.
backward-delete-char (Effacement ou << Rubout >>)
Effacer le caractere avant le curseur. Lorsque un argument
numerique est indique, le texte efface est sauvegarde dans le
tampon circulaire.
forward-backward-delete-char
Effacer le caractere sous le curseur, sauf s'il est en fin de
ligne, auquel cas le caractere avant le curseur est efface.
quoted-insert (C-q, C-v)
Ajouter litteralement sur la ligne le caractere saisi suivant.
Ceci permet d'inserer des caracteres comme C-q, par exemple.
tab-insert (C-v TAB)
Inserer un caractere de tabulation.
self-insert (a, b, A, 1, !, ...)
Inserer le caractere mentionne.
transpose-chars (C-t)
Echanger les caracteres se trouvant devant et sous le curseur.
Le curseur est avance d'un caractere. A la fin d'une ligne, les
caracteres echanges sont les deux precedents. Les arguments
negatifs n'ont aucun effet.
transpose-words (M-t)
Deplace le mot avant le curseur au-dela du mot apres le curseur
et deplace aussi le curseur sur ce mot. Si le curseur est a la
fin de la ligne, cela echange les deux derniers mots de la
ligne.
upcase-word (M-u)
Transformer le mot courant (ou le suivant) en majuscules. Avec
un argument negatif, agir sur le mot precedent mais ne pas
deplacer le curseur.
downcase-word (M-l)
Transformer le mot courant (ou le suivant) en minuscules. Avec
un argument negatif, agir sur le mot precedent mais ne pas
deplacer le curseur.
capitalize-word (M-c)
Passer en majuscule l'initiale du mot courant (ou du suivant).
Avec un argument negatif, agir sur le mot precedent mais ne pas
deplacer le curseur.
overwrite-mode
Basculer en mode d'ecrasement. Avec un argument numerique
explicite strictement positif, bascule en mode d'ecrasement.
Avec un argument numerique explicite negatif ou nul, bascule en
mode d'insertion. Cette commande n'affecte que le mode emacs ;
le mode vi ecrase de facon differente. Chaque appel a readline()
demarre en mode d'insertion. En mode d'ecrasement, les
caracteres associes a self-insert remplacent le texte sous le
curseur plutot que de deplacer le texte vers la droite. Les
caracteres associes a backward-delete-char remplacent le
caractere avant le curseur par une espace. Par defaut, cette
commande n'est pas associee.
Effacement et r'ecup'eration
kill-line (C-k)
Effacer le texte depuis la position du curseur jusqu'a la fin de
la ligne.
backward-kill-line (C-x Effacement)
Effacer en arriere jusqu'au debut de ligne.
unix-line-discard (C-u)
Effacer le texte entre le debut de la ligne et la position du
curseur. Le texte est sauvegarde dans le tampon circulaire.
kill-whole-line
Effacer toute la ligne sans tenir compte de la position du
curseur.
kill-word (M-d)
Effacer le texte entre le curseur et la fin du mot courant ou,
si entre des mots, jusqu'a la fin du mot suivant. Les limites
des mots sont identiques a celles utilisees par forward-word.
backward-kill-word (M-Effacement)
Effacer le mot sous le curseur. Les limites de mots sont
identiques a celles utilisees par backward-word.
shell-kill-word (M-d)
Effacer le texte entre le curseur et la fin du mot courant ou,
si entre des mots, jusqu'a la fin du mot suivant. Les limites
des mots sont identiques a celles utilisees par
shell-forward-word.
shell-backward-kill-word (M-Effacement)
Effacer le mot sous le curseur. Les limites de mots sont
identiques a celles utilisees par shell-backward-word.
unix-word-rubout (C-w)
Effacer le mot sous le curseur, en utilisant une espace blanche
comme limite de mot. Le texte efface est sauvegarde dans le
tampon circulaire.
unix-filename-rubout
Effacer le mot sous le curseur, en utilisant l'espace blanche et
la barre oblique comme limites de mot. Le texte supprime est
sauvegarde dans le tampon circulaire.
delete-horizontal-space (M-\)
Effacer toutes les espaces blanches et les tabulations autour du
curseur.
kill-region
Effacer le texte de la zone courante.
copy-region-as-kill
Copier le texte de la zone vers le tampon circulaire.
copy-backward-word
Copier le mot precedant le curseur dans le tampon circulaire.
Les limites de mots sont identiques a celles de backward-word.
copy-forward-word
Copier le mot suivant le curseur dans le tampon circulaire. Les
limites de mots sont identiques a celles de forward-word.
yank (C-y)
Recuperer le texte au sommet du tampon circulaire a la position
du curseur dans le tampon.
yank-pop (M-y)
Executer une rotation du tampon circulaire et recuperer le texte
situe a son nouveau sommet. Ceci ne fonctionne qu'apres yank ou
yank-pop.
Arguments num'eriques
digit-argument (M-0, M-1, ..., M--)
Ajouter ce chiffre a l'argument en cours de redaction ou creer
un nouvel argument. M-- cree un argument negatif.
universal-argument
Il s'agit d'une autre facon d'indiquer un argument. Si cette
commande est suivie d'un ou plusieurs chiffres facultativement
precedes d'un signe moins, ces chiffres definissent l'argument.
Si la commande est suivie de chiffres, une nouvelle execution de
universal-argument termine l'argument numerique, mais est
ignoree dans les autres cas. Par exception, si cette commande
est suivie immediatement par un caractere qui n'est ni un
chiffre ni le signe moins, le compteur d'arguments de la
commande suivante est multiplie par 4. Le compteur d'arguments
est initialement a un, donc la premiere execution de cette
commande amene le compteur d'arguments a quatre, une seconde
fois porte le compteur d'arguments a seize et ainsi de suite.
Compl`etement
complete (TAB)
Essayer d'effectuer un completement du texte situe avant le
curseur. Bash effectue le completement en considerant tour a
tour le texte comme une variable (s'il commence par $), un nom
d'utilisateur (s'il commence par ~), un nom de machine (s'il
commence par @) ou une commande (y compris les alias et les
fonctions). Si aucun ne correspond, un completement de nom de
fichier est essaye.
possible-completions (M-?)
Affiche les completements possibles pour le texte situe avant le
curseur.
insert-completions (M-*)
Inserer avant le curseur l'ensemble des completements qui
auraient ete produits par possible-completions.
menu-complete
Analogue a complete, mais en remplacant le mot a completer par
une seule correspondance de la liste des completements
possibles. Des executions repetees de menu-complete parcourent
la liste des completements possibles, en inserant chaque
correspondance tour a tour. A la fin de la liste des
completements, une alarme est emise (selon la configuration de
bell-style) et le texte original est restaure. Un argument de n
deplace de n positions dans la liste des correspondances. Un
argument negatif peut etre utilise pour revenir en arriere dans
la liste. Cette commande est destinee a etre associee a la
touche TAB, mais ne l'est pas par defaut.
menu-complete-backward
Identique a menu-complete, mais se deplace en arriere dans la
liste des completements possibles, comme si un argument negatif
avait ete passe a menu-complete. Cette commande n'est associee a
aucune touche par defaut.
delete-char-or-list
Effacer le caractere sous le curseur sauf au debut ou en fin de
ligne (comme delete-char). En fin de ligne, se comporte comme
possible-completions. Cette commande n'est associee a aucune
touche par defaut.
complete-filename (M-/)
Essayer le completement des noms de fichiers sur le texte situe
avant le curseur.
possible-filename-completions (C-x /)
Afficher les completements possibles du texte situe avant le
curseur, traite comme un nom de fichier.
complete-username (M-~)
Essayer le completement sur le texte situe avant le curseur, en
le traitant comme un nom d'utilisateur.
possible-username-completions (C-x ~)
Afficher les completements possibles du texte situe avant le
curseur, en le traitant comme un nom d'utilisateur.
complete-variable (M-$)
Essayer le completement sur le texte situe avant le curseur, en
le traitant comme une variable de l'interpreteur.
possible-variable-completions (C-x $)
Afficher les completements possibles du texte situe avant le
curseur, en le traitant comme une variable de l'interpreteur.
complete-hostname (M-@)
Essayer le completement sur le texte situe avant le curseur, en
le traitant comme un nom de machine.
possible-hostname-completions (C-x @)
Afficher les completements possibles du texte situe avant le
curseur, en le traitant comme un nom de machine.
complete-command (M-!)
Essayer le completement sur le texte situe avant le curseur, en
le traitant comme un nom de commande. Le completement des
commandes essaie de faire correspondre le texte, dans cet ordre,
aux alias, mots reserves, fonctions de l'interpreteur, commandes
internes de l'interpreteur et finalement les noms de fichiers
executables.
possible-command-completions (C-x !)
Afficher les completements possibles du texte situe avant le
curseur, en le traitant comme un nom de commande.
dynamic-complete-history (M-TAB)
Essayer le completement du texte situe avant le curseur, en le
comparant aux lignes de la file d'historique lui correspondant
pour les completements possibles.
dabbrev-expand
Essayer le menu de completement du texte situe avant le curseur,
en le comparant aux lignes de la file d'historique lui
correspondant pour les completements possibles.
complete-into-braces (M-{)
Effectuer un completement en noms de fichiers et inserer la
liste des completements possibles entre accolades afin que la
liste soit exploitable par l'interpreteur (voir D'eveloppement
des accolades plus haut).
Macros clavier
start-kbd-macro (C-x ()
Demarre la memorisation dans la macro en cours des caracteres
tapes.
end-kbd-macro (C-x ))
Arrete la memorisation dans la macro en cours des caracteres
saisis et conserve la definition.
call-last-kbd-macro (C-x e)
Re-execute la derniere macro definie, en agissant comme si les
caracteres contenus dans cette macro etaient saisis au clavier.
Divers
re-read-init-file (C-x C-r)
Lire le contenu du fichier inputrc et prendre en compte tous
raccourcis ou affectations de variables qui s'y trouvent.
abort (C-g)
Abandonner l'edition en cours et emettre une alarme de terminal
(selon la configuration de la variable bell-style).
do-uppercase-version (M-a, M-b, M-x, ...)
Si le caractere x precede de Meta est en minuscule, executer la
commande qui est associee aux caracteres majuscules
correspondants.
prefix-meta (ESC)
Considerer le prochain caractere saisi comme un Meta. ESC f est
equivalent a Meta-f.
undo (C-_, C-x C-u)
Fonction d'annulation incrementale, chaque ligne etant memorisee
separement.
revert-line (M-r)
Annuler toutes les modifications sur cette ligne. Ceci est
equivalent a repeter undo en nombre suffisant pour ramener la
ligne a son etat initial.
tilde-expand (M-&)
Effectuer le developpement du tilde sur le mot courant.
set-mark (C-@, M-<space>)
Placer la marque a la position actuelle du curseur. Si un
argument numerique est fourni, la marque est posee a la position
correspondante.
exchange-point-and-mark (C-x C-x)
Echanger le curseur et la marque. Le position courante du
curseur est configuree a la position sauvegardee precedemment et
l'ancienne position du curseur est memorisee comme la marque.
character-search (C-])
Un caractere est lu et le curseur deplace a l'occurrence
suivante de ce caractere. Un argument negatif recherche les
occurrences precedentes.
character-search-backward (M-C-])
Un caractere est lu et le curseur deplace a l'occurrence
precedente de ce caractere. Un argument negatif recherche les
occurrences suivantes.
skip-csi-sequence
Lit suffisamment de caracteres pour consommer une suite
multitouche comme celles definies pour des touches comme Debut
et Fin. De telles suites commencent par un indicateur de suite
de controle (<< control sequence indicator >> ou CSI),
habituellement ESC-[. Si cette suite est associee a "\[", les
touches qui produisent de telles suites n'auront pas d'effet a
moins d'etre explicitement associees a une commande readline, au
lieu d'inserer des caracteres egares dans le tampon d'edition.
N'est associee a aucune touche par defaut, mais est souvent
associe a ESC-[.
insert-comment (M-#)
Sans argument numerique, la valeur de la variable comment-begin
de readline est inseree au debut de la ligne courante. Si un
argument numerique est fourni, cette commande agit comme une
bascule : si les caracteres du debut de ligne ne correspondent
pas a la valeur de comment-begin, la valeur est inseree, sinon,
les caracteres de comment-begin sont effaces du debut de la
ligne. Dans les deux cas, la ligne est acceptee comme si un saut
de ligne avait ete saisi. La valeur par defaut de comment-begin
conduit cette commande a transformer la ligne courante de
l'interpreteur en commentaire. Si un argument numerique conduit
a l'effacement du caractere de commentaire, la ligne sera
executee par l'interpreteur.
glob-complete-word (M-g)
Le mot avant le curseur est traite comme un motif pour un
developpement de chemin, avec un asterisque implicitement
ajoute. Ce motif est utilise pour produire une liste de noms de
fichiers correspondants pour de possibles completements.
glob-expand-word (C-x *)
Le mot precedant le curseur est considere comme un motif de
developpement de chemin et la liste des fichiers correspondants
est inseree a sa place. Si un argument numerique est fourni, un
asterisque est ajoute avant le developpement du chemin.
glob-list-expansions (C-x g)
La liste des developpements qui aurait ete produite par
glob-expand-word est affichee et la ligne est rafraichie. Si un
argument numerique est fourni, un asterisque est ajoute devant
le developpement du chemin.
dump-functions
Afficher toutes les fonctions et leurs raccourcis clavier sur le
flux de sortie de readline. Si un argument numerique est fourni,
la sortie est mise en forme de facon a etre incorporee dans un
fichier inputrc.
dump-variables
Afficher toutes les variables readline modifiables et leurs
valeurs sur le flux de sortie de readline. Si un argument
numerique est fourni, la sortie est mise en forme de facon a
etre incorporee dans un fichier inputrc.
dump-macros
Afficher toutes les suites de touches readline associees a des
macros et les chaines auxquelles elles correspondent. Si un
argument numerique est fourni, la sortie est mise en forme de
facon a etre incorporee dans un fichier inputrc.
display-shell-version (C-x C-v)
Afficher des informations sur la version courante de bash.
Compl`etement programmable
Lorsqu'un completement de mot est tente pour un argument d'une commande
pour laquelle une specification de completement a ete definie en
utilisant la commande interne complete (voir COMMANDES INTERNES DE
L'INTERPR'ETEUR plus bas), les outils de completement programmables sont
appeles.
En premier lieu, le nom de la commande est identifie. Si le mot de
commande est vide (completement essaye en debut de ligne vide), toutes
les specifications de completement definies par l'option -E de complete
sont utilisees. Si une specification de completement a ete definie pour
cette commande, elle est utilisee pour produire la liste des
completements possibles pour le mot. Si le mot de commande est un
chemin d'acces complet, on cherche en premier lieu une specification de
completement pour le chemin d'acces complet. Si aucune specification de
completement n'est trouvee pour le chemin d'acces complet, une
tentative est effectuee pour trouver une specification de completement
pour la partie situee apres la barre oblique finale. Si ces recherches
ne donnent aucun resultat sous forme de specification de completement,
toutes les specifications de completement definies par l'option -D de
complete sont utilisees par defaut.
Une fois qu'une specification de completement a ete trouvee, elle est
utilisee pour produire la liste des mots correspondants. Si aucune
specification de completement n'est trouvee, le completement par defaut
de bash, tel que decrit plus haut dans Compl`etement est effectue.
Tout d'abord, les actions definies par la specification de completement
sont utilisees. Seules les correspondances prefixees par le mot a
completer sont renvoyees. Lorsque l'option -f ou -d est utilisee pour
le completement des noms de fichiers ou de repertoire, la variable de
l'interpreteur FIGNORE est utilisee pour filtrer les correspondances.
Tous les completements indiques par le motif de developpement de chemin
de l'option -G sont ensuite produits. Il n'est pas necessaire que les
mots produits par le motif correspondent au mot a completer. La
variable de l'interpreteur GLOBIGNORE n'est pas utilisee pour filtrer
les correspondances, mais la variable FIGNORE est utilisee.
Ensuite, la chaine indiquee comme argument a l'option -W est prise en
compte. Cette chaine est tout d'abord decoupee en utilisant les
caracteres de la variable speciale IFS comme delimiteurs. Les
protections de l'interpreteur sont prises en compte. Chaque mot est
ensuite developpe en utilisant les developpements d'accolades, du
tilde, des parametres et des variables, de meme que la substitution de
commande et le developpement arithmetique comme decrit plus haut dans
D'EVELOPPEMENTS. Les resultats sont decoupes en utilisant les regles
decrites plus haut dans D'ecoupage en mots. Les resultats du
developpement sont compares au mot a completer en considerant ce
dernier comme prefixe et les mots correspondants deviennent les
completements possibles.
Apres la creation de ces correspondances, toute fonction de
l'interpreteur ou commande indiquee avec les options -F et -C est
appelee. Lorsque la commande ou la fonction est appelee, les variables
COMP_LINE, COMP_POINT, COMP_LINKEY, et COMP_POINTYPE se voient
affectees de valeurs comme decrit plus haut dans Variables de
l'interpr'eteur. Si une fonction de l'interpreteur est appelee, les
variables COMP_WORDS et COMP_CWORD sont egalement creees. Lorsqu'une
fonction ou une commande est appelee, le premier argument est le nom de
la commande dont les arguments doivent etre completes, le second
argument est le mot a completer et le troisieme argument est le mot
precedent celui devant etre complete sur la ligne de commande. Aucun
filtrage des completements produits pour le mot a completer n'est
effectue ; la fonction ou la commande a toute liberte dans la
production des correspondances.
Toute fonction indiquee avec -F est appelee en premier. La fonction
peut utiliser tous les outils de l'interpreteur, incluant la commande
interne compgen decrite plus bas, pour produire les correspondances.
Elle doit mettre les completements possibles dans la variable tableau
COMPREPLY.
Ensuite, toute commande indiquee avec l'option -C est appelee dans un
environnement equivalent a la substitution de commande. Elle devrait
afficher une liste des completements possibles, une par ligne, sur la
sortie standard. Si necessaire, une contre-oblique peut etre utilisee
pour proteger un caractere de saut de ligne.
Apres la creation de tous les completements possibles, tout filtre,
indique avec l'option -X, est applique a la liste. Ce filtre est un
motif comme dans le developpement des chemins ; un & dans le motif est
remplace par le texte du mot en cours de completement. Un & litteral
peut etre protege par une contre-oblique ; la contre-oblique est
supprimee avant la tentative de mise en correspondance. Tout
completement qui correspond au motif sera supprime de la liste. Un ! au
debut du motif provoque la negation de ce motif ; dans ce cas, tout
completement ne correspondant pas au motif sera supprime de la liste.
Finalement, tous prefixe et suffixe indiques avec les options -P et -S
sont ajoutes a chacun des elements de la liste de completement et le
resultat est renvoye au programme de completement de readline comme
etant la liste des completements possibles.
Si les operations precedemment appliquees ne produisent aucune
correspondance et si l'option -o dirnames a ete fournie a complete
lorsque la specification de completement a ete definie, le completement
des noms de repertoire est tente.
Si l'option -o plusdirs a ete fournie a complete lors de la definition
de la specification de completement, le completement des noms de
repertoires est tente et toute correspondance est ajoutee aux resultats
des autres actions.
Par defaut, si une specification de completement est trouvee, tout ce
qu'elle produit est renvoye au programme de completement comme un jeu
complet des completements possibles. Les completements par defaut de
bash ne sont pas tentes et le completement de fichiers par defaut de
readline est desactive. Si l'option -o bashdefault a ete fournie a
complete lors de la definition de la specification de completement, les
completements par defaut de bash sont tentes si la specification de
completement ne produit aucune correspondance. Si l'option -o default a
ete fournie a complete lors de la definition de la specification de
completement, le completement par defaut de readline sera effectue si
la specification de completement (et, si tentes, les completements par
defaut de bash) ne produit aucune correspondance.
Lorsqu'une specification de completement indique qu'un completement de
nom de repertoire est souhaite, les fonctions de completement
programmable forcent readline a ajouter une barre oblique pour
completer les noms qui sont des liens symboliques vers des repertoires,
selon la valeur de la variable mark-directories de readline,
independamment du parametrage de la variable mark-symlinked-directories
de readline.
La modification dynamique des completements est egalement possible.
C'est particulierement utile combine avec un completement par defaut
indique a l'aide de complete -D. Les fonctions de l'interpreteur
executes comme gestionnaires de completement permettent d'annoncer que
le completement devrait etre reessaye en renvoyant un etat final de
124. Si une fonction de l'interpreteur renvoie 124, et modifie la
specification de completement associee a la commande sur laquelle le
completement est essaye (fournie comme premier argument quand la
fonction est executee), le completement programmable recommence depuis
le debut, en essayant de trouver une specification de completement pour
cette commande. Un jeu de completements peut ainsi etre construit
dynamiquement lorsque le completement est essaye, plutot que d'etre
charge entierement au debut.
Par exemple, en supposant l'existence d'une bibliotheque de
specifications de completement, chacune conservee dans un fichier
correspondant au nom de la commande, la fonction de completement par
defaut suivante chargerait les completements de facon dynamique :
_completion_loader()
{
. "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
}
complete -D -F _completion_loader
HISTORIQUE
Quand l'option -o history de la commande interne set est activee,
l'interpreteur donne acces a un historique des commandes, c'est-a-dire
la liste des commandes precedemment utilisees. La valeur de la variable
HISTSIZE est utilisee comme nombre de commandes a sauvegarder dans la
file d'historique. Le texte des HISTSIZE dernieres commandes (par
defaut 500) est sauvegarde. L'interpreteur conserve chaque commande
dans la file d'historique avant le developpement des parametres et des
variables (voir D'EVELOPPEMENTS plus haut) mais apres avoir effectue le
developpement de l'historique, selon les valeurs des variables de
l'interpreteur HISTIGNORE et HISTCONTROL.
Au demarrage, l'historique est initialise avec le fichier dont le nom
est contenu dans la variable HISTFILE (par defaut ~/.bash_history). Le
fichier designe par la valeur de HISTFILE est tronque si necessaire,
pour ne pas contenir plus de lignes que le nombre precise par
HISTFILESIZE. Quand le fichier d'historique est lu, les lignes
commencant par le caractere de commentaire d'historique suivi
immediatement par un chiffre sont considerees comme des horodatages de
la ligne d'historique precedente. Ces horodatages sont facultativement
affiches en fonction de la valeur de la variable HISTTIMEFORMAT.
Lorsqu'un interpreteur interactif termine, les HISTSIZE dernieres
lignes de la file d'historique sont copiees dans le fichier HISTFILE.
Si l'option d'interpreteur histappend est activee (voir la description
de shopt dans COMMANDES INTERNES DE L'INTERPR'ETEUR plus bas), les
lignes sont ajoutees au fichier d'historique, sinon le fichier est
ecrase. Si HISTFILE est inexistante ou si le fichier d'historique n'est
pas accessible en ecriture, l'historique n'est pas sauvegarde. Si la
variable HISTTIMEFORMAT est configuree, les horodatages sont ecrits
dans le fichier d'historique, reperes par le caractere de commentaire
d'historique, afin d'etre conserves au fur et a mesure des sessions de
l'interpreteur. Le caractere de commentaire d'historique est utilise
pour distinguer l'horodatage des autres lignes de l'historique. Apres
la sauvegarde de l'historique, le fichier d'historique est tronque pour
ne pas contenir plus de HISTFILESIZE lignes. Si HISTFILESIZE n'existe
pas, aucune troncature n'est effectuee.
La commande interne fc (voir COMMANDES INTERNES DE L'INTERPR'ETEUR plus
bas) permet d'afficher, d'editer ou de re-executer une partie de la
file d'historique. La commande interne history permet d'afficher la
file d'historique et de manipuler le fichier d'historique. Quelque soit
le mode d'edition en ligne de commande, des commandes de recherche
donnent acces a la file d'historique.
L'interpreteur permet de configurer quelles commandes seront
sauvegardees dans la file d'historique. Les variables HISTCONTROL et
HISTIGNORE peuvent etre configurees pour conduire l'interpreteur a ne
sauvegarder qu'un sous-ensemble des commandes saisies. L'option
d'interpreteur cmdhist, si activee, conduit l'interpreteur a essayer de
sauvegarder chaque ligne d'une commande multiligne dans le meme element
de l'historique, en ajoutant des points-virgules si necessaire pour
preserver l'exactitude de la syntaxe. L'option d'interpreteur lithist
conduit l'interpreteur a sauvegarder les commandes avec des sauts de
lignes incorpores plutot que des points-virgules. Voir plus bas la
description de la commande interne shopt dans COMMANDES INTERNES DE
L'INTERPR'ETEUR pour des details sur la creation et la destruction des
options d'interpreteur.
D'EVELOPPEMENT DE L'HISTORIQUE
L'interpreteur propose des possibilites de developpement de
l'historique qui sont semblables a celles de csh. Ce paragraphe decrit
quelles syntaxes sont disponibles. Cette fonctionnalite est activee par
defaut dans les interpreteurs interactifs et peut etre desactivee en
utilisant l'option +H de la commande interne set (voir COMMANDES
INTERNES DE L'INTERPR'ETEUR plus bas). Les interpreteurs non interactifs
n'effectuent pas de developpement d'historique par defaut.
Le developpement de l'historique permet d'inserer des mots de la file
d'historique dans le flux de saisie, facilitant la repetition de
commandes, l'insertion des arguments d'une ligne anterieure dans la
saisie en cours ou la correction rapide d'erreurs dans les commandes
precedentes.
Le developpement de l'historique est effectue immediatement apres la
lecture d'une ligne complete, avant que l'interpreteur ne la decompose
en mots. Il se deroule en deux parties. La premiere consiste a
determiner la ligne de la file d'historique a utiliser pour les
substitutions, la seconde permet de selectionner les parties de la
ligne a inclure dans la nouvelle ligne. La ligne selectionnee dans
l'historique est l''ev'enement et les parties de cette ligne a reutiliser
sont des mots. Plusieurs modificateurs permettent de manipuler les mots
selectionnes. La ligne est decoupee en mots de la meme facon que lors
de la lecture d'une saisie, ainsi plusieurs mots separes par des
m'etacaract`eres et encadres par des guillemets simples sont consideres
comme un unique mot. Le developpement de l'historique est introduit par
l'apparition du caractere de developpement, qui est ! par defaut. Seule
la contre-oblique (\) et les guillemets simples permettent de proteger
le caractere de developpement de l'historique.
Plusieurs caracteres empechent le developpement de l'historique s'ils
se trouvent immediatement apres le caractere de developpement de
l'historique, meme s'il n'est pas protege : espace, tabulation, saut de
ligne, retour chariot et =. Si l'option d'interpreteur extglob est
activee, ( empechera aussi le developpement.
Plusieurs options d'interpreteur, configurables avec la commande
interne shopt, permettent d'ajuster le comportement du developpement de
l'historique. Si l'option d'interpreteur histverify est activee (voir
la description de la commande interne shopt plus bas) et si readline
est utilisee, les substitutions d'historique ne sont pas transmises
tout de suite a l'analyseur de l'interpreteur. A la place, la ligne
developpee est rechargee dans la memoire tampon de readline pour
permettre des modifications ulterieures. Si readline est utilisee et si
l'option histreedit est activee, une substitution d'historique qui
echoue est rechargee dans la memoire tampon de readline pour
correction. L'option -p de la commande interne history peut servir a
examiner ce qu'une substitution donnera avant de l'employer reellement.
L'option -s de la commande interne history permet d'ajouter des
commandes a la fin de la file d'historique sans les avoir effectivement
executees, afin qu'elles soient disponibles pour des rappels
ulterieurs.
L'interpreteur offre le controle des divers caracteres utilises par le
mecanisme de developpement de l'historique (voir la description de
histchars plus haut dans Variables de l'interpr'eteur). L'interpreteur
utilise le caractere de commentaire d'historique pour reperer
l'horodatage lors de l'ecriture du fichier d'historique.
Indicateur d''ev'enement
Un indicateur d'evenement est une reference a un element ligne de
commande dans la file d'historique.
! Debute une substitution d'historique, sauf s'il est suivi par un
blanc, saut de ligne, retour chariot, = ou ( (lorsque l'option
d'interpreteur extglob est activee en utilisant la commande
interne shopt).
!n Se rapporte a la ligne de commande n.
!-n Se rapporte a la ligne de commande courante moins n.
!! Se rapporte a la commande precedente. C'est un synonyme de
<< !-1 >>.
!cha^ine
Se rapporte a la plus recente commande commencant par cha^ine.
!?cha^ine[?]
Se rapporte a la plus recente commande contenant cha^ine. Le ?
final peut etre omis si cha^ine est immediatement suivie d'un
saut de ligne.
^cha^ine_1^cha^ine_2^
Substitution rapide. Repeter la derniere commande en remplacant
cha^ine_1 par cha^ine_2. Equivalent a
<< !!:s/cha^ine_1/cha^ine_2/ >> (voir Modificateurs plus bas).
!# La ligne entiere tapee jusqu'a present.
Indicateurs de mots
Ces indicateurs servent a selectionner les mots desires dans un
evenement. Un : separe l'indicateur d'evenements de l'indicateur de
mot. On peut l'omettre si l'indicateur de mot commence par ^, $, *, -
ou %. Les mots sont numerotes depuis le debut de la ligne, le premier
etant note 0 (zero). Les mots sont inseres dans la ligne courante,
separes par des espaces.
0 (z'ero)
Le zero-ieme mot. Pour l'interpreteur, c'est le nom de la
commande.
n Le n-ieme mot.
^ Le premier argument, c'est-a-dire le mot 1.
$ Le dernier argument.
% Le mot correspondant a la recherche << ?cha^ine? >> la plus
recente.
x-y Une plage de mots, << -y >> permet d'abreger << 0-y >>.
* Tous les mots sauf le zero-ieme. C'est un synonyme pour
<< 1-$ >>. Il n'est pas errone d'utiliser * s'il n'y a qu'un mot
dans l'evenement ; la chaine vide est renvoyee dans ce cas.
x* Abreviation de x-$.
x- Abreviation de x-$ comme x*, mais sans le dernier mot.
Si un indicateur de mot est fourni sans indication d'evenement, la
derniere commande est utilisee.
Modificateurs
Apres un indicateur de mot facultatif, une suite d'un ou plusieurs des
modificateurs suivants peut apparaitre, chacun precede par un << : >>.
h Elimine la fin du chemin d'acces, ne laissant que son debut.
t Supprime tout le debut d'un chemin d'acces, en ne laissant que
la fin.
r Supprime un suffixe final de la forme .xxx, en ne laissant que
le nom de base.
e Supprime tout sauf le suffixe final.
p Affiche la nouvelle commande sans l'executer.
q Protege les mots substitues, pour eviter des substitutions
futures.
x Protege les mots substitues comme avec q, mais avec separation
des mots aux blancs et sauts de ligne.
s/ancien/nouveau/
Remplace par nouveau la premiere occurrence de ancien sur la
ligne d'evenement. Tout delimiteur peut etre utilise a la place
de /. Le dernier delimiteur est facultatif si c'est le dernier
caractere de la ligne d'evenement. Le delimiteur peut etre
protege dans ancien et nouveau avec une seule contre-oblique. Si
& apparait dans nouveau, il est remplace par ancien. Une seule
contre-oblique protegera le &. Si ancien est vide, il est
configure au dernier ancien substitue ou si aucune substitution
n'a eu lieu precedemment, la derniere cha^ine dans une recherche
!?cha^ine[?].
& Repete la substitution precedente.
g Conduit a l'application des changements sur la ligne d'evenement
entiere. Ceci est utilise conjointement a << :s >> (par exemple
<< :gs/ancien/nouveau/ >>) ou << :& >>. Si utilise avec
<< :s >>, tout delimiteur peut etre utilise a la place de / et
le dernier delimiteur est facultatif si c'est le dernier
caractere de la ligne d'evenement. Un a peut etre utilise en
tant que synonyme de g.
G Applique le modificateur << s >> suivant une fois a chacun des
mots de la ligne d'evenements.
COMMANDES INTERNES DE L'INTERPR'ETEUR
Sauf indication contraire, chaque commande interne decrite dans ce
paragraphe comme acceptant des options precedees par - accepte
egalement la notation -- pour signaler la fin des options. Les
commandes internes :, true, false et test n'acceptent aucune option et
-- est ignore. Les commandes internes exit, logout, break, continue,
let et shift acceptent et traitent les arguments commencant par - sans
avoir besoin de --. Les autres commandes internes qui acceptent les
arguments mais qui ne sont pas declares explicitement comme acceptant
des options considerent les arguments commencant par - comme des
options non valides, donc -- est obligatoire pour eviter cette
interpretation.
: [arguments]
Sans effet ; cette commande ne fait rien d'autre que developper
les arguments et effectuer toute redirection indiquee. Un code
final de zero est renvoye.
. fichier [arguments]
source fichier [arguments]
Lit et execute les commandes contenues dans fichier avec
l'environnement de l'interpreteur courant, puis renvoie l'etat
final de la derniere commande executee dans fichier. Si le nom
du fichier ne contient pas de barre oblique, les chemins d'acces
contenus dans PATH sont parcourus pour rechercher le repertoire
contenant le fichier. Lorsqu'il est recherche dans PATH le
fichier n'a pas besoin d'etre executable. Lorsque bash n'est pas
en mode posix, le repertoire de travail courant est finalement
examine si aucun fichier n'est trouve dans PATH. Si l'option
sourcepath de la commande interne shopt est desactivee, le PATH
n'est pas parcouru. Si des arguments sont fournis, ils sont
transmis dans les parametres positionnels lorsque le fichier est
execute. Sinon les parametres positionnels ne sont pas modifies.
L'etat renvoye est l'etat de la derniere commande terminee au
sein du script (0 si aucune commande n'a ete executee) et faux
si le fichier n'est pas trouve ou ne peut etre lu.
alias [-p] [nom[=valeur] ...]
La commande alias sans argument ou avec l'option -p affiche sur
la sortie standard la liste des alias actuellement definis, sous
la forme nom=valeur. Lorsque des arguments sont fournis, un
alias est cree pour chaque nom auquel on a donne une valeur. Une
espace finale dans une valeur conduira a la recherche d'alias
dans le mot suivant lors du developpement de l'alias. Pour
chacun des noms pour lesquels aucune valeur n'est fournie dans
la liste d'arguments, le nom et la valeur de l'alias sont
affiches. La commande alias renvoie vrai, a moins qu'un nom
n'ait ete indique pour lequel aucun alias n'a ete defini.
bg [t^ache ...]
Reprend en arriere-plan chaque t^ache suspendue, comme si elle
avait ete lancee avec &. Si aucune t^ache n'est precisee, la
notion d'interpreteur de t^ache courante est utilisee. bg t^ache
renvoie 0 sauf si le controle des taches est desactive, ou,
quand le controle des taches est active, si une t^ache precisee
n'a pas ete trouvee ou a ete lancee sans controle de taches.
bind [-m jeu_de_raccourcis] [-lpsvPSV]
bind [-m jeu_de_raccourcis] [-q fonction] [-u fonction] [-r
suite_de_touches]
bind [-m jeu_de_raccourcis] -f fichier
bind [-m jeu_de_raccourcis] -x
suite_de_touches:commande_de_l'interpr'eteur
bind [-m jeu_de_raccourcis] suite_de_touches:nom_de_fonction
bind commande_readline
Affiche les associations de touches readline courantes et les
raccourcis de fonctions, associe une suite de touches a une
fonction ou une macro readline ou cree une variable readline.
Chaque argument qui n'est pas une option est une commande comme
elle devrait apparaitre dans .inputrc, mais chaque raccourci ou
commande doit etre fourni comme un argument independant ; par
exemple << "\C-x\C-r": re-read-init-file >>. Les options, si
fournies, ont les significations suivantes :
-m jeu_de_raccourcis
Utiliser le jeu_de_raccourcis comme jeu de raccourcis
devant etre concerne par les raccourcis ulterieurs. Les
noms de jeux_de_raccourcis possibles sont emacs,
emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
vi-command et vi-insert. vi est equivalent a vi-command ;
emacs est equivalent a emacs-standard.
-l Afficher la liste des noms de toutes les fonctions
readline.
-p Afficher les noms des fonctions readline et leurs
raccourcis de facon a pouvoir les relire.
-P Afficher les noms des fonctions readline et leurs
raccourcis.
-s Afficher les suites de touches readline associees aux
macros et les chaines correspondantes, de facon a pouvoir
les relire.
-S Afficher les suites de touches readline associees aux
macros et les chaines correspondantes.
-v Afficher les noms des variables readline et leurs valeurs
de facon a pouvoir les relire.
-V Afficher les noms des variables readline et leurs
valeurs.
-f fichier
Lire les raccourcis clavier dans fichier.
-q fonction
Rechercher les touches permettant d'appeler la fonction
indiquee.
-u fonction
Dissocier toutes les touches associees a fonction.
-r suite_de_touches
Supprimer tout raccourci courant pour la
suite_de_touches.
-x suite_de_touches:commande_de_l'interpr'eteur
Conduire la commande_de_l'interpr'eteur a etre executee
chaque fois que la suite_de_touches est saisie. Quand la
commande_de_l'interpr'eteur est executee, l'interpreteur
configure la variable READLINE_LINE au contenu du tampon
de ligne de readline et la variable READLINE_POINT a la
position courante du curseur d'insertion. Si la commande
executee modifie les valeurs de READLINE_LINE ou
READLINE_POINT, ces nouvelles valeurs seront prises en
consideration dans l'etat d'edition.
La valeur renvoyee est 0, a moins qu'une option inconnue ne soit
indiquee ou qu'une erreur ne se soit produite.
break [n]
Sort d'une boucle for, while, until ou select. Si n est indique,
sort de n niveaux de boucles. n doit etre >= 1. Si n est
superieur au nombre de boucles imbriquees, on sort de l'ensemble
d'entre elles. La valeur renvoyee est 0, a moins que n ne soit
pas plus grand ou egal a 1.
builtin commande_interne [arguments]
Execute la commande interne de l'interpreteur indiquee, en lui
passant les arguments, puis renvoie son etat final. Ceci est
utile lorsqu'une fonction est definie avec le meme nom qu'une
commande interne, et que cette commande est appelee depuis
l'interieur de la fonction. La commande interne cd est souvent
redefinie de cette facon. L'etat renvoye est faux si la
commande_interne n'est pas une commande interne de
l'interpreteur.
caller [expr]
Renvoie le contexte de tout appel de sous-programme actif (une
fonction de l'interpreteur ou un script lance avec les commandes
internes . ou source). Sans expr, caller affiche le numero de
ligne et le nom de fichier du sous-programme courant. Si un
entier positif est fourni comme expr, caller affiche le numero
de ligne, le nom du sous-programme et le nom de fichier source
correspondant a la position dans la pile d'appels d'execution
courante. Cette information supplementaire peut etre utilisee,
par exemple, pour afficher une trace de la pile. La trame
courante est la trame 0. La valeur renvoyee est 0, a moins que
l'interpreteur ne soit pas en train d'executer un sous-programme
ou que expr ne corresponde pas a une position correcte dans la
pile d'appels.
cd [-L|-P] [r'ep]
Remplace le repertoire de travail courant par r'ep. La variable
HOME est la valeur par defaut de r'ep. La variable CDPATH definit
des chemins de recherche pour trouver le repertoire contenant
r'ep. Les repertoires possibles y sont fournis dans une liste
separees par des deux-points << : >>. Un nom de repertoire vide
dans CDPATH est equivalent au repertoire courant, c'est-a-dire
<< . >>. Si r'ep commence par une barre oblique (/), alors CDPATH
n'est pas utilise. L'option -P indique de n'employer que la
structure de repertoires physiques au lieu de suivre les liens
symboliques (voir aussi l'option -P de la commande interne set)
l'option -L force a suivre les liens symboliques. Un argument -
est equivalent a $OLDPWD. Si un nom de repertoire non vide de
CDPATH est utilise ou si - est le premier argument et si le
changement de repertoire reussit, le chemin absolu du nouveau
repertoire de travail est ecrit sur la sortie standard. La
valeur renvoyee est vrai si le changement de repertoire a
reussi, faux sinon.
command [-pVv] commande [arguments ...]
Lance la commande avec les arguments indiques, mais en
simplifiant le processus habituel de recherche des commandes.
Seules les commandes internes et les commandes trouvees dans
PATH seront executees. Si l'option -p est indiquee, la recherche
de la commande est effectuee en utilisant une valeur par defaut
pour PATH garantissant de trouver tous les utilitaires
standards. Si l'option -V ou -v est fournie, une description de
la commande est affichee. L'option -v conduit a n'afficher qu'un
seul mot indiquant la commande ou le nom de fichier utilise pour
appeler la commande. L'option -V fournit une description plus
prolixe. Si l'option -V ou -v est fournie, l'etat final est 0 si
la commande a ete trouvee et 1 sinon. Si aucune option n'est
fournie et si une erreur s'est produite ou si la commande ne
peut etre trouvee, l'etat final est 127. Sinon, l'etat final de
la commande interne est l'etat final de commande.
compgen [option] [mot]
Produit les correspondances des completements possibles pour mot
selon les options, qui peuvent etre toute option acceptee par la
commande interne complete a l'exception de -p et -r et ecrit le
resultat sur la sortie standard. Lorsqu'on utilise les options
-F ou -C, les diverses variables de l'interpreteur creees par
les outils de completement programmables, lorsque disponibles,
n'auront pas de valeurs utilisables.
Les correspondances seront produites de la meme facon que si le
programme de completement programmable les avait produites
directement a partir d'une specification de completement avec
les memes attributs. Si mot est indique, seuls les completements
qui correspondent a mot sont affiches.
La valeur renvoyee est vrai, sauf si une option incorrecte a ete
fournie ou si aucune correspondance n'a ete produite.
complete [-abcdefgjksuv] [-o option-compl`etement] [-DE] [-A action] [-G
globpat] [-W liste_de_mots] [-F fonction] [-C commande]
[-X motif_filtre] [-P pr'efixe] [-S suffixe] nom [nom ...]
complete -pr [-DE] [nom ...]
Indique comment les arguments de chaque nom doivent etre
completes. Si l'option -p est fournie ou si aucune option n'est
fournie, les specifications de completement existantes sont
affichees de telle facon qu'elles puissent etre reutilisees
comme entree. L'option -r retire une specification de
completement a chaque nom fourni ou, si aucun nom n'est fourni,
toutes les specifications de completement. L'option -D indique
que les options restantes et les actions devraient s'appliquer a
la commande de completement par << defaut >>, c'est-a-dire le
completement essaye sur une commande pour laquelle aucun
completement n'a ete prealablement defini. L'option -E indique
que les options restantes et les actions devraient s'appliquer a
la commande de completement << vide >>, c'est-a-dire le
completement essaye sur une ligne vide.
Le processus d'application de ces specifications de
completement, lorsqu'un completement de mot est tente, est
decrit plus haut dans Compl`etement programmable.
Les autres options, si indiquees, ont les significations
suivantes. Les arguments des options -G, -W et -X (et, si
necessaire, les options -P et -S) devraient etre protegees pour
eviter leur developpement avant que la commande interne complete
ne soit appelee.
-o option-compl`etement
L'option-compl`etement commande plusieurs aspects du
comportement des specifications de completement au-dela
de la simple production de completement.
option-compl`etement peut etre l'une des suivantes :
bashdefault
Effectuer le reste des completements par defaut
de bash si la specification de completement ne
produit aucune correspondance.
default Utiliser le completement de nom de fichier par
defaut de readline si la specification de
completement ne produit aucune correspondance.
dirnames
Effectuer le completement de nom de repertoire
si la specification de completement ne produit
aucune correspondance.
filenames
Indiquer a readline que la specification de
completement produit des noms de fichiers, ainsi
il peut effectuer tout traitement specifique aux
noms de fichiers (comme ajouter une barre
oblique aux noms de repertoires, proteger les
caracteres speciaux ou supprimer les espaces de
fin de ligne). Destinee a etre utilisee avec les
fonctions de l'interpreteur.
nospace Indiquer a readline de ne pas ajouter une espace
(comportement par defaut) aux mots completes en
fin de ligne.
plusdirs
Apres creation de toutes les correspondances
definies par la specification de completement,
une tentative de completement de nom de
repertoire est effectuee et toutes les
correspondances sont ajoutees aux resultats des
autres actions.
-A action
L'action peut etre l'une des suivantes pour produire une
liste des completements possibles :
alias Noms d'alias. Peut egalement etre indiquee avec
-a.
arrayvar
Noms de variable de type tableau.
binding Noms de raccourci clavier readline.
builtin Noms de commandes internes de l'interpreteur.
Peut egalement etre indiquee avec -b.
command Noms de commande. Peut egalement etre indiquee
avec -c.
directory
Noms de repertoire. Peut egalement etre indiquee
avec -d.
disabled
Noms de commandes internes de l'interpreteur
desactivees.
enabled Noms de commandes internes de l'interpreteur
activees.
export Noms de variables de l'interpreteur exportees.
Peut egalement etre indiquee avec -e.
file Noms de fichier. Peut egalement etre indiquee
avec -f.
function
Noms de fonctions de l'interpreteur.
group Noms de groupe. Peut egalement etre indiquee
avec -g.
helptopic
Sujets de l'aide acceptes par la commande
interne help.
hostname
Noms de machine tels qu'ils sont extraits du
fichier indique par la variable de
l'interpreteur HOSTFILE.
job Noms de tache si le controle des taches est
actif. Peut egalement etre indiquee avec -j.
keyword Mots reserves de l'interpreteur. Peut egalement
etre indiquee avec -k.
running Noms de taches en cours d'execution si le
controle des taches est actif.
service Noms de service. Peut egalement etre indiquee
avec -s.
setopt Arguments corrects de l'option -o de la commande
interne set.
shopt Noms des options d'interpreteur acceptees par la
commande interne shopt.
signal Noms de signaux.
stopped Noms de taches suspendues si le controle des
taches est actif.
user Noms d'utilisateur. Peut egalement etre indiquee
avec -u.
variable
Noms de toutes les variables de l'interpreteur.
Peut egalement etre indiquee avec -v.
-G globpat
Le motif de developpement des chemins globpat est
developpe pour produire les completements possibles.
-W liste_de_mots
La liste_de_mots est decoupee en utilisant les
caracteres de la variable speciale IFS comme delimiteurs
et chaque mot resultant est developpe. Les completements
possibles sont les elements de la liste resultante qui
correspondent au mot en cours de completement.
-C commande
La commande est executee dans un environnement de
sous-interpreteur et sa sortie est utilisee comme
completements possibles.
-F fonction
La fonction de l'interpreteur est executee dans
l'interpreteur courant. Lorsqu'elle finit, les
completements possibles sont recuperes a partir de la
valeur de la variable de type tableau COMPREPLY.
-X motif_filtre
motif_filtre est un motif utilise pour le developpement
des chemins. Il est applique a la liste des
completements possibles produite par les options et
arguments precedents et chaque completement
correspondant a motif_filtre est supprime de la liste.
Un ! au debut du motif_filtre inverse le motif ; dans ce
cas, tout completement qui ne correspond pas a
motif_filtre est supprime.
-P pr'efixe
pr'efixe est ajoute au debut de chaque completement
possible apres application de toutes les autres options.
-S suffixe
suffixe est ajoute a chaque completement possible apres
application de toutes les autres options.
La valeur renvoyee est vrai, sauf si une option incorrecte a ete
fournie, si une option comme -p ou -r a ete fournie sans un nom
d'argument, si une tentative a ete faite pour supprimer une
specification de completement pour un nom pour lequel il
n'existe pas de specification, ou si une erreur est survenue
lors de l'ajout d'une specification de completement.
compopt [-o option] [-DE] [+o option] [nom]
Modifie les options de completion pour chaque nom en fonction
des options, ou pour le completement en cours d'execution si
aucun nom n'est fourni. Si aucune option n'est donnee, affiche
les options de completion pour chaque nom ou pour le
completement courant. Les valeurs possible d'option sont les
options valables decrites plus haut pour la commande interne
complete. L'option -D indique que les options restantes et les
actions devraient s'appliquer a la commande de completement par
<< defaut >> ; c'est-a-dire le completement essaye sur une
commande pour laquelle aucun completement n'a ete prealablement
defini. L'option -E indique que les options restantes et les
actions devraient s'appliquer a la commande de completement par
<< vide >> ; c'est-a-dire le completement essaye sur une ligne
vide.
La valeur renvoyee est vrai, a moins qu'une option incorrecte ait ete
fournie, qu'une tentative ait ete faite pour modifier les options pour
un nom pour lequel il n'existe pas de specification de completement, ou
bien qu'une erreur de sortie soit survenue.
continue [n]
Reprend l'execution a l'iteration suivante d'une boucle for,
while, until ou encore select. Si n est indique, reprend
l'execution a la n-ieme boucle imbriquee. n doit etre >= 1. Si n
est superieur au nombre de boucles imbriquees, l'execution
reprend a la boucle la plus externe (la boucle << au sommet >>).
La valeur renvoyee est 0, a moins que n ne soit plus grand ou
egal a 1.
declare [-aAfFilrtux] [-p] [nom[=valeur] ...]
typeset [-aAfFilrtux] [-p] [nom[=valeur] ...]
Declare des variables ou leur fournit des attributs. Si aucun
nom n'est indique, affiche les valeurs des variables. L'option
-p affichera les attributs et les valeurs de chaque nom. Quand
-p est utilisee avec des arguments nom, les options
supplementaires sont ignorees. Quand -p est fourni sans argument
nom, les attributs et valeurs de toutes les variables ayant des
attributs indiques par les options additionnelles seront
affiches. Si aucune autre option n'est fournie avec -p, declare
affichera les attributs et valeurs de toutes les variables de
l'interpreteur. L'option -f limite l'affichage aux fonctions de
l'interpreteur. L'option -F empeche l'affichage des definitions
de fonctions : seuls le nom de la fonction et ses attributs sont
affiches. Si l'option d'interpreteur extdebug est activee en
utilisant shopt, le nom du fichier source et le numero de ligne
ou la fonction est definie sont aussi affiches. L'option -F
implique -f. Les options suivantes permettent de restreindre
l'affichage aux variables dotees de certains attributs ou de
fixer les attributs des variables :
-a Chaque nom est une variable de type tableau indice (voir
Tableaux plus haut).
-A Chaque nom est une variable de type tableau associatif
(voir Tableaux plus haut).
-f Utiliser seulement les noms de fonctions.
-i La variable est traitee comme un entier ; l'evaluation
arithmetique (voir 'EVALUATION ARITHM'ETIQUE plus haut) est
effectuee lorsqu'une valeur est affectee a la variable.
-l Quand cette variable contient une valeur, toutes les
majuscules seront converties en minuscules. L'attribut
majuscule est desactive.
-r Rendre les noms accessibles en lecture seule. Plus aucune
valeur ne pourra leur etre affectee et ils ne pourront
plus etre detruits.
-t Donner a chaque nom l'attribut trace. Les fonctions
tracees heritent des captures de DEBUG et RETURN de
l'interpreteur appelant. L'attribut trace n'a pas de
signification speciale pour les variables.
-u Quand cette variable contient une valeur, toutes les
minuscules seront converties en majuscules. L'attribut
minuscule est desactive.
-x Marquer les noms pour qu'ils soit exportes dans
l'environnement des commandes ulterieures.
En utilisant << + >> a la place de << - >>, l'attribut
correspondant est desactive, aux exceptions que +a ne peut pas
etre utilise pour detruire une variable tableau et que +r
n'enlevera pas l'attribut lecture seule. Quand utilise dans une
fonction, chaque nom devient local, comme avec la commande
local. Si un nom de variable est suivi par =valeur, la valeur de
cette variable est configuree a valeur. La valeur renvoyee est
0, sauf si une option incorrecte est rencontree, si une
tentative est faite de definir une fonction en utilisant ``-f
foo=bar'', si une tentative est faite d'affecter une valeur a
une variable en lecture seule, si une tentative est faite
d'affecter une valeur a une variable tableau sans employer la
syntaxe d'affectation composee (voir Tableaux plus haut), si un
des noms n'est pas un nom correct pour une variable de
l'interpreteur, si une tentative est faite de supprimer
l'attribut lecture-seule d'une variable en lecture seule, si une
tentative est faite de supprimer l'attribut tableau d'une
variable tableau, ou si une tentative est faite avec -f
d'afficher une fonction inexistante.
dirs [+n] [-n] [-cplv]
Sans option, affiche la liste des repertoires actuellement
memorises. L'affichage par defaut est realise sur une seule
ligne, les noms de repertoires etant separes par des espaces.
Les repertoires sont ajoutes a la liste avec la commande pushd
et supprimes avec la commande popd.
+n Afficher le n-ieme element de la liste fournie par dirs,
lorsqu'appele sans options, en comptant a partir de la
gauche en commencant a zero.
-n Afficher le n-ieme element de la liste fournie par dirs,
lorsqu'appele sans options, en comptant a partir de la
droite en commencant a zero.
-c Effacer la liste des repertoires en les supprimant tous.
-l Produire une liste plus longue ; le format d'affichage
par defaut utilise le tilde pour representer le
repertoire d'accueil.
-p Afficher la pile des repertoires avec un element par
ligne.
-v Afficher la pile des repertoires avec un element par
ligne, en prefixant chaque entree avec son numero
d'indice dans la pile.
La valeur renvoyee est 0, sauf si une option incorrecte a ete
fournie ou si l'indice n depasse la longueur de la pile des
repertoires.
disown [-ar] [-h] [t^ache ...]
Sans options, chaque t^ache est supprimee de la table des taches
actives. Si aucune t^ache n'est precisee, et que ni -a ni -r
n'est fournie, la notion d'interpreteur de t^ache courante est
utilisee. Si l'option -h est indiquee, aucune t^ache n'est
supprimee de la table, mais chaque t^ache est marquee pour que le
signal SIGHUP ne lui soit pas envoye si l'interpreteur recoit un
signal SIGHUP. Si aucune t^ache n'est indiquee et que ni
l'option -a ni l'option -r n'est fournie, la t^ache courante est
concernee. Si aucune t^ache n'est fournie, l'option -a signifie
la suppression ou le marquage de toutes les taches ; l'option -r
sans l'argument t^ache restreint les operations aux taches en
cours d'execution. La valeur renvoyee est 0, sauf si t^ache
n'indique pas une tache correcte.
echo [-neE] [arguments ...]
Affiche les arguments, separes par des espaces, suivis par un
saut de ligne. La valeur renvoyee est toujours 0. Si -n est
indique, le saut de ligne final est supprime. Si l'option -e est
indiquee, l'interpretation des caracteres suivants d'echappement
par une contre-oblique est activee. L'option -E desactive
l'interpretation de ces caracteres d'echappement, meme sur les
systemes ou ils sont interpretes par defaut. L'option
d'interpreteur xpg_echo peut etre utilisee dynamiquement pour
determiner si echo developpe ou non par defaut ces caracteres
d'echappement. echo n'interprete pas -- comme signifiant la fin
des options. echo reconnait les suites de caracteres
d'echappement suivantes :
\a alerte (alarme) ;
\b effacement arriere (<< backspace >>) ;
\c supprime tout affichage suivant ;
\e caractere d'echappement ;
\f saut de page (<< form feed >>) ;
\n saut de ligne (<< new line >>) ;
\r retour chariot (<< carriage return >>) ;
\t tabulation horizontale ;
\v tabulation verticale ;
\\ contre-oblique ;
\0nnn le caractere 8 bits dont la valeur en octal est nnn (zero
a trois chiffres octaux) ;
\xHH le caractere 8 bits dont la valeur hexadecimale est HH
(un ou deux chiffres hexadecimaux) ;
enable [-a] [-dnps] [-f fichier] [nom ...]
Active ou desactive les commandes internes de l'interpreteur.
Desactiver une commande interne permet d'executer une commande
disque ayant le meme nom qu'une commande interne de
l'interpreteur, sans avoir a indiquer un chemin d'acces complet,
meme quand l'interpreteur recherche normalement les commandes
internes avant les commandes du disque. Si -n est utilise,
chaque nom indique est desactive, sinon ils sont actives. Par
exemple, pour utiliser le programme binaire test qui se trouve
dans PATH plutot que la commande interne, utilisez ``enable -n
test''. L'option -f demande de charger la nouvelle commande
interne avec le nom indique depuis le fichier objet partage sur
les systemes qui le permettent. L'option -d permet de supprimer
une commande interne chargee precedemment avec -f. Si aucun
argument nom n'est indique ou si l'option -p est fournie, une
liste des commandes internes de l'interpreteur est affichee.
Sans autre option, la liste est celle des commandes internes
actives de l'interpreteur. Si -n est fournie, seules les
commandes desactivees sont affichees. Si -a est fournie, la
liste de toutes les commandes est affichee, avec une indication
des activations et desactivations. Si -s est fournie, la sortie
est limitee aux commandes internes sp'eciales POSIX. La valeur
renvoyee est 0, sauf si nom n'est pas une commande interne ou
qu'il y a une erreur au chargement d'une nouvelle commande
interne d'un objet partage.
eval [arguments ...]
Les arguments sont lus et regroupes en une seule commande
simple. Cette commande est alors lue et executee par
l'interpreteur et son etat final est renvoye comme valeur de la
commande eval. S'il n'y a pas d'arguments ou uniquement des
arguments vides, eval renvoie 0.
exec [-cl] [-a nom] [commande [arguments]]
Si une commande est indiquee, elle remplace l'interpreteur.
Aucun nouveau processus n'est cree. Les arguments deviennent
ceux de la commande. Si l'option -l est fournie, l'interpreteur
place un tiret en guise de zero-ieme argument fourni a la
commande. C'est ce que fait login. L'option -c conduit a
l'execution de la commande avec un environnement vide. Si
l'option -a est fournie, l'interpreteur transmet le nom comme
zero-ieme argument. Si la commande ne peut etre executee pour
une raison quelconque, un interpreteur non interactif termine,
sauf si l'option de l'interpreteur execfail est activee, auquel
cas une erreur est renvoyee. Un interpreteur interactif renvoie
une erreur si le fichier ne peut pas etre execute. Si aucune
commande n'est indiquee, les eventuelles redirections sont mises
en place dans l'interpreteur courant et l'etat renvoye est 0.
S'il y a une erreur de redirection, l'etat renvoye est 1.
exit [n]
Termine l'interpreteur avec un etat de n. Si n est omis, l'etat
final est celui de la derniere commande executee. Une capture
sur EXIT est executee avant que l'interpreteur ne se termine.
export [-fn] [nom[=mot]] ...
export -p
Les noms fournis sont marques pour etre exportes automatiquement
dans l'environnement des commandes executees par la suite. Si
l'option -f est indiquee, les noms se rapportent a des
fonctions. Si aucun nom n'est donne ou si l'option -p est
fournie, une liste est affichee indiquant l'ensemble des noms
exportes dans cet interpreteur. L'option -n conduit a supprimer
l'attribut d'exportation de chacune des variables nommees. Si un
nom de variable est suivi par =mot, la valeur de la variable est
configuree a mot. export renvoie un etat final de 0, sauf si une
option incorrecte est rencontree, si un des noms n'est pas un
nom correct de variable de l'interpreteur, ou si l'option -f est
fournie avec un nom qui n'est pas une fonction.
fc [-e 'editeur] [-lnr] [premi`ere] [derni`ere]
fc -s [motif=nouveau] [commande]
Commande epinglee (<< fix command >>). Dans la premiere forme,
une plage de commandes, entre la premi`ere et la derni`ere, est
selectionne dans la file d'historique. La premi`ere et la
derni`ere peuvent etre indiquees sous forme de chaines (pour
trouver la derniere commande commencant par cette chaine) ou
sous forme numerique (un indice dans la file d'historique ou un
nombre negatif est utilise comme decalage par rapport au numero
de la commande courante). Si la derni`ere n'est pas indiquee,
elle est configuree a la commande courante si l'on veut afficher
la liste (ainsi ``fc -l -10'' affiche les 10 dernieres
commandes) et a l'identique de la premi`ere sinon. Si la premi`ere
n'est pas indiquee, elle est configuree a la commande precedente
pour une edition et a -16 pour l'affichage de liste.
L'option -n supprime l'affichage des numeros dans la liste.
L'option -r inverse l'ordre des commandes. Si l'option -l est
indiquee, les commandes sont affichees sur la sortie standard.
Sinon, l''editeur indique est appele avec un fichier contenant
les commandes selectionnees. Si aucun 'editeur n'est indique, on
utilise la valeur de la variable FCEDIT ou la valeur de EDITOR
si FCEDIT n'existe pas. Si aucune variable n'existe, vi est
utilise. Lorsque l'edition se termine, les commandes sont
affichees puis executees.
Dans la seconde forme, la commande est re-executee apres avoir
remplace chaque instance du motif par nouveau. Un alias utile
pour ceci est ``r="fc -s"'', ainsi en tapant ``r cc'' on relance
la derniere commande commencant par ``cc'' et en tapant ``r'' on
re-execute la commande precedente.
Lorsque la premiere forme est utilisee, la valeur renvoyee est
0, sauf si une option incorrecte est trouvee ou si premi`ere ou
derni`ere indiquent des lignes d'historique hors d'atteinte. Si
l'option -e est fournie, la valeur renvoyee est celle de la
derniere commande executee ou un echec si une erreur s'est
produite avec le fichier temporaire des commandes. Avec la
seconde forme, l'etat renvoye est celui de la commande
re-executee, sauf si commande n'indique pas une ligne correcte
de l'historique, auquel cas fc renvoie un echec.
fg [t^ache]
Reprend la t^ache au premier plan qui devient la tache courante.
Si aucune t^ache n'est precisee, l'interpreteur utilise la notion
de t^ache courante. La valeur renvoyee est celle de la commande
placee au premier plan ou un echec si le controle des taches est
desactive ou, lorsque le controle des taches est active, si la
t^ache n'indique pas une tache correcte ou si la t^ache indique
une tache lancee sans controle des taches.
getopts cha^ine_d_options nom [arguments]
getopts est utilise par les scripts d'interpreteur pour analyser
les parametres positionnels. La cha^ine_d_options contient
l'ensemble des caracteres d'options a reconnaitre ; si un
caractere est suivi par un deux-points, l'option est censee
avoir un argument, qui devrait en etre separe par une espace.
Les caracteres deux-points et le point d'interrogation ne
peuvent pas etre utilises comme caracteres d'option. A chaque
appel, getopts place l'option suivante dans la variable de
l'interpreteur dont le nom est fourni, en la creant si elle
n'existe pas et l'indice de l'argument suivant a traiter dans la
variable OPTIND. OPTIND est initialisee a 1 a chaque appel d'un
interpreteur ou d'un script. Quand une option necessite un
argument, getopts place cet argument dans la variable OPTARG.
L'interpreteur ne reinitialise pas OPTIND automatiquement, il
faut le faire manuellement entre des appels multiples a getopts
au sein du meme appel d'interpreteur si un nouveau jeu de
parametres doit etre utilise.
Lorsque la fin des options est atteinte, getopts termine avec
une valeur renvoyee strictement superieure a zero. OPTIND est
positionne a l'indice du premier argument obligatoire et un
point d'interrogation (?) est place dans la variable nom.
getopts analyse en principe les parametres positionnels, mais si
plus d'arguments sont indiques, getopts analysera ces derniers a
la place.
getopts peut signaler des erreurs de deux facons. Si le premier
caractere de la cha^ine_d_options est un deux-points, les erreurs
sont signalees de facon silencieuse. Lors d'un fonctionnement
normal, des messages de diagnostic sont affiches si une option
est incorrecte ou s'il manque un argument d'option. Si la
variable OPTERR est configuree a 0, aucun message d'erreur ne
sera affiche, meme si le premier caractere de la
cha^ine_d_options n'est pas un deux-points.
Si une option incorrecte est rencontree, getopts place un point
d'interrogation (?) dans la variable nom, affiche un message
d'erreur (s'il n'est pas en mode silencieux) et detruit la
variable OPTARG. Si getopts fonctionne en mode silencieux, le
caractere d'option est place dans OPTARG et aucun message de
diagnostic n'est affiche.
Lorsqu'un argument d'option necessaire est absent et si getopts
n'est pas silencieux, un point d'interrogation (?) est place
dans la variable nom, OPTARG est detruite et un message de
diagnostic est affiche. Si getopts est silencieux, un
deux-points (:) est place dans la variable nom et OPTARG est
positionne a l'option monocaractere trouvee.
getopts renvoie vrai si une option, indiquee ou non, est
trouvee. Il renvoie faux si la fin des options est atteinte ou
si une erreur se produit.
hash [-lr] [-p fichier] [-dt] [nom]
Pour chaque nom fourni, le chemin d'acces complet de la commande
est determine en examinant les repertoires de $PATH, et
memorise. Si l'option -p est fournie, aucune recherche de chemin
d'acces n'est effectuee et le fichier est utilise comme chemin
d'acces complet pour la commande. L'option -r conduit
l'interpreteur a oublier tous les emplacements memorises.
L'option -d conduit l'interpreteur a oublier tous les
emplacements memorises de chaque nom. Si l'option -t est
fournie, le chemin d'acces complet de chaque nom correspondant
est affiche. Si plusieurs arguments nom sont fournis avec -t, le
nom est affiche avant chaque chemin d'acces complet associe.
L'option -l conduit a afficher la sortie dans un format
reutilisable en entree. Si aucun argument n'est indique ou si
seulement -l est fournie, des informations sur les commandes
memorisees sont affichees. La valeur renvoyee est vrai, sauf si
nom n'est pas trouve ou si une option incorrecte est fournie.
help [-dms] [motif]
Affiche des informations d'aide au sujet des commandes internes.
Si un motif est indique, help fournit de l'aide sur toutes les
commandes internes correspondant a ce motif, sinon, une liste
des commandes internes et des structures de controle de
l'interpreteur est affichee.
-d Afficher une courte description de chaque motif.
-m Afficher la description de chaque motif dans un format du
type pages de manuel.
-s Afficher seulement un court synopsis d'utilisation de
chaque motif.
L'etat renvoye est 0, sauf si aucune commande ne correspond au motif.
history [n]
history -c
history -d nombre
history -anrw [fichier]
history -p argument [argument ...]
history -s argument [argument ...]
Sans options, affiche la liste des commandes de la file
d'historique, avec les numeros de ligne. Les lignes marquees
avec un * ont ete modifiees. Un argument n permet de n'afficher
que les n dernieres lignes. Si la variable de l'interpreteur
HISTTIMEFORMAT existe et n'est pas vide, elle est utilisee comme
chaine de format pour strftime(3) afin d'afficher l'horodatage
associe a chaque element de l'historique. Aucun blanc ne separe
l'horodatage ainsi mis en forme de la ligne d'historique. Si un
argument fichier est fourni, il est utilise comme nom de fichier
d'historique ; sinon la valeur de HISTFILE est utilisee. Les
options, si fournies, ont les significations suivantes :
-c Effacer la file de l'historique en supprimant tous les
elements.
-d nombre
Detruire l'element de l'historique a la position nombre.
-a Ajouter les << nouvelles >> lignes d'historiques (celles
creees depuis le debut de la session courante de bash)
dans le fichier d'historique.
-n Lire dans le fichier d'historique les lignes non encore
lues et les ajouter a la file d'historique courante. Il
s'agit des lignes qui ont ete ajoutees dans le fichier
d'historique depuis le debut de la session bash.
-r Lire le contenu du fichier et l'utiliser comme historique
courant.
-w Ecrire dans le fichier l'historique actuel, en ecrasant
le contenu precedent.
-p Effectuer la substitution d'historique sur les arguments
suivants et afficher le resultat sur la sortie standard.
Ne pas memoriser les resultats dans la file d'historique.
Chaque argument doit etre protege pour desactiver le
developpement normal de l'historique.
-s Conserver les arguments dans la file d'historique comme
un unique element. La derniere commande de la file
d'historique est supprimee avant que les arguments ne
soient ajoutes.
Si la variable HISTTIMEFORMAT existe, les informations
d'horodatage associees a chaque element de l'historique sont
ecrites dans le fichier d'historique, reperes par le caractere
de commentaire d'historique. Quand le fichier d'historique est
lu, les lignes commencant par le caractere de commentaire
d'historique suivi immediatement par un chiffre sont consideres
comme des horodatages de la ligne d'historique precedente. La
valeur renvoyee est 0, sauf si une option incorrecte est
fournie, si une erreur se produit durant la lecture ou
l'ecriture du fichier, si un nombre incorrect est fourni comme
argument a -d ou si le developpement de l'historique fourni en
argument a -p echoue.
jobs [-lnprs] [ t^ache ... ]
jobs -x commande [ arguments ... ]
La premiere forme affiche la liste des taches actives. Les
options ont les significations suivantes :
-l Afficher les PID, en plus des informations normales.
-p Afficher uniquement le PID du meneur du groupe de
processus de la tache.
-n Afficher uniquement des informations sur les taches dont
l'etat a change depuis la derniere notification de leur
etat a l'utilisateur.
-r Restreindre l'affichage aux taches en cours d'execution.
-s Restreindre l'affichage aux taches suspendues.
Si une t^ache est indiquee, l'affichage est restreint aux
informations relatives a cette tache. L'etat renvoye est 0, sauf
si une option incorrecte est rencontree ou si une t^ache
incorrecte est fournie.
Si l'option -x est fournie, jobs remplace toute t^ache trouvee
dans la commande ou dans ses arguments avec les Process Group ID
correspondant, puis il execute la commande en lui transmettant
les arguments et en renvoyant son etat final.
kill [-s signal | -n num-signal | -signal] [pid | t^ache] ...
kill -l [signal | 'etat_final]
Envoie le signal indique par signal ou num-signal aux processus
indiques par pid ou par t^ache. signal est soit sous la forme de
nom de signal (indifferent a la casse), comme SIGKILL (avec ou
sans le prefixe SIG), soit sous forme numerique ; num-signal est
un numero de signal. Si signal est absent, SIGTERM est suppose
par defaut. Un argument -l provoque l'affichage de la liste des
noms de signaux. Si des arguments sont fournis quand -l est
indique, les noms des signaux correspondant aux arguments sont
affiches et l'etat renvoye est 0. L'argument 'etat_final de
l'option -l est un nombre indiquant soit un numero de signal,
soit l'etat final d'un processus termine par un signal. kill
renvoie vrai si au moins un signal a ete envoye avec succes ou
faux si une erreur s'est produite ou si une option incorrecte a
ete rencontree.
let argument [argument ...]
Chaque argument est une expression arithmetique a evaluer (voir
'EVALUATION ARITHM'ETIQUE plus haut). Si l'evaluation du dernier
argument donne 0, let renvoie 1 ; sinon 0 est renvoye.
local [option] [nom[=valeur] ...]
Pour chaque argument, une variable locale nom est creee et la
valeur lui est affectee. L'option peut etre n'importe quelle
option acceptee par declare. Quand local est utilise dans une
fonction, la variable nom possede une portee visible restreinte
a cette fonction et ses enfants. Sans operandes, local affiche
la liste des variables locales sur la sortie standard. Une
utilisation de local hors des fonctions est erronee. La valeur
renvoyee est 0, sauf si local est utilise hors d'une fonction,
si un nom incorrect est fourni ou si nom est une variable en
lecture seule.
logout Termine un interpreteur de connexion.
mapfile [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C rappel]
[-c quantum] [tableau]
readarray [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C rappel]
[-c quantum] [tableau]
Lit les lignes depuis l'entree standard vers la variable de type
tableau indice tableau, ou depuis le descripteur de fichier fd
si l'option -u est fournie. La variable MAPFILE est le tableau
par defaut. Les options, si fournies, ont les significations
suivantes :
-n Copier au plus nombre lignes. Si nombre est 0, toutes les
lignes sont copiees.
-O Commencer l'affectation de tableau a l'indice origine.
L'indice par defaut est 0.
-s Supprimer les nombre premieres lignes lues.
-t Eliminer le saut de ligne de chaque ligne lue.
-u Lire les lignes a partir du descripteur de fichier fd
plutot que depuis l'entree standard.
-C Evaluer rappel a chaque fois que quantum lignes sont
lues. L'option -c precise le quantum.
-c Preciser le nombre de lignes entre chaque appel a rappel.
Si -C est precise sans -c, le quantum par defaut est 5000. Quand
rappel est evalue, l'indice du prochain element de tableau a
affecter est fourni en argument supplementaire. rappel est
evalue apres la lecture de la ligne, mais avant l'affectation de
l'element de tableau.
Si aucune origine explicite n'est fournie, mapfile effacera
tableau avant de lui affecter des valeurs.
mapfile termine avec succes sauf si une option ou un de ses
arguments n'est pas valable, ou si tableau n'est pas valable,
n'est pas un tableau indice ou si son affectation est
impossible.
popd [-n] [+n] [-n]
Enleve des elements de la pile des repertoires. Sans arguments,
seul le repertoire du sommet de la pile est elimine et un cd est
effectue en direction du nouveau repertoire au sommet. Les
argument, si fournis, ont les significations suivantes :
-n Empecher le changement normal de repertoire lors de la
suppression d'un repertoire de la pile. Seule la pile est
manipulee.
+n Supprimer le n-ieme element de la liste affichee par
dirs, en comptant depuis la gauche a partir de zero. Par
exemple : ``popd +0'' enleve le premier repertoire,
``popd +1'' le second.
-n Supprimer le n-ieme element de la liste affichee par
dirs, en comptant depuis la droite a partir de zero. Par
exemple : ``popd -0'' supprime le dernier repertoire et
``popd -1'' l'avant-dernier.
Si la commande popd reussit, un dirs est effectue et l'etat
renvoye est 0. popd renvoie faux si une option incorrecte est
trouvee, si la pile de repertoires est vide, si le repertoire
indique est absent de la pile ou si le changement de repertoire
a echoue.
printf [-v var] format [arguments]
Ecrit les arguments mis en forme sur la sortie standard sous le
controle du format. Ce format est une chaine contenant trois
types de caracteres : normaux, qui sont simplement copies sur la
sortie standard, les caracteres d'echappement qui sont convertis
puis copies sur la sortie standard et les specifications de
format qui conduisent chacune a l'affichage des arguments
successifs. En plus des formats standards de printf(1), %b
conduit printf a developper les suites de caracteres
d'echappement par contre-oblique se trouvant dans l'argument
correspondant (a l'exception de \c qui termine la sortie, des
contre-obliques dans \', \" et \? qui ne sont pas supprimees et
des suites de caracteres d'echappement pour les nombres en octal
commencant par \0 qui peuvent contenir jusqu'a quatre chiffres)
et %q conduit printf a afficher l'argument correspondant dans un
format reutilisable en entree de l'interpreteur.
L'option -v conduit a affecter la sortie a la variable var
plutot que de l'afficher sur la sortie standard.
Le format est reutilise jusqu'a consommer tous les arguments. Si
le format demande plus d'arguments que fournis, les
specifications supplementaires se comportent comme si des
valeurs zero ou des chaines vides, suivant le besoin, avaient
ete fournies. La valeur renvoyee est zero en cas de succes,
differente de zero en cas d'echec.
pushd [-n] [+n] [-n]
pushd [-n] [r'ep]
Ajoute un repertoire au sommet de la pile des repertoires ou
effectue une rotation dans la pile, en ramenant le repertoire
courant au sommet. Sans argument, cette commande echange les
deux repertoires au sommet et renvoie 0, sauf si la pile est
vide. Les arguments, si fournis, ont les significations
suivantes :
-n Empecher le changement normal de repertoire lors d'un
ajout dans la pile. Seule la pile est manipulee.
+n Effectuer une rotation dans la pile, de facon a amener au
sommet le n-ieme repertoire (de la liste affichee par
dirs, en comptant depuis la gauche a partir de zero).
-n Effectuer une rotation dans la pile, de facon a amener au
sommet le n-ieme repertoire (de la liste affichee par
dirs, en comptant depuis la gauche a partir de zero).
r'ep Ajouter le repertoire r'ep au sommet de la pile de
repertoires en en faisant le nouveau repertoire de
travail courant.
Si la commande pushd reussit, un dirs est aussi effectue. Avec
la premiere forme, pushd renvoie 0 sauf si le deplacement vers
r'ep echoue. Avec la seconde forme, pushd renvoie 0, sauf si la
pile est vide, si un element inexistant dans la pile est indique
ou si le changement de repertoire vers le nouveau repertoire
indique echoue.
pwd [-LP]
Affiche le chemin d'acces absolu au repertoire de travail
actuel. Le chemin ne contiendra pas de liens symboliques si
l'option -P est fournie, ou si l'option -o physical de la
commande interne set est activee. Si l'option -L est utilisee,
le chemin affiche peut contenir des liens symboliques. L'etat
renvoye est 0, sauf si une erreur s'est produite lors de la
lecture du nom du repertoire courant ou si une option incorrecte
est fournie.
read [-ers] [-a tableau] [-d d'elimiteur] [-i texte] [-n nb_car] [-N
nb_car] [-p invite] [-t d'elai] [-u fd] [nom ...]
Une ligne est lue depuis l'entree standard ou a partir du
descripteur de fichier fd fourni en argument a l'option -u, puis
le premier mot de cette ligne est affecte au premier nom, le
second mot au second nom, et ainsi de suite avec les mots
restants et leurs separateurs affectes au dernier nom. S'il y a
moins de mots lus dans le flux d'entree que de variables, des
valeurs vides sont affectees a celles restantes. Les caracteres
contenus dans la variable IFS sont utilises pour decouper la
ligne en mots. Le caractere contre-oblique (\) permet de
supprimer toute signification speciale pour le caractere suivant
et autorise la continuation de lignes. Les options, si fournies,
ont les significations suivantes :
-a tableau
Les mots sont affectes aux indices successifs d'une
variable tableau de nom tableau, en commencant a 0.
tableau est detruit avant que de nouvelles valeurs ne
soient affectees. Les autres arguments nom sont ignores.
-d d'elimiteur
Le premier caractere de d'elimiteur est utilise pour
terminer la ligne de saisie, plutot qu'un saut de ligne.
-e Si l'entree standard provient d'un terminal, la
bibliotheque readline (voir READLINE plus haut) est
utilisee pour obtenir la ligne. Readline utilise les
configurations d'edition en cours (ou par defaut, si
l'edition de ligne n'etait pas prealablement active).
-i texte
Si readline est utilisee pour lire la ligne, texte est
place dans le tampon d'edition avant le debut de
l'edition.
-n nb_car
read s'arrete apres avoir lu nb_car caracteres plutot que
d'attendre une ligne complete en entree, mais un
delimiteur est respecte si moins de nb_car caracteres ont
ete lus avant le delimiteur.
-N nb_car
read s'arrete apres avoir lu exactement nb_car caracteres
plutot que d'attendre une ligne complete en entree, sauf
si une fin de fichier (EOF) est rencontree ou si read
depasse son delai de reponse. Les delimiteurs rencontres
en entree ne sont pas pris en compte et n'entrainent pas
la fin de read avant que nb_car caracteres n'aient ete
lus.
-p invite
Afficher invite sur la sortie d'erreur standard, sans
caractere final de saut de ligne, avant d'essayer de lire
toute nouvelle saisie. L'invite est affichee seulement si
l'entree vient d'un terminal.
-r La contre-oblique n'agit pas comme un caractere
d'echappement. La contre-oblique est consideree comme
faisant partie de la ligne. En particulier une
contre-oblique suivie d'un saut de ligne n'est pas
consideree comme une continuation de ligne.
-s Mode silencieux. Si une entree arrive a partir d'un
terminal, les caracteres ne sont pas affiches.
-t d'elai
Conduire read a expirer et renvoyer un echec si une ligne
complete en entree n'a pas ete lue dans le d'elai en
secondes. d'elai est un nombre decimal avec eventuellement
des chiffres apres la virgule (NdT : point en
l'occurrence). Cette option n'est effective que si read
lit l'entree a partir d'un terminal, d'un tube, ou depuis
un autre fichier special ; elle n'a aucun effet lors de
la lecture d'un fichier normal. Si d'elai est nul, read
termine avec succes si une entree est disponible pour le
descripteur de fichier indique, en echec sinon. L'etat
final est superieur a 128 si le delai est depasse.
-u fd Lire l'entree a partir du descripteur de fichier fd.
Si aucun nom n'est fourni, la ligne lue est affectee entierement
a la variable REPLY. Le code renvoye est zero, sauf si une fin
de fichier (EOF) est rencontree, si read depasse son delai de
reponse (auquel cas le code renvoye est plus grand que 128) ou
si un descripteur de fichier incorrect est fourni en argument de
-u.
readonly [-aApf] [nom[=mot] ...]
Les noms indiques recoivent un attribut lecture seule ; les
valeurs de ces noms ne pourront plus etre modifiees par des
affectations ulterieures. Si l'option -f est fournie, les
fonctions correspondant a ces noms sont marquees en consequence.
L'option -a restreint l'action aux variables tableaux indices ;
l'option -A restreint l'action aux variables tableaux
associatifs. Si aucun argument nom n'est indique ou si l'option
-p est fournie, une liste de tous les noms en lecture seule est
affichee. L'option -p conduit a afficher la sortie dans un
format susceptible d'etre reutilise en entree. Si le nom d'une
variable est suivi par =mot, la variable est configuree a mot.
L'etat renvoye est 0, sauf si une option incorrecte a ete
rencontree, si l'un des noms n'est pas un nom correct de
variable de l'interpreteur ou si l'option -f est fournie avec un
nom qui n'est pas une fonction.
return [n]
Termine une fonction en renvoyant la valeur indiquee par n. Si n
est omis, la valeur renvoyee est celle de la derniere commande
executee dans le corps de la fonction. Si utilisee hors d'une
fonction, mais durant l'execution d'un script par la commande .
(source) elle conduit a l'arret de l'execution du script par
l'interpreteur et renvoie comme etat final du script : soit n
soit l'etat final de la derniere commande executee dans le
script. Si utilisee hors d'une fonction ou d'un script execute
par ., l'etat renvoye est faux. Toute commande associee a la
capture de RETURN est executee avant la reprise de l'execution
apres la fonction ou le script.
set [--abefhkmnptuvxBCEHPT] [-o nom_d_option] [argument ...]
set [+abefhkmnptuvxBCEHPT] [+o nom_d_option] [argument ...]
Sans options, le nom et la valeur de chacune des variables de
l'interpreteur sont affiches dans un format susceptible d'etre
reutilise en entree pour creer ou reinitialiser les variables
courantes. Les variables en lecture seule ne peuvent pas etre
reinitialisees. Dans le mode posix, seules les variables de
l'interpreteur sont affichees. La sortie est triee en fonction
des parametres linguistiques regionaux courants. Lorsque des
options sont indiquees, elles creent ou detruisent des attributs
de l'interpreteur. Tous les arguments restant apres traitement
des options sont consideres comme des valeurs pour les
parametres positionnels et sont affectes, dans l'ordre, a : $1,
$2, ... $n. Les options, si indiquees, ont les significations
suivantes :
-a Marquer automatiquement des variables et fonctions
modifiees ou creees pour qu'elles soient exportees dans
l'environnement des commandes executees ulterieurement.
-b Signaler l'etat des taches terminees en arriere-plan
immediatement, plutot que d'attendre l'affichage de la
prochaine invite de base. N'est effectif que si le
controle des taches est active.
-e Terminer immediatement si une conduite (qui peut etre
reduite a une unique commande simple), une commande de
sous-interpr'eteur entre parentheses, ou une liste de
commandes entre accolades (voir GRAMMAIRE DE
L'INTERPR'ETEUR plus haut) termine avec un etat different
de zero. L'interpreteur ne termine pas si la commande
qui echoue fait partie d'une liste de commandes
immediatement suivie par un mot-clef while ou until,
d'un test suivant les mots reserves if ou elif, d'une
commande execute dans une liste && ou || sauf si la
commande est situee apres le dernier && ou ||, d'une
commande de conduite a l'exception de la derniere, ou si
la valeur renvoyee par la commande est inversee par !.
Une capture sur ERR, si existante, est executee avant
que l'interpreteur ne se termine. Cette option
s'applique a l'environnement de l'interpreteur ainsi
qu'a l'environnement de chaque sous-interpreteur
individuellement (voir ENVIRONNEMENT D'EX'ECUTION DES
COMMANDES plus haut), et peut conduire des
sous-interpreteurs a se terminer avant d'y avoir execute
toutes les commandes.
-f Desactiver le developpement des chemins.
-h Memoriser l'emplacement des commandes lors de leur
execution. Activee par defaut.
-k Tous les arguments sous la forme d'affectations sont
places dans l'environnement d'une commande, et non pas
seulement ceux qui precedent le nom de la commande.
-m Mode supervision. Le controle des taches est active.
Cette option est activee par defaut pour les
interpreteurs interactifs sur les systemes qui le
permettent (voir CONTR^OLE DES T^ACHES plus haut). Les
processus en arriere-plan sont executes dans un groupe
de processus separe et une ligne contenant leurs etats
finaux est affichee lorsqu'ils terminent.
-n Lecture de commandes sans execution. Ceci peut etre
utilise pour rechercher les erreurs de syntaxe dans un
script. Cette option est ignoree par les interpreteurs
interactifs.
-o nom_d_option
Le nom_d_option est l'un des suivants :
allexport
Identique a -a.
braceexpand
Identique a -B.
emacs Utiliser une interface d'edition des lignes de
commande << a la Emacs >>. C'est le comportement
active par defaut quand l'interpreteur est
interactif, sauf si l'interpreteur est demarre
avec l'option --noediting. L'interface d'edition
utilisee par read -e est modifiee egalement.
errexit Identique a -e.
errtrace
Identique a -E.
functrace
Identique a -T.
hashall Identique a -h.
histexpand
Identique a -H.
history Activer l'historique des commandes, comme decrit
plus haut dans HISTORY. Cette option est activee
par defaut dans les interpreteurs interactifs.
ignoreeof
Identique a l'execution de la commande
d'interpreteur ``IGNOREEOF=10'' (voir Variables
de l'interpr'eteur plus haut).
keyword Identique a -k.
monitor Identique a -m.
noclobber
Identique a -C.
noexec Identique a -n.
noglob Identique a -f.
nolog Actuellement ignoree.
notify Identique a -b.
nounset Identique a -u.
onecmd Identique a -t.
physical
Identique a -P.
pipefail
Si existante, la valeur renvoyee par une
conduite est la valeur de la derniere commande
(la plus a droite) a terminer avec un etat final
different de zero ou zero si toutes les
commandes de la conduite terminent avec succes.
Desactivee par defaut.
posix Aligner le comportement de bash sur le standard
POSIX, en ce qui concerne les options dont
l'action par defaut differe de ce standard (mode
posix).
privileged
Identique a -p.
verbose Identique a -v.
vi Utiliser une interface d'edition des lignes de
commande << a la vi >>. L'interface d'edition
utilisee par read -e est modifiee egalement.
xtrace Identique a -x.
Si -o est fournie sans nom_d_option, les valeurs
actuelles des options sont affichees. Si +o est fournie
sans nom_d_option, la serie de commandes set permettant
de recreer la configuration courante d'options est
affichee sur la sortie standard.
-p Basculer en mode privil'egi'e. Dans ce mode, les fichiers
$ENV et $BASH_ENV ne sont pas traites, les fonctions de
l'interpreteur ne sont pas heritees de l'environnement,
et les variables SHELLOPTS, BASHOPTS, CDPATH, et
GLOBIGNORE, si presentes dans l'environnement, sont
ignorees. Si l'interpreteur demarre avec un UID (ou
respectivement un GID) effectif different de son UID
(GID) reel et si l'option -p n'est pas fournie, ce
comportement est applique et l'UID (GID) effectif est
positionne a l'UID (GID) reel. Si l'option -p est
fournie au demarrage, l'UID (GID) effectif n'est pas
modifie. Desactiver cette option conduit a la
configuration des UID et GID effectifs a la valeur des
UID et GID reels.
-t Terminer apres lecture et execution d'une commande.
-u Considerer les variables inexistantes et les parametres
differents des parametres speciaux << @ >> et << * >>
comme des erreurs lors du developpement des parametres.
Si un developpement de variable inexistante ou de
parametre est tente, l'interpreteur affiche un message
d'erreur et, s'il n'est pas interactif, termine avec un
etat different de zero.
-v Afficher les lignes en entree de l'interpreteur
lorsqu'elles sont lues.
-x Apres le developpement de chaque commande simple,
commande for, commande case, commande select ou commande
for arithmetique, afficher la valeur developpee de PS4,
suivie de la commande et ses arguments developpes ou la
liste de mots associes.
-B L'interpreteur effectue le developpement des accolades
(voir D'eveloppement des accolades plus haut). Activee
par defaut.
-C Si configuree, bash n'ecrasera pas un fichier existant
avec les operateurs >, >& et <>. Ce comportement peut
etre surpasse lors de la creation d'un fichier de sortie
en utilisant l'operateur de redirection >| a la place de
>.
-E Si configuree, toute capture sur ERR est heritee par les
fonctions d'interpreteur, les substitutions de commandes
et les commandes executees dans un sous-interpreteur. La
capture de ERR n'est normalement pas heritee dans de
tels cas.
-H Activer le style ! de substitution d'historique. C'est
le comportement par defaut lorsque l'interpreteur est
interactif.
-P Si configuree, l'interpreteur ne doit pas suivre les
liens symboliques en executant des commandes comme cd
qui modifient le repertoire de travail. Il utilise a la
place le repertoire physique. Par defaut bash suit la
chaine logique des repertoires lors des commandes qui
modifient le repertoire courant.
-T Si configuree, toutes les captures de DEBUG et RETURN
sont heritees par les fonctions de l'interpreteur, les
substitutions de commande et les commandes executees
dans un sous-interpreteur. Les captures de DEBUG et
RETURN ne sont normalement pas heritees dans de tels
cas.
-- Si aucun argument ne suit cet option, alors les
parametres positionnels sont detruits. Sinon, les
parametres positionnels sont configures aux arguments,
meme si certains d'entre eux commencent par un -.
- Marquer la fin des options, tous les arguments restants
sont alors affectes aux parametres positionnels. Les
options -x et -v sont desactivees. S'il n'y a pas
d'arguments, les parametres positionnels ne sont pas
modifies.
Par defaut les attributs sont desactives, sauf indication
contraire. En utilisant << + >> a la place de << - >>, les
options sont desactivees. Les options peuvent egalement etre
fournies en argument lors de l'appel de l'interpreteur. Le jeu
courant des options peut etre trouve dans $-. La valeur renvoyee
est toujours vrai, sauf si une option incorrecte est rencontree.
shift [n]
Les parametres positionnels a partir de n+1 ... sont renommes en
$1 .... Les parametres representes par les nombres $# jusqu'a
$#-n+1 sont detruits. n doit etre un entier positif inferieur ou
egal a $#. Si n vaut 0, aucun parametres n'est modifie. Si n est
omis, on suppose qu'il vaut 1. Si n est superieur a $#, les
parametres positionnels ne sont pas modifies. L'etat renvoye est
strictement positif si n est superieur a $# ou strictement
negatif, sinon 0 est renvoye.
shopt [-pqsu] [-o] [nom_opt ...]
Bascule la valeur des variables controlant le comportement
facultatif de l'interpreteur. Sans option ou avec l'option -p,
une liste de toutes les options configurables est affichee, avec
l'indication de l'etat de chacune d'entre elles. L'option -p
conduit a un affichage de la sortie sous une forme susceptible
d'etre reutilisee en entree. Les autres options ont les
significations suivantes :
-s Activer (creer) chaque nom_opt.
-u Desactiver (detruire) chaque nom_opt.
-q Supprimer la sortie normale (mode silencieux) ; l'etat
renvoye indique si nom_opt est existante ou non. Si
plusieurs arguments nom_opt sont indiques avec -q, l'etat
renvoye est zero si tous les nom_opt sont actives ;
different de zero sinon.
-o Restreindre les valeurs de nom_opt a celles definies pour
l'option -o de la commande interne set.
Si l'option -s ou -u est utilisee sans argument nom_opt,
l'affichage est limite aux options qui sont respectivement
existantes ou non. Sauf indication contraire, les options shopt
sont desactivees (detruites) par defaut.
L'etat renvoye lors d'un affichage des options est zero si tous
les nom_opt sont actives, different de zero sinon. Lors de la
creation ou de la destruction d'options, l'etat renvoye est
zero, a moins que nom_opt ne soit pas une option correcte de
l'interpreteur.
La liste des options shopt est :
autocd Si existante, un nom de commande qui est le nom d'un
repertoire est execute comme s'il etait l'argument de la
commande interne cd. Cette option n'est utilisee que par
les interpreteurs interactifs.
cdable_vars
Si existante, un argument de la commande interne cd qui
n'est pas un repertoire est suppose etre un nom de
variable dont la valeur est le repertoire vise.
cdspell Si existante, les erreurs minimes de frappe dans un
composant du repertoire en argument de la commande cd
seront corrigees. Les erreurs corrigees sont les
inversions d'un caractere, un caractere manquant et un
caractere en trop. Si une correction est possible, le
nom de repertoire corrige est affiche et la commande est
execute. Cette option n'est utilisee que par les
interpreteurs interactifs.
checkhash
Si existante, bash verifie si une commande trouvee dans
la table de hachage existe avant d'essayer de
l'executer. Si une commande hachee n'existe plus, une
recherche normale de chemin est effectuee.
checkjobs
Si existante, bash affiche la liste des etats de toutes
les taches en cours et arretees avant de terminer un
interpreteur interactif. Si des taches sont en cours, la
sortie est differee jusqu'a ce qu'une nouvelle sortie
soit tentee sans commande intermediaire (voir CONTR^OLE
DES TACHES plus haut). L'interpr'eteur repousse toujours
la sortie si des t^aches sont arr^et'ees.
checkwinsize
Si existante, bash verifie la taille de la fenetre apres
chaque commande et, au besoin, met a jour les valeurs
des variables LINES et COLUMNS.
cmdhist Si existante, bash essaie de sauvegarder les commandes
s'etendant sur plusieurs lignes en un seul element
d'historique. Ceci facilite l'edition ulterieure de
commandes multilignes.
compat31
Si existante, bash modifie son comportement de maniere
compatible a la version 3.1 en respectant les arguments
proteges de l'operateur de commande conditionnelle =~.
compat32
Si existante, bash modifie son comportement de maniere
compatible a la version 3.2 en respectant les
comparaisons de chaines specifiques aux parametres
linguistiques regionaux lors de l'utilisation des
operateurs de commande conditionnelle < et >.
compat40
Si existante, bash modifie son comportement de maniere
compatible a la version 4.0 en respectant les
comparaisons de chaines specifiques aux parametres
linguistiques regionaux lors de l'utilisation des
operateurs de commande conditionnelle < et > et l'effet
d'interruption de liste de commandes.
dirspell
Si existante, bash essaie de corriger les erreurs de
frappe sur les noms de repertoire lors du completement
de mot si le nom de repertoire initialement fourni
n'existe pas.
dotglob Si existante, bash inclut les noms de fichiers
commencant par un << . >> dans les resultats des
developpements de chemins.
execfail
Si existante, un interpreteur non interactif ne
terminera pas s'il ne peut executer un fichier indique
en argument de la commande interne exec. Un interpreteur
interactif ne termine pas si exec echoue.
expand_aliases
Si existante, les alias sont developpes comme decrit
plus haut, dans ALIAS. Cette option est activee par
defaut pour les interpreteurs interactifs.
extdebug
Si existante, le comportement attendu par les traceurs
est active :
1. L'option -F de la commande interne declare
affiche le nom du fichier source et le numero de
ligne correspondant a chaque nom de fonction
fourni comme argument.
2. Si la commande lancee par la capture de DEBUG
renvoie une valeur differente de zero, la
commande suivante est sautee et n'est pas
executee.
3. Si la commande lancee par la capture de DEBUG
renvoie la valeur 2 et si l'interpreteur
s'execute dans un sous-programme (une fonction de
l'interpreteur ou un script execute par les
commandes internes . ou source), un appel a
return est simule.
4. BASH_ARGC et BASH_ARGV sont mises a jour comme
explique dans leurs descriptions plus haut.
5. Le tracage des fonctions est active : la
substitution de commande, les fonctions de
l'interpreteur et les sous-interpreteurs appeles
avec ( command ) heritent des captures de DEBUG
et RETURN.
6. Le tracage d'erreur est active : la substitution
de commande, les fonctions de l'interpreteur et
les sous-interpreteurs appeles avec ( command )
heritent de la capture de ERROR.
extglob Si existante, les fonctionnalites etendues de mise en
correspondance decrites plus haut dans D'eveloppement des
chemins sont activees.
extquote
Si existante, la protection par $'cha^ine' et $"cha^ine"
est effectuee a l'interieur des developpements de
${param`etres} entre guillemets doubles. Cette option est
activee par defaut.
failglob
Si existante, les motifs qui echouent a faire
correspondre les noms de fichiers pendant le
developpement des chemins font qu'ils provoqueront une
erreur de developpement.
force_fignore
Si existante, les suffixes indiques par la variable de
l'interpreteur FIGNORE conduiront des mots a etre
ignores lors du completement de mot, meme si les mots
ignores sont les seuls completements possibles. Voir
VARIABLES DE L'INTERPR'ETEUR plus haut pour une
description de FIGNORE. Cette option est activee par
defaut.
globstar
Si existante, le motif ** utilise dans un contexte de
developpement des chemins correspondra a un fichier et
zero ou plusieurs repertoires et sous-repertoires. Si le
motif est suivi de /, seuls les repertoires et
sous-repertoires correspondent.
gnu_errfmt
Si existante, les messages d'erreur de l'interpreteur
seront ecrits dans le format standard GNU des messages
d'erreurs.
histappend
Si existante, la file d'historique est ajoutee au
fichier designe par la valeur de la variable HISTFILE
lorsque l'interpreteur termine, plutot que d'ecraser ce
fichier.
histreedit
Si existante et si readline est utilisee, un utilisateur
peut reediter une substitution d'historique qui a
echoue.
histverify
Si existante et si readline est utilisee, le resultat de
la substitution d'historique n'est pas transmise
immediatement a l'analyseur de l'interpreteur. A la
place, la ligne resultante est chargee dans le tampon
d'edition de readline, permettant des modifications
ulterieures.
hostcomplete
Si existante et si readline est utilisee, bash essayera
d'effectuer le completement des noms de machines
lorsqu'un mot contient un @ (voir Compl`etement dans
READLINE plus haut). Cette option est activee par
defaut.
huponexit
Si existante, bash enverra un signal SIGHUP a toutes les
taches lorsqu'un interpreteur de connexion interactif
termine.
interactive_comments
Si existante, un mot commencant par un # conduira ce mot
et tous les autres caracteres restants de la ligne a
etre ignores dans un interpreteur interactif (voir
COMMENTAIRES plus haut). Cette option est activee par
defaut.
lithist Si existante et si l'option cmdhist est activee, les
commandes multilignes sont sauvegardees dans
l'historique avec des sauts de ligne incorpores comme
separateurs plutot que des points-virgules la ou c'est
possible.
login_shell
L'interpreteur cree cette option s'il est demarre en
tant qu'interpreteur de connexion (voir APPEL plus
haut). La valeur ne peut etre modifiee.
mailwarn
Si existante et s'il a ete accede a un fichier que bash
surveille pour les courriers depuis sa derniere
verification, le message << Le courrier dans
fichier_de_courrier a ete lu. >> est affiche.
no_empty_cmd_completion
Si existante et si readline est utilisee, bash
n'essaiera pas d'utiliser le PATH pour de possibles
completements quand le completement est tente sur une
ligne vide.
nocaseglob
Si existante, bash fait correspondre les noms de
fichiers d'une facon insensible a la casse lors du
developpement des chemins (voir D'eveloppement des
chemins plus haut).
nocasematch
Si existante, bash fait correspondre les motifs d'une
facon insensible a la casse lors de la mise en
correspondance pendant l'execution des commandes
conditionnelles case ou [[.
nullglob
Si existante, bash autorise les motifs ne correspondant
a aucun fichier (voir D'eveloppement des chemins plus
haut) a se developper en une chaine vide plutot qu'en
une valeur litterale.
progcomp
Si existante, les outils de completement programmables
(voir Compl`etement programmable plus haut) sont actives.
Cette option est activee par defaut.
promptvars
Si existante, les chaines d'invite sont sujettes au
developpement des parametres, a la substitution de
commande, au developpement arithmetique et a la
suppression des protections apres avoir ete developpees
comme decrit plus haut dans INVITES. Cette option est
activee par defaut.
restricted_shell
L'interpreteur cree cette option s'il est demarre en
mode restreint (voir INTERPR'ETEUR RESTREINT plus bas).
Cette valeur ne peut pas etre changee. Elle n'est pas
reinitialisee lorsque les fichiers de demarrage sont
executes, ce qui permet a ces fichiers de decouvrir si
un interpreteur est restreint ou non.
shift_verbose
Si existante, la commande interne shift affiche un
message d'erreur lorsque le nombre de decalages depasse
le nombre de parametres positionnels.
sourcepath
Si existante, la commande interne source (.) utilise la
valeur de la variable PATH pour trouver le repertoire
contenant le fichier fourni en argument. Cette option
est activee par defaut.
xpg_echo
Si existante, la commande interne echo developpe par
defaut les suites de caracteres d'echappement par
contre-oblique.
suspend [-f]
Suspend l'execution de l'interpreteur jusqu'a la reception d'un
signal SIGCONT. Un interpreteur de connexion ne peut pas etre
suspendu ; l'option -f permet de surpasser ce comportement et
force sa suspension. L'etat renvoye est 0, sauf si
l'interpreteur est un interpreteur de connexion et que l'option
-f est absente, ou si le controle des taches n'est pas active.
test expr
[ expr ]
Renvoie un etat de 0 ou 1 selon l'evaluation de la condition
expr. Chaque operateur et operande doit etre represente par un
argument distinct. Les conditions sont composees des primitives
decrites plus haut dans CONDITIONS. test n'accepte aucune
option, n'accepte pas non plus et ignore l'argument --
signifiant la fin des options.
Les conditions peuvent etre combinees avec les operateurs
suivant, decrits par ordre de priorite decroissante.
L'evaluation depend du nombre d'arguments, voir plus bas.
! expr Vrai si expr est fausse.
( expr )
Renvoie la valeur de expr. Peut servir a surpasser la
priorite normale des operateurs.
expr1 -a expr2
Vrai si expr1 et expr2 sont toutes deux vraies.
expr1 -o expr2
Vrai si expr1 ou expr2 est vraie.
test et [ evaluent les conditions en fonction d'un jeu de regles
dependant du nombre d'arguments.
0 argument
La condition est fausse.
1 argument
La condition est vraie si et seulement si l'argument
n'est pas vide.
2 arguments
Si le premier argument est !, la condition est vraie si
et seulement si le second argument est vide. Si le
premier argument est l'un des operateurs conditionnel
unaires decrits plus haut dans CONDITIONS la condition
est vraie si le test unaire est vrai. Si le premier
argument n'est pas un operateur conditionnel unaire
correct, la condition est fausse.
3 arguments
Si le second argument est l'un des operateurs
conditionnels binaires decrits plus haut dans CONDITIONS,
le resultat de la condition est le resultat du test
binaire utilisant le premier et le troisieme argument en
tant qu'operandes. Les operateurs -a et -o sont
consideres comme des operateurs binaires quand ils sont
avec trois arguments. Si le premier argument est !, la
valeur est la negation du test binaire utilisant les
deuxieme et troisieme arguments. Si le premier argument
est exactement ( et le troisieme argument est exactement
), le resultat est le test unaire du second argument.
Sinon la condition est fausse.
4 arguments
Si le premier argument est !, le resultat est la negation
de la condition a trois arguments composee des arguments
restants. Sinon la condition est analysee et evaluee
selon les regles de priorite decrites ci-dessus.
5 arguments ou plus
La condition est analysee et evaluee selon les regles de
priorite decrites ci-dessus.
times Affiche les durees cumulees utilisateur et systeme pour
l'interpreteur et les processus lances par cet interpreteur.
L'etat renvoye est 0.
trap [-lp] [[argument] signal ...]
La commande argument doit etre lue et executee quand
l'interpreteur recoit au moins un signal. Si argument est absent
(et qu'un seul signal est fourni) ou -, chaque signal indique
est reinitialise a sa position d'origine (la valeur qu'il avait
lors de l'entree dans l'interpreteur). Si argument est la chaine
vide, chaque signal indique est ignore par l'interpreteur et par
les commandes qu'il appelle. Si argument n'est pas present et
que -p est fourni, les commandes capturees associees a chaque
signal sont affichees. Si aucun argument n'est fourni, ou si
seul -p est donne, trap affiche la liste des commandes associees
a chaque signal. L'option -l conduit l'interpreteur a afficher
une liste des noms de signal et leur numero correspondant.
Chaque signal est soit un nom de signal defini dans <signal.h>,
soit un numero de signal. Les noms de signal sont insensibles la
casse et le prefixe SIG est optionnel.
Si un signal est EXIT (0), la commande argument est executee
lors de la sortie de l'interpreteur. Si un signal est DEBUG, la
commande argument est executee avant toute commande simple,
commande for, commande case, commande select, toute commande for
arithmetique, et avant que la premiere commande n'execute une
fonction de l'interpreteur (voir GRAMMAIRE DE L'INTERPR'ETEUR
plus haut). Reportez-vous a la description de l'option extdebug
de la commande interne shopt pour obtenir des renseignements sur
les effets de la capture DEBUG. Si un signal est RETURN, la
commande argument est executee a chaque fois qu'une fonction de
l'interpreteur, ou un script execute avec les commandes internes
. ou source, termine son execution.
Si un signal est ERR, la commande argument est executee chaque
fois qu'une commande simple renvoie un etat final different de
zero, sujet aux conditions suivantes. La capture ERR n'est pas
executee si la commande echouee fait partie d'une liste de
commandes immediatement suivie par un mot-clef while ou until,
d'un test if, d'une commande executee au sein d'une liste de &&
ou de ||, ou si la valeur renvoyee par la commande est inversee
par !. Se sont les memes conditions que celles observees par
l'option errexit.
Les signaux ignores en entrant dans l'interpreteur ne peuvent
etre captures ou reinitialises. Les signaux captures qui ne sont
pas ignores sont reinitialises a leur valeur d'origine dans un
sous-interpreteur ou un environnement de sous-interpreteur quand
il est cree. L'etat renvoye est faux si un signal n'est pas
valable, sinon trap renvoie vrai.
type [-aftpP] nom [nom ...]
Sans option, indique comment chaque nom doit etre interprete si
on l'utilise en nom de commande. Si l'attribut -t est utilise,
type affiche une des phrases suivantes alias, keyword, function,
builtin ou file selon que le nom est un alias, un mot-cle
reserve de l'interpreteur, une fonction, une commande interne ou
un fichier sur le disque. Si le nom n'est pas trouve, rien n'est
affiche et un etat final a faux est renvoye. Si l'option -p est
utilisee, type renvoie le nom du fichier qui sera execute si
l'on tape le nom en guise de commande ou rien si ``type -t
name'' ne renvoyait pas file. L'option -P force une recherche
dans PATH pour chaque nom, meme si ``type -t name'' ne renvoyait
pas file. Si une commande est disponible dans la table de
hachage, -p et -P affichent la valeur de cette table, qui n'est
pas necessairement le fichier apparaissant en premier dans PATH.
Si l'option -a est appelee, type affiche tous les emplacements
contenant un executable du nom indique. Ceci inclut les alias et
les fonctions, sauf si l'option -p est egalement presente. La
table de hachage des commandes n'est pas consultee avec l'option
-a. L'option -f supprime la fonction de l'interpreteur de
consultation de table, comme avec la commande interne command.
type renvoie vrai si tous les arguments sont trouves et faux si
aucun n'a pas ete trouve.
ulimit [-HSTabcdefilmnpqrstuvx [limitation]]
Fournit, sur les systemes qui le permettent, un mecanisme de
controle des ressources disponibles pour l'interpreteur et pour
les processus qu'il lance. Les options -H et -S indiquent si la
limitation est stricte (<< hard >>) ou flexible (<< soft >>)
pour la ressource indiquee. Une limitation stricte ne peut pas
etre augmentee par un utilisateur non privilegie une fois
qu'elle a ete configuree ; une limitation flexible peut etre
augmentee jusqu'a la valeur de la limitation stricte
correspondante. Si ni -H ni -S n'est indique, les limitations
strictes et flexibles sont toutes deux configurees. La valeur de
la limitation peut etre un nombre (utilisant les unites
particulieres de la ressource) ou l'une des valeurs speciales
hard, soft ou unlimited, qui signifient, respectivement, la
limitation stricte courante, la limitation flexible courante et
l'absence de limitation. Si la limitation est omise, la valeur
courante de la limitation flexible pour la ressource est
affichee, a moins que l'option -H soit indiquee. Quand plusieurs
ressources sont indiquees, les noms des limitations et leurs
unites sont affiches avant les valeurs. Les autres options sont
interpretees comme suit :
-a Toutes les limitations courantes sont signalees
-b La taille maximum du tampon de << socket >>
-c La taille maximum des fichiers core crees
-d La taille maximum du segment de donnees d'un processus
-e La priorite d'ordonnancement maximum (<< nice >>)
-f La taille maximum d'un fichier ecrit par l'interpreteur
et ses fils
-i Le nombre maximum de signaux en attente
-l La taille maximum qui peut etre verrouillee en memoire
-m La taille maximum de la partie residente d'un processus
(<< resident set size >> ou RSS, la plupart des systemes
ne respectent pas cette limite)
-n Le nombre maximum de descripteurs de fichiers ouverts (la
plupart des systemes ne permettent pas de modifier cette
valeur)
-p La taille d'un tube en blocs de 512 octets (parfois
inexistante)
-q Le nombre maximum d'octets dans les files de messages
POSIX
-r La priorite d'ordonnancement temps-reel maximale
-s La taille maximum de la pile
-t La duree maximum, en seconde, de temps CPU accorde a un
processus
-u Le nombre maximum de processus autorises pour un seul
utilisateur
-v La quantite de memoire virtuelle disponible pour
l'interpreteur
-x Le nombre maximum de verrous de fichiers
-T Le nombre maximum de processus legers (<< threads >>)
Si une limitation est indiquee, elle sera la nouvelle valeur
pour la ressource indiquee (l'option -a correspond a l'affichage
seul). Si aucune option n'est indiquee alors -f est supposee.
Les valeurs s'expriment par pas de 1024 octets, sauf pour -t qui
est en secondes, -p, qui utilise des unites de blocs de 512
octets, ainsi que -T, -b, -n et -u, qui n'ont pas d'unites.
L'etat renvoye est 0, sauf si une option ou un argument
incorrect a ete fourni ou si une erreur se produit en
configurant la nouvelle limitation.
umask [-p] [-S] [mode]
Le masque de creation de fichier de l'utilisateur est configure
a mode. Si mode commence par un chiffre, il est interprete comme
un nombre octal, sinon il est considere comme un masque
symbolique, semblable a ceux acceptes par chmod(1). Si mode est
omis ou si l'option -S est fournie, la valeur courante du masque
est affichee. L'option -S conduit a l'affichage du masque sous
forme symbolique, l'affichage par defaut etant en octal. Si
l'option -p est fournie et si le mode est omis, la sortie a lieu
dans un format reutilisable en entree. L'etat renvoye est 0 si
le mode a pu etre change correctement ou si aucun argument mode
n'a ete fourni, et faux sinon.
unalias [-a] [nom ...]
Supprime le nom de la liste des alias definis. Si l'option -a
est fournie, toutes les definitions d'alias sont supprimees. La
valeur renvoyee est vrai, sauf si un nom fourni n'est pas un
alias defini.
unset [-fv] [nom ...]
Pour chaque nom indique, supprime la variable ou la fonction
correspondante. Si aucune option n'est fournie ou si l'option -v
est indiquee, chaque nom se rapporte a une variable de
l'interpreteur. Les variables en lecture seule ne peuvent pas
etre detruites. Si l'option -f est indiquee, chaque nom se
rapporte a une fonction de l'interpreteur et la definition de la
fonction est supprimee. Chaque variable ou fonction detruite est
supprimee de l'environnement transmis aux commandes ulterieures.
Si l'une des variables COMP_WORDBREAKS, RANDOM, SECONDS, LINENO,
HISTCMD, FUNCNAME, GROUPS ou DIRSTACK est detruite, elle perd
ses proprietes specifiques, meme s'il elle est recreee
ulterieurement. L'etat final est vrai sauf si un des noms est en
lecture seule.
wait [n ...]
Attend que chaque processus indique termine et renvoie son etat
final. Chaque n peut etre un PID ou une specification de tache ;
si une specification de tache est indiquee, la fin de tous les
processus de la conduite de cette tache sera attendue. Si n est
omis, la fin de tous les processus enfants actuellement actifs
sera attendue et l'etat renvoye est zero. Si n indique un
processus ou une tache inexistants, l'etat renvoye est 127.
Sinon, l'etat renvoye est l'etat final du dernier processus ou
tache attendu.
INTERPR'ETEUR RESTREINT
Si bash demarre sous le nom rbash ou si l'option -r est fournie lors de
son appel, l'interpreteur devient restreint. Un interpreteur restreint
permet de creer un environnement plus controle qu'un interpreteur
standard. Il se comporte de meme facon que bash a la difference des
actions suivantes qui sont interdites ou non effectuees :
o changer de repertoire avec cd ;
o creer ou detruire les valeurs de SHELL, PATH, ENV ou BASH_ENV ;
o indiquer des noms de commandes contenant un / ;
o indiquer un nom de fichier contenant un / comme argument de la
commande interne . ;
o indiquer un nom de fichier contenant une barre oblique comme
argument de l'option -p de la commande interne hash ;
o importer une definition de fonction dans l'environnement au
demarrage ;
o analyser les valeurs de SHELLOPTS au demarrage ;
o rediriger la sortie en utilisant les operateurs de redirection
>, >|, <>, >&, &> et >> ;
o utiliser la commande interne exec pour remplacer l'interpreteur
par une autre commande ;
o ajouter ou supprimer des commandes internes avec les options -f
et -d de la commande interne enable ;
o utiliser la commande interne enable pour activer les commandes
internes de l'interpreteur desactivees ;
o indiquer l'option -p a la commande interne commande ;
o supprimer le mode restreint avec set +r ou set +o restricted.
Ces restrictions sont mises en place apres la lecture de n'importe quel
fichier de demarrage.
When a command that is found to be a shell script is executed (see
COMMAND EXECUTION above), rbash supprime toute restriction dans
l'interpreteur cree pour executer le script.
VOIR AUSSI
Manuel de r'ef'erence de Bash, Brian Fox et Chet Ramey
The GNU Readline Library, Brian Fox et Chet Ramey
The GNU History Library, Brian Fox et Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell and
Utilities, IEEE
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)
FICHIERS
/bin/bash
L'executable bash
/etc/profile
Le fichier d'initialisation commun a tout le systeme, execute
pour les interpreteurs de commandes de connexion
/etc/bash.bashrc
Le fichier de demarrage commun a tout le systeme pour chacun des
interpreteurs interactifs
/etc/bash.bash.logout
Le fichier de nettoyage des interpreteurs de connexion commun a
tout le systeme, execute lorsqu'un interpreteur de connexion
termine
~/.bash_profile
Le fichier d'initialisation personnel execute pour les
interpreteurs de commandes de connexion
~/.bashrc
Le fichier de demarrage personnel, pour chacun des interpreteurs
interactifs
~/.bash_logout
Le fichier de nettoyage personnel des interpreteurs de commandes
de connexion, execute lorsqu'un interpreteur de commandes de
connexion termine
~/.inputrc
Le fichier d'initialisation personnalisee de readline
AUTEURS
Brian Fox, Free Software Foundation
bfox@gnu.org
Chet Ramey, Case Western Reserve University
chet.ramey@case.edu
SIGNALEMENTS D'ANOMALIES
Si vous trouvez une anomalie dans bash, vous devriez la signaler. Tout
d'abord vous devez vous assurer qu'il s'agit reellement d'une anomalie
et qu'elle apparait bien dans la derniere version de bash disponible.
La derniere version est toujours disponible a partir de
ftp://ftp.gnu.org/pub/bash/.
Une fois que vous avez determine qu'une anomalie existe effectivement,
utilisez la commande bashbug pour envoyer un signalement d'anomalie. Si
vous avez un correctif, vous etes encourage a l'envoyer en meme temps !
Les suggestions ou les signalements d'anomalies de nature
<< philosophique >> peuvent etre envoyes (en anglais) a
bug-bash@gnu.org ou postes dans le groupe Usenet gnu.bash.bug.
TOUS les signalements d'anomalie doivent contenir :
Le numero de version de bash
Le materiel et le systeme d'exploitation utilises
Le compilateur utilise pour compiler
Une description (en anglais) de l'anomalie
Un petit script ou une << recette >> qui demontre l'anomalie
bashbug insere automatiquement les trois premiers elements de cette
liste dans le formulaire qu'il fournit pour remplir un signalement
d'anomalie.
Les commentaires et signalement d'anomalies concernant la version
originale de cette page de manuel (en anglais) doivent etre transmis a
chet@po.cwru.edu. Ceux concernant cette version francaise peuvent etre
envoyes a debian-l10n-french@lists.debian.org.
ANOMALIES
Cet interpreteur de commandes est trop gros et trop lent.
Il y a quelques differences subtiles de comportement entre bash et les
versions traditionnelles de sh, principalement a cause des
specifications POSIX.
L'utilisation des alias peut avoir des consequences inattendues.
Les commandes internes et les fonctions de l'interpreteur ne peuvent
pas etre suspendues/relancees.
Les commandes composees et les suites de commandes de la forme
<< a ; b ; c >> ne sont pas gerees elegamment lors d'une interruption
de processus. En cas de suspension d'un processus, l'interpreteur
execute immediatement la commande suivante. Il suffit de placer cette
suite de commandes entre parentheses pour la forcer a creer un
sous-interpreteur, qui, lui, pourra etre suspendu en bloc.
Les variables de type tableau ne peuvent pas (encore) etre exportees.
Il ne peut exister qu'un seul coprocessus actif a la fois.
TRADUCTION
Ce document est une traduction realisee par Christophe Blaess et
Thierry Vignaud en 1997, et mise a jour par Alain Portal <aportal AT
univ-montp2 DOT fr> en 2006.
La version presente dans Debian a ete entierement retravaillee par
Frederic Lehobey <Frederic AT Lehobey DOT net> et est dorenavant
maintenue par David Prevot david@tilapin.org et les membres de la liste
debian-l10n-french@lists.debian.org.
Veuillez signaler toute erreur de traduction par un rapport de bogue
sur le paquet manpages-fr-extra.
GNU Bash-4.1 29 decembre 2009 BASH(1)