BASH
Table des matières
Retour à l'index
NOM
bash - Interpréteur de commandes GNU Bourne-Again SHell
SYNOPSIS
bash [options] [chaîne_de_commande | fichier]
COPYRIGHT
Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc.
DESCRIPTION
Bash est un interpréteur de commandes (shell) compatible sh qui
exécute les commandes lues depuis l'entrée standard ou depuis un
fichier. Bash inclut aussi des fonctionnalités utiles des interpréteurs
de commandes Korn et C (ksh et csh).
Bash vise à être une implémentation conforme à la partie relative aux
interpréteurs de commandes et utilitaires des spécifications IEEE POSIX
(norme IEEE 1003.1). Bash peut être configuré pour être conforme à la
norme POSIX par défaut.
OPTIONS
Toutes les options d'interpréteur monocaractères documentées dans la
description de la commande interne set, y compris -o, peuvent être
utilisées comme options si l'interpréteur est invoqué. De plus, bash
accepte les options suivantes lors de son appel :
- -c
-
Si l'option -c est présente, les commandes sont lues depuis le premier
argument chaîne_de_commande qui n’est pas une option. Si des arguments
suivent la chaîne_de_commande, le premier argument est assigné à $0 et
tous les autres sont affectés aux paramètres positionnels. Le nom de
l'interpréteur, utilisé pour les messages d'avertissement et d'erreur, est
fixé par l'assignation à $0.
- -i
-
Si l'option -i est présente, l'interpréteur est interactif.
- -l
-
Faire que bash se comporte comme s'il avait été appelé comme interpréteur
de commandes de connexion (consultez
APPEL ci-dessous).
- -r
-
Si l'option -r est présente, l'interpréteur devient restreint
(consultez
INTERPRÉTEUR RESTREINT ci-dessous).
- -s
-
Si l'option -s est présente ou s'il ne reste plus d'argument après le
traitement des options, alors les commandes sont lues depuis l'entrée
standard. Cette option permet d'affecter les paramètres positionnels lors de
l'appel d'un interpréteur interactif ou de la lecture de l'entrée à travers
un tube.
- -v
-
Afficher les lignes en entrée de l'interpréteur lorsqu'elles sont lues.
- -x
-
Afficher les commandes et leurs arguments à mesure qu'elles sont exécutées.
- -D
-
Une liste de toutes les chaînes entre guillemets doubles précédées de $
est affichée sur la sortie standard. Ce sont les chaînes qui sont soumises à
une traduction quand le paramètre linguistique régional n'est ni C ni
POSIX. Cela implique l'option -n ; aucune commande ne sera exécutée.
- [-+]O [option_shopt]
-
option_shopt est une des options de l'interpréteur acceptées par la
commande interne shopt (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Si option_shopt est présente, -O crée
cette option ; +O la détruit. Si option_shopt n'est pas fournie, les
noms et valeurs des options de l'interpréteur acceptées par shopt sont
affichés sur la sortie standard. Si l'option d'appel est +O, la sortie
est affichée dans un format réutilisable en entrée.
- --
-
Deux caractères -- indiquent la fin des options et désactivent le
traitement des arguments. Tous les arguments après le -- sont traités
comme des noms de fichiers et paramètres. - est équivalent à --.
Bash reconnaît également plusieurs options multicaractères. Ces options
doivent, pour être reconnues, apparaître sur la ligne de commande avant les
options monocaractères.
- --debugger
-
Prend les dispositions pour que le paramétrage du traçage soit exécuté avant
que l'interpréteur démarre. Enclenche le mode de traçage étendu (consultez
ci-dessous la description de l'option extdebug de la commande interne
shopt).
- --dump-po-strings
-
Équivalent à -D, mais la sortie est dans le format des fichiers po
(objets portables) de l'outil GNU gettext.
- --dump-strings
-
Équivalent à -D.
- --help
-
Affiche un message d'aide sur la sortie standard et termine avec succès.
- --init-file fichier
-
- --rcfile fichier
-
Exécuter les commandes contenues dans fichier plutôt que celles du
fichier d'initialisation commun à tout le système /etc/bash.bashrc et que
le fichier d'initialisation personnel standard ~/.bashrc si
l'interpréteur est interactif (consultez
APPEL ci-dessous).
- --login
-
Équivalent à -l.
- --noediting
-
Ne pas utiliser la bibliothèque GNU readline pour lire les lignes de
commande, lorsque l'interpréteur est interactif.
- --noprofile
-
Ne lire ni le fichier d'initialisation commun à tout le système
/etc/profile
ni les fichiers personnels d'initialisation ~/.bash_profile,
~/.bash_login ou ~/.profile. Par défaut, bash lit ces fichiers
lorsqu'il est appelé comme interpréteur de commandes de connexion (consultez
APPEL ci-dessous).
- --norc
-
Ne pas lire ou exécuter le fichier de configuration commun à tout le système
/etc/bash.bashrc, ni le fichier personnel d'initialisation ~/.bashrc
lorsque l'interpréteur est interactif. Cette option est activée par défaut
si l'interpréteur est appelé sous le nom sh.
- --posix
-
Aligner le comportement de bash sur la norme (mode POSIX), en ce qui
concerne les options dont l'action par défaut diffère de la norme POSIX. La
section
VOIR AUSSI ci-dessous référence un document précisant la
façon dont le mode POSIX affecte le comportement de bash.
- --restricted
-
L'interpréteur devient restreint (consultez
INTERPRÉTEUR RESTREINT
ci-dessous).
- --verbose
-
Équivalent à -v.
- --version
-
Affiche le numéro de version de bash sur la sortie standard et termine
avec succès.
ARGUMENTS
S'il reste des arguments sur la ligne de commande après traitement des
options et que ni l'option -c, ni l'option -s n'ont été fournies, le
premier argument est supposé être le nom du fichier dans lequel lire les
commandes d'interpréteur. Si bash est appelé de cette façon, le nom du
fichier est affecté à $0 et les arguments restants aux autres paramètres
positionnels. Bash lit et exécute les commandes depuis ce fichier, puis
termine. L'état final de bash est l'état final de la dernière commande
exécutée dans le script. Si aucune commande n'a été exécutée, l'état final
est 0. Une tentative est d'abord faite de trouver le fichier dans le
répertoire actuel et, si aucun fichier n'est trouvé, l'interpréteur cherche
le script dans les répertoires contenus dans
PATH.
APPEL
Un interpréteur de commandes est dit de connexion (login shell) si le
premier caractère de son argument numéro zéro est un - ou s'il est appelé
avec l'option --login.
Un interpréteur est interactif s'il est appelé sans argument autre que
des options (à moins que l'option -s soit spécifiée) et sans l'option
-c, dont l'entrée standard et la sortie d'erreur sont toutes deux
connectées à des terminaux (comme déterminé par la fonction isatty(3)),
ou s'il est appelé avec l'option -i.
PS1 est créée et $-
contient la lettre i si bash est interactif, ce qui permet à un script
ou à un fichier d’initialisation de tester cet état.
Le paragraphe suivant décrit comment bash exécute ses fichiers
d'initialisation. Si un de ces fichiers existe mais n'est pas accessible en
lecture, bash signale une erreur. Les tildes sont remplacés par des noms
de fichiers comme décrit ci-dessous dans Développement du tilde dans le
paragraphe
DÉVELOPPEMENTS.
Lorsque bash est lancé comme interpréteur de commandes de connexion
interactif ou comme interpréteur non interactif avec l'option --login, il
lit et exécute tout d'abord les commandes se trouvant dans le fichier
/etc/profile si ce fichier existe. Après lecture de ce fichier, il
recherche ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet
ordre, puis lit et exécute les commandes se trouvant dans le premier fichier
existant et accessible en lecture. L'option --noprofile peut être
utilisée à l'appel de l'interpréteur pour empêcher ce comportement.
Lorsqu'un interpréteur de commandes de connexion interactif termine, ou
qu'un interpréteur de commandes de connexion non interactif exécute la
commande interne exit, bash lit et exécute les commandes du fichier
~/.bash_logout, s'il existe.
Quand un interpréteur interactif démarre sans être un interpréteur de
commandes de connexion, bash lit et exécute les commandes se trouvant
dans /etc/bash.bashrc et ~/.bashrc s'ils existent. Ce comportement
peut être empêché à l'aide de l'option --norc. L'option --rcfile
fichier forcera bash à lire et exécuter les commandes dans fichier
plutôt que dans /etc/bash.bashrc et ~/.bashrc.
Quand bash est démarré de façon non interactive, par exemple pour lancer
un script, il consulte la variable
BASH_ENV dans l'environnement,
développe son contenu si elle existe et considère cette valeur comme le nom
d'un fichier à lire et exécuter. Bash se comporte comme si la commande
suivante était exécutée :
-
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
mais la valeur de la variable
PATH n'est pas utilisée pour
rechercher le fichier.
Si bash est appelé sous le nom sh, il essaye d'imiter le comportement
de démarrage des versions historiques de sh aussi fidèlement que
possible, tout en restant conforme à la norme POSIX. Lorsqu'il est appelé
comme interpréteur de commandes de connexion interactif ou non interactif
avec l'option --login, il essaye d'abord de lire et exécuter, dans cet
ordre, les commandes de /etc/profile puis de ~/.profile. L'option
--noprofile peut être utilisée pour empêcher ce comportement. Quand il
est appelé en tant qu'interpréteur interactif sous le nom sh, bash
consulte la variable
ENV, développe sa valeur si elle est définie
et utilise le résultat en tant que nom de fichier à lire et exécuter. Comme
un interpréteur appelé sous le nom sh n'essaye ni de lire, ni d'exécuter
des commandes d'un autre fichier de démarrage, l'option --rcfile n'a
aucun effet. Un interpréteur non interactif appelé sous le nom sh
n'essaie de lire aucun autre fichier d'initialisation. Quand il est appelé
sous le nom sh, bash entre en mode POSIX après avoir lu les
fichiers d'initialisation.
Quand bash est appelé en mode POSIX comme avec l'option --posix sur
la ligne de commande, il suit la norme POSIX pour les fichiers de
démarrage. Dans ce mode, les interpréteurs interactifs développent la
variable
ENV et les commandes sont lues et exécutées à partir du
fichier dont le nom est la valeur développée. Aucun autre fichier
d'initialisation n'est lu.
Bash tente de déterminer s'il est exécuté avec son entrée standard reliée
à une connexion réseau, comme quand il est exécuté par le démon lançant les
interpréteurs de commandes à distance historiques, généralement rshd, ou
le démon d'interpréteur sécurisé sshd. Si bash conclut qu'il est
exécuté de façon non interactive de cette manière, il lit et exécute 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 appelé
sous le nom sh. L'option --norc peut être utilisée pour empêcher ce
comportement et l'option --rcfile peut être utilisée pour forcer la
lecture d'un autre fichier, mais rshd et sshd n'appellent généralement
pas l'interpréteur avec ces options et ne permettent pas de les indiquer.
Si l'interpréteur est lancé avec un identifiant (de groupe) d'utilisateur
effectif différent de l'identifiant (de groupe) d'utilisateur réel et si
l'option -p n'est pas fournie, aucun fichier d'initialisation n'est lu,
les fonctions de l'interpréteur ne sont pas importées depuis
l'environnement, les variables
SHELLOPTS,
BASHOPTS,
CDPATH, et
GLOBIGNORE, si présentes dans
l'environnement, sont ignorées, et l'identifiant de l'utilisateur effectif
est configuré à celui de l'utilisateur réel. Si l'option -p est fournie à
l'appel, le comportement au démarrage est le même mais l'identifiant
d'utilisateur effectif n'est pas modifié.
DÉFINITIONS
Les définitions suivantes sont utilisées dans toute la suite ce document.
- blanc
-
Une espace ou une tabulation.
- mot
-
Une suite de caractères considérée comme une unité élémentaire par
l'interpréteur. On parle également de lexème (« token »).
- nom
-
Un mot ne contenant que des caractères alphanumériques et des tirets bas
(« underscore »), commençant par une lettre ou un tiret bas. On s'y réfère
également sous le terme identificateur.
- métacaractère
-
Un caractère qui, non protégé, sépare les mots. Un de ceux-ci :
-
| & ; ( ) < > space tab newline
- opérateur de contrôle
-
Un lexème ayant une fonction de contrôle. C'est l'un des symboles
suivants :
-
|| & && ; ;; ;& ;;& ( ) | |& <newline>
MOTS RÉSERVÉS
Les mots réservés sont des mots qui ont une signification spéciale pour
l'interpréteur. Les mots suivants sont reconnus comme réservés lorsqu'ils ne
sont pas protégés et sont soit le premier mot d'une commande (consultez
GRAMMAIRE DE L'INTERPRÉTEUR ci-dessous), le troisième mot d'une
commande case ou select (seul in est valable), ou le troisième mot
d'une commande for (seuls in et do sont valables) :
! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]
GRAMMAIRE DE L'INTERPRÉTEUR
Cette partie décrit la syntaxe des différentes formes de commande de
l'interpréteur.
Commandes simples
Une commande simple est une suite d'affectations facultatives de
variables, suivie de mots séparés par des blancs et de redirections, et
terminée par un opérateur de contrôle. Le premier mot indique la commande
à exécuter et est passé comme argument zéro. Les mots restants sont transmis
comme arguments à la commande appelée.
La valeur renvoyée par une commande simple est son état final ou
128+n si la commande a été terminée par le signal n.
Pipelines
Un pipeline est une suite d'une ou plusieurs commandes séparées par un
des opérateurs de contrôle | ou |&. Le format d'un pipeline est :
-
[time [-p]] [!] commande_1 [ [|||&] commande_2 ... ]
La sortie standard de la commande_1 est connectée par un tube à l'entrée
standard de la commande_2. Cette connexion est effectuée avant toute
redirection indiquée par la commande_1 (consultez
REDIRECTIONS
ci-dessous). Si |& est utilisé, la sortie d'erreur standard de la
commande_1, en plus de sa sortie standard, est connectée à l'entrée
standard de la commande_2 dans le tube ; c'est un raccourci pour
2>&1 |. Cette redirection implicite de la sortie d'erreur standard
vers la sortie standard est réalisée après toute redirection précisée par la
commande_1.
L'état renvoyé par un pipeline est l'état final de la dernière commande, à
moins que l'option pipefail soit activée. Si pipefail est activée,
l'état renvoyé par le pipeline est la valeur de la dernière commande (la
plus à droite) à terminer avec un état différent de zéro ou zéro si toutes
les commandes se terminent avec succès. Si le mot réservé ! précède un
pipeline, l'état final de ce pipeline sera la négation logique de l'état
final tel que décrit ci-dessus. L'interpréteur attend que toutes les
commandes du pipeline soient terminées avant de renvoyer une valeur.
Si le mot réservé time précède un pipeline, les temps passés par le
programme en modes utilisateur et système sont indiqués quand le pipeline se
termine. L'option -p modifie le format de sortie pour celui indiqué par
POSIX. Quand l'interpréteur est en mode POSIX, il ne reconnaît pas
time comme un mot réservé si le lexème suivant commence par un « - ». La
variable
TIMEFORMAT peut contenir une chaîne de format indiquant
comment les informations de chronométrage doivent être affichées ; consultez
ci-dessous la description de
TIMEFORMAT dans Variables de l'interpréteur.
Quand l'interpréteur est en mode POSIX, time peut être suivi d'un
changement de ligne. Dans ce cas, l'interpréteur affiche le temps
utilisateur et système total consommé par l'interpréteur et ses enfants. La
variable
TIMEFORMAT peut être utilisée pour indiquer le format des
informations de temps.
Toute commande dans un pipeline multicommande, où les tubes sont créés, est
exécutée dans un sous-interpréteur qui est un processus séparé. Consultez
ENVIRONNEMENT D'EXÉCUTION DES COMMANDES pour une description des
sous-interpréteurs et d'un environnement de sous-interpréteur. Si l'option
lastpipe est activée en utilisant la commande interne shopt (consultez
la description de shopt ci-dessous), le dernier élément d'un pipeline
peut être exécuté par le processus de l'interpréteur quand le contrôle des
tâches est désactivé.
Listes
Une liste est une suite d'un ou plusieurs pipelines séparés par l'un des
opérateurs ;, &, && ou || et facultativement terminée par ;,
& ou <changement de ligne>.
Dans cette liste d'opérateurs, && et || ont une priorité identique,
suivis par ; et &, qui ont également une priorité identique.
Une suite d'un ou plusieurs changements de ligne peut apparaître dans une
liste à la place d'un point-virgule pour délimiter les commandes.
Si une commande se termine par l'opérateur de contrôle &, l'interpréteur
l'exécute en arrière-plan, dans un sous-interpréteur. L'interpréteur
n'attend pas que la commande se termine et l'état renvoyé est 0. Elles
sont désignées comme des commandes asynchrones. Les commandes séparées
par un ; sont exécutées successivement, l'interpréteur attend que chaque
commande se termine tour à tour. L'état renvoyé est l'état final de la
dernière commande exécutée.
Les listes ET et OU sont des suites d'un ou plusieurs pipelines séparés
respectivement par les opérateurs de contrôle && et ||. Les listes ET
et OU sont exécutées avec associativité à gauche. Une liste ET est de la
forme
-
commande_1 && commande_2
commande_2 est exécutée si, et seulement si, commande_1 renvoie zéro
comme état final (succès).
Une liste OU a la forme
-
commande_1 || commande_2
commande_2 est exécutée si, et seulement si, commande_1 renvoie un
état final différent de zéro. L'état renvoyé par des listes ET et OU est
l'état final de la dernière commande exécutée dans la liste.
Commandes composées
Une commande composée est l'une des constructions suivantes. Dans la
plupart des cas, une liste dans une description de commande pourrait être
séparée du reste de la commande par un ou plusieurs changements de ligne, et
pourrait être suivie d’un changement de ligne à la place d’un point-virgule.
- (liste)
-
liste est exécutée dans un sous-interpréteur (consultez
ENVIRONNEMENT D'EXÉCUTION DES COMMANDES ci-dessous pour une description
d'un environnement de sous-interpréteur). Les affectations de variables et
les commandes internes qui affectent l'environnement de l'interpréteur n'ont
pas d'effet une fois que la commande se termine. L'état renvoyé est l'état
final de la liste.
- { liste; }
-
liste est simplement exécutée avec l'environnement de l'interpréteur en
cours. liste doit se terminer par un changement de ligne ou un
point-virgule. Cette construction est connue sous le nom de commandes groupées. L'état renvoyé est l'état final de la liste. Remarquez que
contrairement aux métacaractères ( et ), { et } sont des mots réservés qui ne doivent apparaître que là où un mot réservé peut être
reconnu. Puisqu'ils ne conduiront pas à un découpage en mots, ils doivent
être séparés de la liste par un blanc ou un autre métacaractère de
l'interpréteur.
- ((expression))
-
L'expression est évaluée selon les règles décrites ci-dessous dans
ÉVALUATION ARITHMÉTIQUE. Si la valeur arithmétique de l'expression est
différente de zéro, l'état renvoyé est 0 ; sinon l'état renvoyé est
1. L'expression est sujette aux mêmes développements que si elle était
entre guillemets doubles, mais les caractères guillemet double dans
l'expression ne sont pas traités expressément et sont supprimés.
- [[ expression ]]
-
Renvoie un état de 0 ou 1 selon l'évaluation de la condition
expression. Les conditions sont composées de primitives décrites
ci-dessous dans
CONDITIONS. Les mots entre [[ et ]] ne sont
sujets ni au découpage en mots ni au développement des
chemins. L'interpréteur effectue le développement des tildes, des
paramètres, des variables, le développement arithmétique, la substitution de
commande et de processus, ainsi que la suppression des protections sur ces
mots (les développements qui se produiraient si les mots étaient entre
guillemets doubles). Les opérateurs conditionnels comme -f ne doivent pas
être protégés afin d'être reconnus comme primitives.
Lorsqu'ils sont utilisés avec [[, les opérateurs < et >
ordonnent d'un point de vue lexicographique en utilisant les paramètres
linguistiques régionaux actuels.
Consultez la description de la commande interne test (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous) pour la gestion des
paramètres (c'est-à-dire des paramètres manquants).
Quand les opérateurs == et != sont utilisés, la chaîne placée à droite
de l'opérateur est considérée comme étant un motif dont la correspondance
est recherchée selon les règles décrites ci-dessous dans Motifs génériques, comme si l’option extglob de l’interpréteur était
activée. L’opérateur = est équivalent à ==. Si l'option d'interpréteur
nocasematch est activée, la mise en correspondance est effectuée sans
tenir compte de la casse (différence majuscule/minuscule) des caractères
alphabétiques. La valeur renvoyée est 0 si les chaînes correspondent
(==) ou ne correspondent pas (!=), au motif et 1 sinon. Toute
partie du motif peut être protégée pour forcer la partie protégée à
correspondre en tant que chaîne.
Un opérateur binaire supplémentaire, =~, est disponible, avec la même
priorité que == et !=. Lorsqu'il est utilisé, la chaîne à droite de
l'opérateur est considérée comme une expression rationnelle étendue POSIX et
est mise en correspondance en conséquence (en utilisant habituellement les
interfaces POSIX regcomp et regexec comme avec regex(3)). La valeur
renvoyée est 0 si la chaîne correspond au motif et 1 si elle ne
correspond pas. Si l'expression rationnelle n'est pas syntaxiquement
correcte, la valeur renvoyée de l'expression conditionnelle est 2. Si
l'option d'interpréteur nocasematch est activée, la mise en
correspondance est effectuée sans tenir compte de la casse. Si une partie du
motif est protégée, cette partie est mise en correspondance
littéralement. Cela signifie que tout caractère dans la partie protégée doit
correspondre lui-même, plutôt que d'avoir tout motif particulier
correspondant ayant une signification. Si le motif est stocké dans une
variable de l’interpréteur, la protection de développement de variable force
le motif entier à correspondre littéralement. Traitez prudemment les
expressions entre crochets des expressions rationnelles, car les caractères
de protection et de motifs habituels perdent leur signification entre
crochets.
Le motif correspondra s'il correspond à n'importe quelle partie de la
chaîne. Ancrer le motif avec les opérateurs d'expression rationnelle ^ et
$ pour le forcer à correspondre à la totalité de la chaîne. La variable
tableau
BASH_REMATCH enregistre quelle partie de la chaîne
correspond au motif. L'élément de
BASH_REMATCH d'indice 0
contient la partie de la chaîne correspondant à la totalité de l'expression
rationnelle. Les sous-chaînes correspondant aux sous-expressions entre
parenthèses dans l'expression rationnelle sont sauvegardées avec les indices
restants de
BASH_REMATCH. L'élément de
BASH_REMATCH
d'indice n est la partie de la chaîne correspondant à la n-ième
sous-expression entre parenthèses. La configuration de
BASH_REMATCH par bash est de portée globale ; la déclarer comme une
variable locale mènera à des résultats inattendus.
Les expressions peuvent être combinées en utilisant les opérateurs suivants,
décrits par ordre de priorité décroissante :
-
- ( expression )
-
Renvoie la valeur de l'expression. Cela peut être utilisé pour surpasser
la priorité normale des opérateurs.
- ! 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 opérateurs && et || n'évaluent pas expression2 si la valeur de
expression1 suffit à déterminer la valeur renvoyée par la condition tout
entière.
- for nom [ [ in [ mot ... ] ] ; ] do liste ; done
-
La liste de mots suivant in est développée, produisant une liste
d'éléments. La variable nom prend tour à tour la valeur de chacun des
éléments et liste est exécutée à chaque fois. Si in mot est omis,
la commande for exécute la liste une fois pour chacun des paramètres
positionnels existants (consultez
PARAMÈTRES ci-dessous). L'état
renvoyé est l'état final de la dernière commande exécutée. Si le
développement des éléments suivant in conduit à une liste vide, aucune
commande n'est exécutée et l'état renvoyé est 0.
- for (( expr1 ; expr2 ; expr3 )) ; do liste ; done
-
L'expression arithmétique expr1 est d'abord évaluée selon les règles
décrites ci-dessous sous
ÉVALUATION ARITHMÉTIQUE. L'expression
arithmétique expr2 est ensuite évaluée répétitivement jusqu'à valoir
zéro. Chaque fois que expr2 est évaluée en une valeur différente de zéro,
liste est exécutée et l'expression arithmétique expr3 est évaluée. Si
l'une des expressions est omise, elle est considérée comme s'évaluant à
1. La valeur renvoyée est l'état final de la dernière commande dans
liste qui est exécutée ou faux si l'une des expressions est incorrecte.
- select nom [ in mot ] ; do liste ; done
-
La liste de mots à la suite de in est développée, produisant une liste
d'éléments et l'ensemble des mots développés est imprimé sur la sortie
d'erreur standard, chacun précédé par un nombre. Si in mot est omis,
les paramètres positionnels sont imprimés (consultez
PARAMÈTRES
ci-dessous). select affiche alors l'invite
PS3 et lit une ligne
depuis l'entrée standard. Si la ligne est constituée d'un nombre
correspondant à l'un des mots affichés, alors ce mot est affecté à la valeur
de la variable nom. Si la ligne est vide, les mots et l'invite sont
affichés à nouveau. Si une fin de fichier (EOF) est lue, la commande
select se termine et renvoie 1. Toute autre valeur lue force la
variable nom à être définie à NULL. La ligne lue est conservée dans la
variable
REPLY. La liste est exécutée après chaque sélection,
jusqu'à ce qu'une commande break soit atteinte. L'état final de select
est l'état final de la dernière commande exécutée dans la liste ou zéro
si aucune commande n'a été exécutée.
- case mot in [ [(] motif [ | motif ] ... ) liste ;; ] ... esac
-
Une commande case commence d'abord par développer le mot, puis essaye
de le mettre en correspondance tour à tour avec chacun des motifs en
utilisant les règles de mise en correspondance dans Motifs génériques
ci-dessous. Le mot est développé en utilisant le développement du tilde,
le développement des paramètres et des variables, le développement
arithmétique, la substitution de commande, la substitution de processus et
la suppression des protections. Chaque motif examiné est développé en
utilisant le développement du tilde, le développement des paramètres et des
variables, le développement arithmétique, la substitution de commande et la
substitution de processus et la suppression des protections. Si l'option
d'interpréteur nocasematch est activée, la mise en correspondance est
effectuée sans tenir compte de la casse des caractères alphabétiques. Quand
une correspondance est trouvée, la liste associée est exécutée. Dès qu'un
motif correct a été trouvé, il n'y a plus d'autre essai si l'opérateur ;;
est utilisé. Si ;& est utilisé au lieu de ;;, l'exécution continue
avec la liste associée au jeu de motifs suivant. Si ;;& est utilisé au
lieu de ;;, l'interpréteur essaye la liste de motifs suivante, si elle
existe, et exécute toute liste associée à un motif correspondant,
poursuivant l'exécution de la déclaration de cas comme si la liste de motifs
n'avait pas de correspondance. Le code de retour est zéro si aucun motif ne
correspond. Sinon il est le code de retour de la dernière commande exécutée
dans la liste.
- if liste; then liste; [ elif liste; then liste; ] ... [ else liste; ] fi
-
La liste du if est exécutée. Si son état final est zéro, la liste
du then est exécutée. Sinon, chacune des listes des elif est
exécutée tour à tour et si son état final est zéro, la liste du then
associé est exécutée et la commande se termine. Sinon, la liste du
else, si présente, est exécutée. L'état final est l'état final de la
dernière commande exécutée ou zéro si aucune condition n'a été satisfaite.
- while liste-1; do liste-2; done
-
- until liste-1; do liste-2; done
-
La commande while répète la liste liste-2 tant que la dernière
commande de la liste liste-1 renvoie un état final de zéro. La commande
until est identique à la commande while, sauf que le test est
inversé : la liste-2 est exécutée tant que la dernière commande de la
liste-1 renvoie un état final différent de zéro. L'état final des
commandes while et until est l'état final de la dernière commande
exécutée dans la liste-2 ou zéro si aucune commande n'a été exécutée.
Coprocessus
Un coprocessus est une commande d'interpréteur précédée par le mot
réservé coproc. Un coprocessus est exécuté de façon asynchrone dans un
sous-interpréteur, comme si la commande se terminait par l'opérateur de
contrôle &, avec un tube bidirectionnel établi entre l'interpréteur
d'exécution et le coprocessus.
La syntaxe d'un coprocessus est :
-
coproc [NOM] commande [redirections]
Cela crée un coprocessus nommé NOM. commande peut être une commande
simple ou une commande composée (voir plus haut). NOM est le nom d'une
variable de l'interpréteur. Si NOM n'est pas fourni, le nom par défaut
est COPROC.
Le format recommandé à utiliser pour un coprocessus est le suivant :
-
coproc [NOM] { commande [redirections]; }
Cette forme est recommandée parce que des commandes simples font que le
coprocessus est toujours appelé COPROC, et elle est plus simple à
utiliser et plus complète que les autres commandes composées.
Si commande est une commande composée, NOM est optionnel. Le mot
suivant coproc détermine si ce mot est interprété comme un nom de
variable : il est interprété comme NOM si ce n'est pas un mot réservé qui
introduit une commande composée. Si commande est une commande simple,
NOM n'est pas permis ; cela est destiné à éviter une confusion entre
NOM et le premier mot de la commande simple.
Quand le coprocessus est exécuté, l'interpréteur crée une variable tableau
(consultez Tableaux ci-dessous) appelée NOM dans le contexte de
l'interpréteur d'exécution. La sortie standard de commande est connectée
par un tube à un descripteur de fichier dans l'interpréteur d'exécution, et
ce descripteur de fichier est affecté à NOM[0]. L'entrée standard de
commande est connectée par un tube à un descripteur de fichier dans
l'interpréteur d'exécution, et ce descripteur de fichier est affecté à
NOM[1]. Ce tube est établi avant toute redirection indiquée par la
commande (consultez
REDIRECTIONS ci-dessous). Les descripteurs de
fichier peuvent être utilisés comme arguments aux commandes d'interpréteur
et redirections en utilisant les développements standards de mot. Les
descripteurs de fichier autres que ceux créés pour exécuter des
substitutions de commande et de processus, ne sont pas disponibles dans les
sous-interpréteurs.
L'identifiant du processus (PID) de l'interpréteur engendré pour exécuter le
coprocessus est la valeur disponible de la variable NOM_PID. La commande
interne wait peut être réutilisée pour attendre que le coprocessus soit
terminé.
Puisque le coprocessus est créé comme une commande asynchrone, la commande
coproc se termine toujours avec succès. L'état renvoyé d'un coprocessus
est l'état final de commande.
Définitions des fonctions de l'interpréteur
Une fonction de l'interpréteur est un objet qui est appelé comme une
commande simple et qui exécute une commande composée avec un nouveau jeu de
paramètres positionnels. Les fonctions de l'interpréteur sont déclarées de
la façon suivante :
- nomfonction () commande-composée [redirection]
-
- function nomfonction [()] commande-composée [redirection]
-
Cela définit une fonction possédant le nomfonction mentionné. Le mot
réservé function est facultatif. S'il est fourni, les parenthèses sont
facultatives. Le corps de la fonction est la commande composée
commande-composée (consultez Commandes composées ci-dessus). Cette
commande est généralement une liste de commandes entre { et }, mais peut
être n'importe quelle commande décrite dans Commandes composées
ci-dessus. Si le mot réservé function est utilisé, mais que les
parenthèses ne sont pas fournies, les accolades sont recommandées. La
commande-composée est exécutée chaque fois que nomfonction est indiqué
comme le nom d'une commande normale. En mode POSIX, nomfonction doit
un nom valable d'interpréteur et ne peut pas être le nom d’une des
commandes internes spéciales de POSIX (« special builtins »). En mode par
défaut, un nom de fonction peut être n'importe quel mot de l'interpréteur
non protégé qui ne contient pas de $. Toutes les redirections (consultez
REDIRECTIONS ci-dessous) indiquées lorsqu'une fonction est définie
sont effectuées lorsque la fonction est exécutée. Le code de retour d'une
définition de fonction est zéro, à moins qu'une erreur de syntaxe ne se
produise ou qu'une fonction en lecture seule n'existe déjà avec le même
nom. Lorsque la fonction est exécutée, le code de retour est celui de la
dernière commande exécutée dans le corps de la fonction (consultez
FONCTIONS ci-dessous).
COMMENTAIRES
Dans un interpréteur non interactif ou dans un interpréteur interactif avec
l'option interactive_comments activée par la commande interne shopt
(consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous), un
mot commençant par # conduit à ignorer ce mot et tous les caractères
restants sur la ligne. Un interpréteur interactif sans l'option
interactive_comments n'autorise pas les commentaires. L'option
interactive_comments est activée par défaut dans les interpréteurs
interactifs.
PROTECTIONS
Les protections (« quoting ») permettent de forcer l'interpréteur à
ignorer la signification spéciale de certains caractères ou mots. Les
protections peuvent être utilisées pour désactiver le traitement des
caractères spéciaux, éviter la reconnaissance des mots réservés ou empêcher
le développement des paramètres.
Tous les métacaractères décrits ci-dessus dans
DÉFINITIONS ont
des significations spéciales pour l'interpréteur et doivent être protégés
pour ne représenter que leur propre caractère.
Lorsque les outils de développement de l'historique des commandes sont
utilisés (consultez
DÉVELOPPEMENT DE L'HISTORIQUE ci-dessous), le
caractère de développement de l'historique, généralement !, doit être
protégé pour éviter le développement de l'historique.
Il y a trois mécanismes de protection : le caractère de protection, les
guillemets simples (« single quotes ») et les guillemets doubles (« double
quotes »).
Le caractère de protection est une contre-oblique (\) non
protégée. Il préserve la valeur littérale du caractère qui le suit, à
l'exception du <changement de ligne>. Si un couple
\<changement de ligne> apparaît et si la contre-oblique n'est
pas elle-même protégée, l'ensemble \<changement de ligne> est
considéré comme une continuation de ligne (c'est-à-dire qu'il est supprimé
du flux d'entrée et ignoré en pratique).
Encadrer des caractères entre des guillemets simples préserve la valeur
littérale de chacun des caractères entre guillemets simples. Un guillemet
simple ne peut pas être placé entre deux guillemets simples, même s'il est
précédé d'une contre-oblique.
Encadrer des caractères entre des guillemets doubles préserve la valeur
littérale de chacun des caractères sauf $, `, \ et, lorsque le
développement de l'historique est activé, !. Quand l'interpréteur et en
mode POSIX, le ! n'a pas de signification particulière entre des
guillemets doubles, même quand le développement de l'historique est
activé. Les caractères $ et ` conservent leurs significations
spéciales entre guillemets doubles. La contre-oblique ne conserve sa
signification spéciale que lorsqu'elle est suivie par l'un des caractères
suivants : $, `, ", \ ou <changement de ligne>. Un guillemet double peut être protégé entre deux guillemets
doubles en étant précédé d'une contre-oblique. S'il est activé, le
développement de l'historique sera effectué, à moins qu'un ! apparaissant
entre guillemets doubles ne soit protégé par une contre-oblique. La
contre-oblique précédant le ! n'est pas supprimée.
Les caractères spéciaux * et @ ont des significations spéciales
lorsqu'ils se trouvent entre des guillemets doubles (consultez
PARAMÈTRES ci-dessous).
Les séquences de caractères de la forme $'chaîne' sont traitées
comme une variante spéciale des guillemets simples. La séquence est
développée en chaîne avec les caractères protégés par contre-oblique
remplacés comme indiqué par la norme ANSI C. Les suites de protection par
contre-oblique, si présentes, sont décodées comme suit :
-
- \a
-
alerte (alarme) ;
- \b
-
effacement arrière (« backspace ») ;
- \e
-
- \E
-
caractère de protection ;
- \f
-
saut de page (« form feed ») ;
- \n
-
saut de ligne (« new line ») ;
- \r
-
retour chariot
- \t
-
tabulation horizontale ;
- \v
-
tabulation verticale ;
- \\
-
contre-oblique ;
- \'
-
guillemet simple ;
- \"
-
guillemet double ;
- \?
-
point d'interrogation ;
- \nnn
-
le caractère 8 bits dont la valeur en octal vaut nnn (un à trois
chiffres) ;
- \xHH
-
le caractère 8 bits dont la valeur hexadécimale est HH (un ou deux
chiffres hexadécimaux) ;
- \uHHHH
-
le caractère Unicode (ISO/IEC 10646) dont la valeur hexadécimale est HHHH
(un à quatre chiffres hexadécimaux) ;
- \UHHHHHHHH
-
le caractère Unicode (ISO/IEC 10646) dont la valeur hexadécimale est
HHHHHHHH (un à huit chiffres hexadécimaux) ;
- \cx
-
un caractère contrôle-x.
Le résultat développé est protégé par des guillemets simples comme si le
symbole dollar n'avait pas été présent.
Une chaîne entre guillemets doubles précédée d'un symbole dollar
($"chaine") conduira à la traduction de la chaîne selon les paramètres
linguistiques régionaux en vigueur. L'infrastructure de gettext parcourt
la chaîne et effectue la traduction, en utilisant les variables de
l'interpréteur LC_MESSAGES, TEXTDOMAINDIR et TEXTDOMAIN. Si les
paramètres linguistiques régionaux actuels sont C ou POSIX, s'il n'y a
pas de traduction disponible ou si la chaîne n'est pas traduite, le symbole
dollar est ignoré. C'est une forme de double protection, ainsi la chaîne
demeure entre guillemets doubles par défaut qu'elle soit ou non traduite et
remplacée. Si l'option noexpand_translation est activée en utilisant la
commande interne shopt, les chaînes traduites sont protégées par des
guillemets simples au lieu de guillemets doubles. Consultez la description
de shopt ci-dessous dans
COMMANDES INTERNES DE L'INTERPRÉTEUR.
PARAMÈTRES
Un paramètre est une entité permettant de stocker des valeurs. Il peut
être un nom, un nombre ou un des caractères spéciaux décrits ci-dessous,
dans Paramètres spéciaux. Une variable est un paramètre noté par un
nom. Une variable possède une valeur et zéro ou plusieurs
attributs. Les attributs sont affectés en utilisant la commande interne
declare (consultez declare dans
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
Un paramètre est créé si une valeur lui a été affectée. La chaîne NULL est
une valeur correcte. Une fois qu'une variable est créée, elle ne peut être
détruite qu'en utilisant la commande interne unset (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
Une variable peut recevoir une valeur par une affectation de la forme
-
nom=[valeur]
Si aucune valeur n'est indiquée, une chaîne NULL est affectée à la
variable. Toutes les valeurs sont sujettes au développement du tilde, des
paramètres et des variables, à la substitution de commande, au développement
arithmétique et à la suppression des protections (consultez
DÉVELOPPEMENTS ci-dessous). Si une variable a son attribut integer
configuré, alors la valeur est soumise à l'évaluation arithmétique, même
si la syntaxe $((...)) n'est pas utilisée (consultez Développement arithmétique ci-dessous). Le découpage en mots et le développement des
chemins ne sont pas effectués. Les affectations peuvent également apparaître
comme arguments des commandes internes suivantes : alias, declare,
typeset, export, readonly et local (commandes de
déclaration). En mode POSIX, ces commandes internes pourraient
apparaître dans une commande après une ou plusieurs instances de la commande
interne command et conserver ces propriétés d’affectation.
Dans le contexte où une affectation affecte une valeur à une variable de
l'interpréteur ou à un indice de tableau, l'opérateur += peut être
utilisé pour ajouter ou additionner à la précédente valeur de la
variable. Cela comprend des arguments pour les commandes internes, comme
declare, qui acceptent des affectations (commandes de
déclaration). Lorsque l'opérateur += est appliqué à une variable dont
l'attribut integer (entier) a été positionné, la valeur est évaluée
comme une expression arithmétique et additionnée à la valeur actuelle de la
variable qui est également évaluée. Lorsque += est appliqué à une
variable tableau en utilisant l'affectation composée (consultez Tableaux
ci-dessous), la valeur de la variable n'est pas détruite (comme elle l'est
lorsque = est utilisé) et les nouvelles valeurs sont ajoutées au tableau,
en commençant à l'indice maximal du tableau plus un (pour les tableaux
indicés) ou ajoutées comme un couple clef valeur pour un tableau
associatif. Lorsque l'opérateur est appliqué à une variable de type chaîne,
la valeur est développée et concaténée en valeur de la variable.
L’attribut nameref peut être affecté à une variable en utilisant l’option
-n des commandes internes declare et local (consultez la
description des commandes declare et local ci-dessous) pour créer une
nameref ou une référence vers une autre variable. Cela permet aux
variables d’être manipulées indirectement. À chaque fois qu’une variable
nameref est référencée, affectée, détruite ou a ses attributs modifiés
(autrement qu'en utilisant ou en changeant l'attribut nameref lui-même),
l’opération est en fait réalisée sur la variable indiquée par la valeur de
la variable nameref. nameref est généralement utilisée dans des
fonctions d’interpréteur pour référencer une variable dont le nom est passé
en argument de la fonction. Par exemple, si un nom de variable est passé en
premier argument à une fonction d’interpréteur, exécuter
-
declare -n ref=$1
dans la fonction crée une variable de nameref ref dont la valeur est
le nom de la variable passée en premier argument. Les références et
affectations de ref et les modifications de ses attributs sont traitées
comme des références, affectations et modifications d'attribut sur la
variable dont le nom a été passé par $1. Si la variable de contrôle dans
une boucle for a l’attribut nameref, la liste de mots peut être une
liste de variables d’interpréteur et une référence de nom est établie pour
chaque mot de la liste, tour à tour, lorsque la boucle est
exécutée. L’attribut nameref ne peut pas être donné aux variables de type
tableau. Cependant, les variables nameref peuvent référencer des
variables de type tableau et des variables de type tableau
indicé. nameref peut être détruit en utilisant l’option -n de la
commande interne unset. Sinon, si unset est exécuté avec le nom d’une
variable nameref en argument, la variable référencée par la variable
nameref sera détruite.
Paramètres positionnels
Un paramètre positionnel est un paramètre noté par un ou plusieurs
chiffres (à l'exception du chiffre 0 seul). Les paramètres positionnels
sont affectés avec les arguments de l'interpréteur lors de son appel. Ils
peuvent être réaffectés avec la commande interne set. On ne peut pas
utiliser les affectations pour les paramètres positionnels. Ils sont
temporairement remplacés lors de l'exécution d'une fonction de
l'interpréteur (consultez
FONCTIONS ci-dessous).
Un paramètre positionnel constitué de plusieurs chiffres doit être encadré
par des accolades lors de son développement (consultez
DÉVELOPPEMENTS ci-dessous).
Paramètres spéciaux
L'interpréteur traite plusieurs paramètres spécifiquement. Ces paramètres
peuvent uniquement être consultés, il n'est pas permis de leur affecter une
valeur.
- *
-
Se développe en l'ensemble des paramètres positionnels, commençant par le
premier. Quand le développement n’est pas entre guillemets doubles, tous les
paramètres positionnels se développent en mots séparés. Dans les contextes
où il sont réalisés, ces mots sont soumis à d’autres découpages en mots et
développements de chemin. Quand le développement se produit entre des
guillemets doubles, * se transforme en un seul mot constitué de la valeur
de tous les paramètres positionnels séparés par le premier caractère de la
variable spéciale
IFS. C'est-à-dire que $* est équivalent à
"$1c$2c...", où c est le premier caractère de la
valeur de la variable
IFS. Si
IFS est inexistante, les
paramètres sont séparés par des espaces. Si
IFS est NULL, les
paramètres sont accolés sans séparateurs.
- @
-
Se développe en ensemble des paramètres positionnels, commençant par le
premier. Dans les contextes où le découpage en mots est réalisé, chaque
paramètre positionnel se développe en un mot séparé ; si ces mots ne sont
pas entre des guillemets doubles, ils sont sujets au découpage de mot. Dans
les contextes où il n'y a pas de découpage en mots, chaque paramètre
positionnel se développe en un mot distinct séparé par des espaces. Quand le
développement a lieu entre guillemets doubles, chaque paramètre se développe
en un mot distinct. C'est-à-dire que "$@" est équivalent à "$1" "$2"
.... Si le développement des guillemets doubles survient dans un mot, le
développement du premier paramètre est accolé à la première partie du mot
d'origine et le développement du dernier paramètre est accolé à la dernière
partie du mot d'origine. Quand il n'y a pas de paramètres positionnels,
"$@" et $@ ne se développent en rien (c'est-à-dire qu'ils sont
simplement éliminés).
- #
-
Correspond au nombre de paramètres positionnels, en base décimale.
- ?
-
Se développe en état final du dernier pipeline exécuté au premier plan.
- -
-
Est remplacé par la liste des options de l'interpréteur indiquées durant
l'appel, configurées avec la commande interne set ou celles créées par
l'interpréteur lui-même (comme avec l'option -i).
- $
-
Se transforme en PID de l'interpréteur. Dans un sous-interpréteur, il se
transforme en PID de l'interpréteur et non pas du sous-interpréteur.
- !
-
Se transforme en PID de la dernière tâche placée en arrière-plan, soit
exécutée comme une commande asynchrone, soit en utilisant la commande
interne bg (consultez
CONTRÔLE DES TÂCHES ci-dessous).
- 0
-
Se développe en nom de l'interpréteur ou du script. Ce paramètre est créé
lors de l'initialisation de l'interpréteur. Si bash est appelé avec un
fichier de commandes, $0 correspond au nom de ce fichier. Si bash est
lancé avec l'option -c, alors $0 contient le premier argument, s'il y
en a un, après la chaîne de commandes à exécuter. Sinon, ce paramètre
contient le nom de fichier utilisé pour appeler bash, comme indiqué par
l'argument zéro.
Variables de l'interpréteur
Les variables suivantes sont créées par l'interpréteur :
- _
-
Au lancement de l'interpréteur, contient le chemin d'accès utilisé pour
appeler l'interpréteur, ou le script en cours d'exécution tel qu'il est
passé dans l'environnement ou dans la liste des arguments. Devient ensuite
le dernier argument de la commande simple précédente exécutée au premier
plan, après développement. Contient également le chemin d'accès complet de
chaque commande exécutée et se retrouve dans l'environnement exporté à cette
commande. Lors de la vérification de l'arrivée de courrier, contient le nom
du fichier de courrier en cours de consultation.
- BASH
-
Se développe en chemin d'accès complet à l'instance actuelle de bash.
- BASHOPTS
-
Liste des options activées de l'interpréteur, séparées par des deux-points
« : ». Chaque mot de la liste est un argument correct pour l'option -s de
la commande interne shopt (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Les options apparaissant dans
BASHOPTS sont celles indiquées comme actives par shopt. Si cette
variable est dans l'environnement au lancement de bash, chaque option de
la liste est activée avant de lire les fichiers d’initialisation. Cette
variable est en lecture seule.
- BASHPID
-
Se transforme en PID du processus de l'interpréteur bash actuel. Diffère
de $$ sous certaines conditions, comme dans les sous-interpréteurs ne
nécessitant pas que bash soit réinitialisé. Les assignations à
BASHPID n'ont pas d''effet. Si BASHPID est détruite, elle perd ses
propriétés spéciales, même si elle est recréée par la suite.
- BASH_ALIASES
-
Une variable de type tableau associatif dont les éléments correspondent à
une liste interne d'alias comme celle gérée par la commande interne
alias. Les éléments ajoutés à ce tableau apparaissent dans la liste
d'alias ; cependant, la destruction d'éléments du tableau ne provoque pas
actuellement le retrait des alias de la liste d'alias. Si BASH_ALIASES
est détruite, elle perd ses propriétés spéciales, même si elle est recréée
par la suite.
- BASH_ARGC
-
Une variable de type tableau contenant le nombre de paramètres de chaque
trame de la pile d'appel d'exécution de l'interpréteur bash actuel. Le
nombre de paramètres du sous-programme actuel (fonction de l'interpréteur ou
du script exécuté par . ou source) est au sommet de la pile. Lorsqu'un
sous-programme est exécuté, le nombre de paramètres passés est placé dans
BASH_ARGC. L'interpréteur crée
BASH_ARGC seulement dans
le mode de traçage étendu (consultez ci-dessous la description de l'option
extdebug de la commande interne shopt). La configuration de
extdebug après que l'interpréteur ait démarré l'exécution d'un script, ou
le référencement de cette variable quand extdebug n'existe pas, peut
provoquer une incohérence des valeurs.
- BASH_ARGV
-
Une variable de type tableau contenant tous les paramètres de la pile
d'appel d'exécution de l'interpréteur bash actuel. Le dernier paramètre
du dernier sous-programme est au sommet de la pile ; le premier paramètre de
l'appel initial est en bas. Lorsqu'un sous-programme est exécuté, les
paramètres fournis sont placés dans
BASH_ARGV.
BASH_ARGV
est créé uniquement dans le mode de traçage étendu (consultez ci-dessous la
description de l'option extdebug de la commande interne shopt). La
configuration de extdebug après que l'interpréteur ait démarré
l'exécution d'un script, ou le référencement de cette variable quand
extdebug n'existe pas peut provoquer une incohérence des valeurs.
- BASH_ARGV0
-
Quand elle est référencée, cette variable développe le nom de l'interpréteur
ou du script de l'interpréteur (identique à $0 ; voir la description du
paramètre spécial 0 ci-dessus). L'affectation d'une valeur à
BASH_ARGV0 fait que cette valeur est aussi assignée à $0. Si
BASH_ARGV0 est détruite, elle perd ses propriétés spéciales, même si elle
est recréée par la suite.
- BASH_CMDS
-
Une variable de type tableau associatif dont les éléments correspondent à
une table de hachage interne de commandes comme celle gérée par la commande
interne hash. Les éléments ajoutés à ce tableau apparaissent dans la
table de hachage ; cependant, la destruction d'éléments du tableau ne
provoque pas actuellement le retrait des noms de commandes de la table de
hachage. Si BASH_CMDS est détruite, elle perd ses propriétés spéciales,
même si elle est recréée par la suite.
- BASH_COMMAND
-
La commande en cours d'exécution ou sur le point d'être exécutée, à moins
que l'interpréteur n'exécute une commande à la suite d'une capture, auquel
cas c'est la commande s'exécutant au moment de la capture. Si
BASH_COMMAND est détruite, elle perd ses propriétés spéciales, même si
elle est recréée par la suite.
- BASH_EXECUTION_STRING
-
L'argument commande de l'option d'appel -c.
- BASH_LINENO
-
Une variable de type tableau dont les éléments sont les numéros de ligne des
fichiers sources où chaque élément correspondant de
FUNCNAME a été
invoqué. ${BASH_LINENO[$i]} est le numéro de la ligne dans le
fichier source (${BASH_SOURCE[$i+1]}) où ${FUNCNAME[$i]} a
été appelé (ou ${BASH_LINENO[$i-1]} si consulté depuis une autre
fonction de l'interpréteur). Utilisez
LINENO pour obtenir le
numéro de ligne actuel.
- BASH_LOADABLES_PATH
-
Liste des répertoires, séparés par des deux-points « : », que l'interpréteur
consulte lorsqu'il cherche les commandes internes chargeables dynamiquement
spécifiées par la commande enable.
- BASH_REMATCH
-
Une variable de type tableau dont les éléments sont affectés avec
l'opérateur binaire =~ dans la commande conditionnelle [[. L'élément
d'indice 0 est la partie de la chaîne correspondant à l'expression
rationnelle complète. L'élément d'indice n est la partie de la chaîne
correspondant à la n-ième sous-expression entre parenthèses.
- BASH_SOURCE
-
Une variable de type tableau dont les éléments sont les noms des fichiers
source où les noms des fonctions d'interpréteur correspondants à la variable
de type tableau
FUNCNAME sont définis. La fonction d'interpréteur
${FUNCNAME[$i]} est définie dans le fichier
${BASH_SOURCE[$i]} et appelée depuis ${BASH_SOURCE[$i+1]}.
- BASH_SUBSHELL
-
Incrémentée dans tous les sous-interpréteurs et environnements de
sous-interpréteur quand l’interpréteur commence à s’exécuter dans cet
environnement. La valeur initiale est 0. Si BASH_COMMAND est détruite,
elle perd ses propriétés spéciales, même si elle est recréée par la suite.
- BASH_VERSINFO
-
Une variable de type tableau protégée en écriture dont les éléments
représentent la version de cette instance de bash. Cette valeur est
affectée aux éléments du tableau comme suit :
-
- BASH_VERSINFO[0]
-
Le numéro majeur de la version (release).
- BASH_VERSINFO[1]
-
Le numéro mineur de la version (version).
- BASH_VERSINFO[2]
-
Le niveau de correctif.
- BASH_VERSINFO[3]
-
Le numéro de compilation.
- BASH_VERSINFO[4]
-
Le statut de cette version (par exemple beta1).
- BASH_VERSINFO[5]
-
La valeur de
MACHTYPE.
- BASH_VERSION
-
Se développe en une chaîne décrivant le numéro de version de cette instance
de bash.
- COMP_CWORD
-
Un indice dans ${COMP_WORDS} du mot contenant la position actuelle du
curseur. Cette variable n'est disponible que dans les fonctions de
l'interpréteur appelées par les outils de complètement programmables
(consultez Complètement programmable ci-dessous).
- COMP_KEY
-
La touche (ou dernière touche d'une suite de touches) utilisée pour appeler
la fonction de complètement actuelle.
- COMP_LINE
-
La ligne de commande actuelle. Cette variable n'est disponible que dans les
fonctions de l'interpréteur appelées par les outils de complètement
programmables (consultez Complètement programmable ci-dessous).
- COMP_POINT
-
L'indice de la position actuelle du curseur relatif au début de la commande
actuelle. Si la position actuelle du curseur est à la fin de la commande
actuelle, la valeur de cette variable est égale à ${#COMP_LINE}. Cette
variable n'est disponible que dans les fonctions de l'interpréteur et les
commandes externes appelées par les outils de complètement programmables
(consultez Complètement programmable ci-dessous).
- COMP_TYPE
-
Configurée à une valeur entière correspondant au type de complètement essayé
qui a provoqué l'appel d'une fonction de complètement : TAB pour un
complètement normal, ? pour l'affichage des complètements après
tabulations successives, ! pour l'affichage des alternatives de
complètement de mot partiel, @ pour afficher les complètements si le mot
n'est pas modifié, ou % pour le menu de complètement. Cette variable
n'est disponible que dans les fonctions de l'interpréteur et les commandes
externes appelées par les outils de complètement programmables (consultez
Complètement programmable ci-dessous).
- COMP_WORDBREAKS
-
Le jeu de caractères que la bibliothèque readline considère comme
séparateurs de mots lors du complètement de mot. Si
COMP_WORDBREAKS est détruite, elle perd ses propriétés spéciales, même si
elle est recréée par la suite.
- COMP_WORDS
-
Une variable de type tableau (consultez Tableaux ci-dessous) consistant
en mots individuels de la ligne de commande actuelle. La ligne est découpée
en mots comme readline la découperait, en utilisant
COMP_WORDBREAKS tel que décrit ci-dessus. Cette variable n'est disponible
que dans les fonctions de l'interpréteur appelées par les outils de
complètement programmables (consultez Complètement programmable
ci-dessous).
- COPROC
-
Une variable de type tableau (consultez Tableaux ci-dessous) créée pour
représenter les descripteurs de fichier pour les sorties depuis et les
entrées vers un coprocessus non nommé (consultez Coprocessus ci-dessus).
- DIRSTACK
-
Une variable de type tableau (consultez Tableaux ci-dessous) représentant
le contenu actuel de la pile de répertoires. Les répertoires apparaissent
dans la pile dans l'ordre dans lequel la commande interne dirs les
affiche. Les affectations des éléments de cette variable tableau peuvent
être utilisés pour modifier les répertoires déjà dans la pile, mais les
commandes internes pushd et popd doivent être utilisées pour ajouter
et enlever des répertoires. L'affectation de cette variable ne modifiera pas
le répertoire actuel. Si
DIRSTACK est détruite, elle perd ses
propriétés spéciales, même si elle est recréée par la suite.
- EPOCHREALTIME
-
À chaque fois que ce paramètre est consulté, il se développe en nombre de
secondes écoulées depuis l'Epoch Unix (consultez time(3)) comme valeur en
virgule flottante avec une granularité d'une microseconde. Les affectations
à
EPOCHREALTIME sont ignorées. Si
EPOCHREALTIME est
détruite, elle perd ses propriétés spéciales, même si elle est recréée par
la suite.
- EPOCHSECONDS
-
À chaque fois que ce paramètre est consulté, il se développe en nombre de
secondes écoulées depuis l'Epoch Unix (consultez time(3)). Les
affectations à
EPOCHSECONDS sont ignorées. Si
EPOCHSECONDS est détruite, elle perd ses propriétés spéciales, même si
elle est recréée par la suite.
- EUID
-
Contient l'UID effectif de l'utilisateur, initialisé au démarrage de
l'interpréteur. Cette variable est en lecture seule.
- FUNCNAME
-
Une variable de type tableau contenant le nom de toutes les fonctions de
l'interpréteur actuellement dans la pile d'appel d'exécution. L'élément
d'indice 0 est le nom de l'une des fonctions en cours d'exécution dans
l'interpréteur. L'élément le plus bas (celui avec l'indice le plus grand)
est
"main".
Cette variable n'existe que si une fonction de l'interpréteur est en cours
d'exécution. Les affectations de
FUNCNAME n'ont aucun effet. Si
FUNCNAME est détruite, elle perd ses propriétés spéciales, même si
elle est recréée par la suite.
Cette variable peut être utilisée avec BASH_LINENO et
BASH_SOURCE. Chaque élément de FUNCNAME a des éléments correspondant
dans BASH_LINENO et BASH_SOURCE pour décrire la pile d'appel. Par
exemple, ${FUNCNAME[$i]} a été appelé depuis le fichier
${BASH_SOURCE[$i+1]} à la ligne numéro
${BASH_LINENO[$i]}. La commande interne caller affiche la pile
d'appel actuelle utilisant ces renseignements.
- GROUPS
-
Une variable de type tableau contenant la liste des groupes dont
l'utilisateur est membre. Les affectations de
GROUPS n'ont aucun
effet. Si
GROUPS est détruite, elle perd ses propriétés spéciales,
même si elle est recréée par la suite.
- HISTCMD
-
Le numéro d'historique, ou l'indice dans la file d'historique, de la
commande en cours. Les affectations de
HISTCMD sont ignorées. Si
HISTCMD est détruite, elle perd ses propriétés spéciales, même si
elle est recréée par la suite.
- HOSTNAME
-
Automatiquement configurée au nom de la machine actuelle.
- HOSTTYPE
-
Automatiquement configurée en chaîne décrivant de façon unique le type de
machine sur laquelle bash s'exécute. La valeur par défaut dépend du
système.
- LINENO
-
Chaque fois que ce paramètre est consulté, l'interpréteur le remplace par un
nombre décimal représentant le numéro de la ligne actuelle (commençant à 1),
au sein du script ou de la fonction. Hors d'un script ou d'une fonction, la
valeur n'a pas nécessairement de sens. Si
LINENO est détruite,
elle perd ses propriétés spéciales, même si elle est recréée par la suite.
- MACHTYPE
-
Automatiquement configurée en chaîne décrivant le type du système sur lequel
bash s'exécute, dans le format standard de GNU
processeur-compagnie-système. La valeur par défaut dépend du système.
- MAPFILE
-
Une variable de type tableau (consultez Tableaux ci-dessous) créée pour
représenter le texte lu par la commande interne mapfile si aucun nom de
variable n'a été fourni.
- OLDPWD
-
Le répertoire de travail précédent tel que configuré par la commande cd.
- OPTARG
-
La valeur du dernier argument d'option traité par la commande interne
getopts (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR
ci-dessous).
- OPTIND
-
L'indice du prochain argument à traiter par la commande interne getopts
(consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
- OSTYPE
-
Automatiquement configurée en chaîne décrivant le système d'exploitation sur
lequel bash s'exécute. La valeur par défaut dépend du système.
- PIPESTATUS
-
Une variable de type tableau (consultez Tableaux ci-dessous) contenant
une liste des états finaux des processus exécutés dans le pipeline exécuté
le plus récemment au premier plan (qui peut éventuellement contenir une
seule commande).
- PPID
-
L'identifiant du processus parent de l'interpréteur. Cette variable est en
lecture seule.
- PWD
-
Le répertoire de travail actuel tel que configuré par la commande cd.
- RANDOM
-
À chaque fois que ce paramètre est consulté, un entier aléatoire entre 0 et
32767 est engendré. L'affectation d'une valeur à
RANDOM initialise
(ensemence) la suite de nombres aléatoires. Si
RANDOM est
détruite, elle perd ses propriétés spéciales, même si elle est recréée par
la suite.
- READLINE_ARGUMENT
-
Tout argument numérique donné à une commande readline qui a été définie
en utilisant
"bind -x"
(consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous) quand
il a été invoqué.
- READLINE_LINE
-
Le contenu du tampon de ligne readline, pour utiliser avec
"bind -x"
(consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
- READLINE_MARK
-
La position de la marque (point d'insertion enregistré) dans le tampon de
ligne readline, pour utiliser avec
"bind -x"
(consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Les
caractères entre le point d'insertion et la marque sont souvent appelés la
zone.
- READLINE_POINT
-
La position du point d'insertion dans le tampon de ligne readline, pour
utiliser avec
"bind -x"
(consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
- REPLY
-
Configurée en ligne de saisie lue par la commande interne read
lorsqu'aucun argument n'a été fourni.
- SECONDS
-
À chaque fois que ce paramètre est consulté, il se développe en nombre de
secondes écoulées depuis le lancement de l'interpréteur. Si une valeur est
affectée à
SECONDS, la valeur renvoyée lors d’une consultation
ultérieure est le temps en seconde écoulé depuis l'affectation, ajouté à la
valeur affectée. Le nombre de secondes entre le moment du lancement de
l'interpréteur et l'heure actuelle sont toujours déterminés en interrogeant
l'horloge système. Si
SECONDS est détruite, elle perd ses
propriétés spéciales, même si elle est recréée par la suite.
- SHELLOPTS
-
Liste des options activées de l'interpréteur, séparées par des deux-points
« : ». Chaque mot de la liste est un argument correct pour l'option -o de
la commande interne set (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Les options apparaissant dans
SHELLOPTS sont celles indiquées comme actives par set -o. Si cette
variable est dans l'environnement au lancement de bash, chaque option de
la liste est activée avant de lire les fichiers d’initialisation. Cette
variable est en lecture seule.
- SHLVL
-
Incrémenté de 1 à chaque appel d'une instance de bash.
- SRANDOM
-
Cette variable engendre un nombre pseudo-aléatoire de 32 bits chaque fois
qu'elle est consultée. Le générateur de nombres aléatoires n'est pas
linéaire sur les systèmes qui prennent en charge /dev/urandom ou
arc4random, aussi chaque nombre renvoyé n'a aucune relation avec les
nombres précédents. Le générateur de nombre aléatoire ne peut pas être
ensemencé, aussi les affectations à cette variable n'ont aucun effet. Si
SRANDOM est détruite, elle perd ses propriétés spéciales, même si
elle est recréée par la suite.
- UID
-
Contient l'UID de l'utilisateur actuel, initialisé au démarrage de
l'interpréteur. Cette variable est en lecture seule.
Les variables suivantes sont utilisées par l'interpréteur. Dans certains
cas, bash affecte des valeurs par défaut aux variables ; ces cas sont
décrits ci-dessous.
- BASH_COMPAT
-
La valeur est utilisée pour définir le niveau de compatibilité de
l’interpréteur. Consultez
MODE DE COMPATIBILITÉ DE L'INTERPRÉTEUR
ci-dessous pour une description des différents niveaux de compatibilité et
leurs conséquences. La valeur peut être un nombre décimal (par exemple 4.2)
ou entier (par exemple 42) correspondant au niveau de compatibilité
voulu. Si BASH_COMPAT est détruite ou définie comme une chaîne vide, le
niveau de compatibilité est défini à la valeur par défaut de la version
actuelle. Si BASH_COMPAT est définie à une valeur de niveau de
compatibilité impossible, l’interpréteur affiche un message d’erreur et
définit le niveau de compatibilité à la valeur par défaut de la version
actuelle. Les valeurs possibles correspondent aux niveaux de compatibilité
décrits ci-dessous dans
MODE DE COMPATIBILITÉ DE L'INTERPRÉTEUR. Par exemple, 4.2 et 42 sont des valeurs possibles qui
correspondent à l'option compat42 de shopt et définissent le niveau de
compatibilité à 42. La version actuelle est aussi une valeur possible.
- BASH_ENV
-
Si ce paramètre existe lorsque bash exécute un script, sa valeur est
considérée comme un nom de fichier contenant les commandes d'initialisation
de l'interpréteur, comme dans ~/.bashrc. La valeur de
BASH_ENV
est soumise au développement des paramètres, à la substitution de commande
et au développement arithmétique avant d'être considérée comme un nom de
fichier.
PATH n'est pas utilisée pour rechercher le fichier
obtenu.
- BASH_XTRACEFD
-
Si configurée à une valeur entière correspondant à un descripteur de fichier
correct, bash écrira la trace de sortie si
set -x
est activé vers ce descripteur de fichier. Le descripteur de fichier est
fermé quand
BASH_XTRACEFD est détruite ou qu'une nouvelle valeur
lui est affectée. Détruire
BASH_XTRACEFD ou lui affecter la chaîne
vide conduit la trace de sortie à être envoyée vers la sortie d'erreur
standard. Remarquez que configurer
BASH_XTRACEFD à 2 (le
descripteur de fichier de la sortie d'erreur standard) puis la détruire
revient à fermer la sortie d'erreur standard.
- CDPATH
-
Le chemin de recherche de la commande interne cd. Il s'agit d'une liste
de répertoires, séparés par des deux-points « : », que l'interpréteur
consulte lorsqu'il cherche un sous-répertoire destination de la commande
cd. Un exemple de valeur est
".:~:/usr".
- CHILD_MAX
-
Définir le nombre de valeurs d’état de sortie des enfants dont
l’interpréteur doit se souvenir. Bash ne permettra pas à cette valeur d’être
inférieure à un minimum imposé par POSIX, ni d’être supérieure à une valeur
maximale (8192 pour l’instant). La valeur minimale dépend du système.
- COLUMNS
-
Utilisée par la commande composée select pour déterminer la largeur du
terminal lors de l'affichage des listes de sélection. Automatiquement
configurée si l’option checkwinsize est activée ou dans un interpréteur
interactif à la réception d'un signal
SIGWINCH.
- COMPREPLY
-
Une variable de type tableau dans lequel bash lit les complètements
possibles produits par une fonction de l'interpréteur appelée par les outils
de complètement programmables (consultez Complètement programmable
ci-dessous). Chaque élément du tableau contient un complètement possible.
- EMACS
-
Si bash trouve cette variable dans l'environnement lorsque l'interpréteur
démarre avec la valeur
"t",
il considère que l'interpréteur est lancé dans un tampon d'interpréteur
d'Emacs et désactive l'édition en ligne.
- ENV
-
Développé et exécuté de façon similaire à
BASH_ENV (consultez
APPEL ci-dessus) quand l'interpréteur interactif est invoqué en mode POSIX.
- EXECIGNORE
-
Une liste, séparée par des deux-points « : », de motifs de l'interpréteur
(voir Motifs génériques) définissant la liste de noms de fichier à
ignorer par la commande de recherche utilisant PATH. Les fichiers dont
les noms de chemin complets correspondent à un de ces motifs ne sont pas
considérés comme des fichiers exécutables en vue du complètement et de
l'exécution de commande au moyen d'une recherche dans PATH. Cela
n'affecte pas le comportement des commandes [, test et [[. Les noms
de chemin complets dans la table de hachage des commandes ne sont pas sujets
à EXECIGNORE. Utiliser cette variable pour ignorer des fichiers de
bibliothèque partagée dont le bit exécutable est présent, mais qui ne sont
pas des fichiers exécutables. La correspondance de motif respecte la
configuration de l'option d'interpréteur extglob.
- FCEDIT
-
L'éditeur par défaut utilisé par la commande interne fc.
- FIGNORE
-
Une liste de suffixes, séparés par des deux-points « : », que bash
ignorera lors du complètement des noms de fichiers (consultez
READLINE ci-dessous). Un nom de fichier dont le suffixe correspond à l'un
de ceux mentionnés dans
FIGNORE est exclu de la liste des noms de
fichiers correspondant pour le complètement. Par exemple, cette variable
peut prendre la valeur
".o:~"
(des protections sont nécessaires pour l'affectation d'une valeur à cette
variable qui contient des tildes).
- FUNCNEST
-
Si configurée à une valeur numérique strictement positive, cela définit le
niveau maximal d'imbrication de fonctions. Les invocations de fonctions qui
dépassent ce niveau d'imbrication forceront la commande actuelle à
abandonner.
- GLOBIGNORE
-
Une liste de motifs séparés par des deux-points « : », définissant
l'ensemble des noms de fichier à ignorer lors du développement des
chemins. Si un nom de fichier correspondant à un des motif de développement
des chemins correspond également à un des motifs dans
GLOBIGNORE,
il est supprimé de la liste des correspondances.
- HISTCONTROL
-
Une liste de valeurs, séparées par des deux-points « : », commandant la
façon dont les commandes sont sauvegardées dans la file d'historique. Si la
liste des valeurs contient la valeur ignorespace, les lignes commençant
par une espace ne sont pas sauvegardées dans la file d'historique. La
valeur ignoredups conduit à ne pas sauvegarder une ligne correspondant
exactement à la ligne de commande précédente. La présence de ignoreboth
est un condensé pour ignorespace et ignoredups. La valeur erasedups
conduit à retirer de la file d'historique toutes les lignes précédant la
ligne actuelle et lui correspondant avant que cette ligne y soit
sauvegardée. Toute valeur qui ne fait pas partie de la liste ci-dessus est
ignorée. Si
HISTCONTROL est inexistante ou si elle ne contient pas
une valeur correcte, toutes les lignes lues par l'analyseur de
l'interpréteur seront sauvegardées dans la file d'historique, selon la
valeur de
HISTIGNORE. La seconde ligne et les suivantes d'une
commande multiligne ne sont pas testées et sont ajoutées dans l'historique
indépendamment de la valeur de
HISTCONTROL.
- HISTFILE
-
Le nom du fichier dans lequel l'historique des commandes est sauvegardé
(consultez
HISTORIQUE ci-dessous). Par défaut, il s'agit de
~/.bash_history. Si inexistante, l'historique des commandes n'est pas
sauvegardé lorsqu'un interpréteur se termine.
- HISTFILESIZE
-
Le nombre maximal de lignes contenues dans le fichier d'historique. Quand
cette variable contient une valeur, le fichier d’historique est tronqué, si
besoin, pour ne pas contenir plus que ce nombre de lignes en enlevant les
entrées les plus anciennes. Ce fichier est aussi tronqué à cette taille
après son écriture quand un interpréteur se termine. Si la valeur est 0,
le fichier d’historique est tronqué à une taille nulle. Les valeurs non
numériques ou négatives empêchent la troncature. L’interpréteur définit la
valeur par défaut à la valeur de HISTSIZE après avoir lu tous les
fichiers d’initialisation.
- HISTIGNORE
-
Une liste de motifs, séparés par des deux-points « : », déterminant quelles
lignes de commande devraient être sauvegardées dans la file
d'historique. Chaque motif est accroché au début de la ligne et doit
correspondre à celle-ci complètement (aucun ajout de « * »
implicite). Chaque motif est comparé à chaque ligne après application des
vérifications de
HISTCONTROL. En plus des motifs génériques usuels
de l'interpréteur, « & » correspond à la ligne précédente de
l'historique. « & » peut être protégée par une contre-oblique ; la
contre-oblique est supprimée avant de tenter une comparaison. La seconde
ligne et les suivantes d'une commande composée multiligne ne sont pas
testées et sont ajoutées dans l'historique quelque soit la valeur de
HISTIGNORE. La correspondance de motif respecte la configuration de
l'option d'interpréteur extglob.
- HISTSIZE
-
Le nombre de commandes à mémoriser dans l'historique (consultez
HISTORIQUE ci-dessous). Si la valeur est 0, les commandes ne sont pas
sauvegardées dans la liste d’historique. Les valeurs négatives permettent de
sauvegarder toutes les commandes dans la liste d’historique (sans
limite). L’interpréteur définit la valeur par défaut à 500 après avoir lu
tous les fichiers d’initialisation.
- HISTTIMEFORMAT
-
Si cette variable existe et n'est pas NULL, sa valeur est utilisée comme une
chaîne de caractères par strftime(3) afin d'imprimer l'horodatage associé
à chaque élément de l'historique affiché par la commande interne
history. Si cette variable existe, les horodatages sont écrits dans le
fichier d'historique afin d'être conservés au fur et à mesure des sessions
de l'interpréteur. Cela utilise le caractère de commentaire d'historique
pour distinguer l'horodatage des autres lignes de l'historique.
- HOME
-
Le répertoire d'accueil de l'utilisateur actuel ; l'argument par défaut de
la commande interne cd. La valeur de cette variable est aussi utilisée
lors du développement du tilde.
- HOSTFILE
-
Contient le nom d'un fichier ayant le même format
/etc/hosts
qui devra être lu lorsque l'interpréteur aura besoin de compléter un nom de
machine. La liste des complètements possibles de noms de machine peut être
changée pendant l'exécution de l'interpréteur ; à la tentative de
complètement de nom de machine suivant le changement de valeur, bash
ajoute le contenu du nouveau fichier à la liste existante. Si
HOSTFILE existe mais est vide, ou désigne un fichier non accessible en
lecture, bash essaie de lire
/etc/hosts
pour obtenir la liste des complètements de noms de machine
possibles. Lorsque
HOSTFILE est détruite, la liste des noms de
machine est effacée.
- IFS
-
Le séparateur de champs interne (« Internal Field Separator ») qui est
utilisé pour le découpage en mots après les développements et pour découper
les lignes en mots avec la commande interne read. La valeur par défaut
est « <espace><tab><changement_de_ligne> ».
- IGNOREEOF
-
Commande le comportement d'un interpréteur interactif à la réception d'un
caractère
EOF (fin de fichier) comme unique saisie. Si elle
existe, la valeur est le nombre de caractères
EOF consécutifs qui
doivent être tapés comme premiers caractères sur une ligne de saisie avant
que bash ne termine. Si la variable existe mais que sa valeur n'est pas
numérique ou si elle n'a pas de valeur, la valeur par défaut est 10. Si elle
n'existe pas,
EOF signifie la fin de la saisie pour
l'interpréteur.
- INPUTRC
-
Le nom du fichier d’initialisation pour readline, prioritaire sur le
fichier par défaut de
~/.inputrc
(consultez
READLINE ci-dessous).
- INSIDE_EMACS
-
Si cette variable apparaît dans l'environnement quand le script démarre,
bash considère qu'il s'exécute dans un tampon d'interpréteur d'Emacs et
peut désactiver l'édition de ligne, suivant la valeur de TERM.
- LANG
-
Utilisée pour déterminer le paramètre linguistique régional pour toute
catégorie non spécifiquement sélectionnée par une variable commençant par
LC_.
- LC_ALL
-
Cette variable surpasse
LANG et toute autre variable LC_
indiquant une catégorie de paramètres linguistiques régionaux.
- LC_COLLATE
-
Cette variable détermine l'ordre de collation utilisé pour trier les
résultats du développement des chemins et détermine le comportement des
expressions d’intervalle, des classes d'équivalences et des suites de
collations dans le développement des chemins et la correspondance de motifs.
- LC_CTYPE
-
Cette variable détermine l'interprétation des caractères et le comportement
des classes de caractères lors du développement des chemins et de la
recherche de correspondances de motifs.
- LC_MESSAGES
-
Cette variable détermine le paramètre linguistique régional utilisé pour
traduire les chaînes entre guillemets doubles précédées d'un $.
- LC_NUMERIC
-
Cette variable détermine le paramètre linguistique régional utilisé pour
formater les nombres.
- LC_TIME
-
Cette variable détermine le paramètre linguistique régional utilisé pour les
données et le temps.
- LINES
-
Utilisée par la commande composée select pour déterminer la taille des
colonnes lors de l'affichage des listes de sélection. Automatiquement
configurée si l’option checkwinsize est activée ou dans un interpréteur
interactif à la réception d'un signal
SIGWINCH.
- MAIL
-
Si ce paramètre correspond à un nom de fichier ou de répertoire et si la
variable
MAILPATH est inexistante, bash informe l'utilisateur
de l'arrivée de messages dans le fichier indiqué ou le répertoire au format
Maildir.
- MAILCHECK
-
Indique la durée (en seconde) au bout de laquelle bash vérifie si un
nouveau message est arrivé. La valeur par défaut est 60 secondes. Lorsque le
délai est écoulé, l'interpréteur vérifiera la présence d'un courrier
électronique avant d'afficher son invite de base. Si cette variable est
inexistante, ou contient une valeur strictement négative, l'interpréteur
désactive la vérification du courrier.
- MAILPATH
-
Une liste de noms de fichiers séparés par des deux-points « : », dans
lesquels on vérifiera l'arrivée de courrier. Le nom d'un fichier peut être
suivi d'un point d'interrogation « ? », puis d'une chaîne de caractères
indiquant le message à afficher en cas de courrier. Dans cette chaîne, le
paramètre $_ correspond au nom du fichier de courrier actuel. Exemple :
-
MAILPATH='/usr/spool/mail/bfox?"Vous avez du
courrier":~/shell-mail?"$_ a du courrier !"'
Bash peut être configurée pour fournir une valeur par défaut pour cette
variable (il n'y a pas de valeur par défaut), mais l'emplacement du fichier
de boîte à lettres dépend du système (par exemple /var/mail/$USER).
- OPTERR
-
Si configurée à la valeur 1, bash affiche les messages d'erreurs
engendrés par la commande interne getopts (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
OPTERR est initialisée
avec la valeur 1 à chaque appel de l'interpréteur ou au lancement d'un
script.
- PATH
-
Le chemin de recherche des commandes à exécuter. Il s'agit d'une liste de
répertoires, séparés par des deux-points « : » dans lesquels l'interpréteur
recherche les commandes (consultez
EXÉCUTION DES COMMANDES
ci-dessous). Un nom de répertoire de taille nulle (NULL) dans la valeur de
PATH désigne le répertoire actuel. Un répertoire NULL peut
apparaître comme deux deux-points consécutifs ou comme des deux-points en
début ou en fin. Le chemin par défaut dépend du système et est choisi par
l'administrateur installant bash. Une valeur commune est
``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
- POSIXLY_CORRECT
-
Si cette variable existe dans l'environnement lorsque bash démarre,
l'interpréteur passe en mode POSIX avant de lire les fichiers
d’initialisation comme si l'option --posix avait été fournie. Si elle est
créée pendant que l'interpréteur est en cours d'exécution, bash active le
mode POSIX comme si la commande
set -o posix
a été exécutée. Quand l'interpréteur passe en mode POSIX, il configure
cette variable si elle ne l'a pas déjà été.
- PROMPT_COMMAND
-
Si cette variable existe et est un tableau, la valeur de chaque élément
existant est exécutée comme commande préalablement à l'affichage de chaque
invite de base. Si elle existe mais n'est pas une variable de type tableau,
sa valeur est utilisée comme commande à exécuter à la place.
- PROMPT_DIRTRIM
-
Si elle contient un nombre supérieur à zéro, cette valeur est utilisée comme
nombre de répertoires finaux à conserver lors du développement des
protections de chaîne d'invite \w et \W (consultez
INVITES
ci-dessous). Les caractères supprimés sont remplacés par une ellipse.
- PS0
-
La valeur de ce paramètre est développée (consultez
INVITES
ci-dessous) puis affichée par les interpréteurs interactifs après la lecture
d'une commande et avant son exécution.
- PS1
-
La valeur de ce paramètre est développée puis utilisée comme chaîne d'invite
de base (consultez
INVITES ci-dessous). La valeur par défaut est
« \s-\v\$ ».
- PS2
-
La valeur de ce paramètre est développée comme
PS1 puis utilisée
comme chaîne d'invite secondaire. La valeur par défaut est « > ».
- PS3
-
La valeur de ce paramètre est utilisée comme invite de la commande select
(consultez
GRAMMAIRE DE L'INTERPRÉTEUR ci-dessus).
- PS4
-
La valeur de ce paramètre est développée comme
PS1 puis affichée
avant chaque commande affichée par bash lors d'un suivi d'exécution. Le
premier caractère de
PS4 est répété autant de fois que nécessaire
pour indiquer le niveau d'imbrication. La valeur par défaut est « + ».
- SHELL
-
Cette variable développe le chemin d'accès complet à l'interpréteur de
commandes. Si elle est inexistante au démarrage de l'interpréteur, bash
lui affecte le chemin d'accès complet à l'interpréteur de commandes de
connexion de l'utilisateur actuel.
- TIMEFORMAT
-
La valeur de ce paramètre est utilisée en tant que chaîne de format
indiquant comment les informations de paramétrage doivent être affichées
pour les pipelines précédés du mot réservé time. Le caractère %
introduit une suite de caractères de protection qui est développée en valeur
de temps ou autre information. Les suites de caractères de protection et
leurs significations sont les suivantes ; les crochets marquent les parties
facultatives.
-
- %%
-
Un % seul (non interprété).
- %[p][l]R
-
Le temps écoulé en seconde.
- %[p][l]U
-
Le temps processeur écoulé en mode utilisateur en seconde.
- %[p][l]S
-
Le temps processeur écoulé en mode système en seconde.
- %P
-
Le pourcentage de temps processeur utilisé calculé avec (%U + %S) / %R.
-
Le p facultatif est un chiffre indiquant la précision, le nombre de
chiffres après la virgule. Une valeur de 0 conduit à affichage de nombres
entiers. Trois chiffres au plus peuvent être affichés après la virgule ;
toute valeur supérieure à 3 sera modifiée en 3. Si p n'est pas
précisé, la valeur 3 est utilisée.
-
Le l facultatif indique un format plus long, incluant les minutes, de la
forme MMmSS.DDs. La valeur de p détermine si la partie
décimale est affichée ou non.
-
Si cette variable n'existe pas, bash agit comme si elle avait la valeur
$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'. Si la valeur est
NULL, aucune information de chronométrage n'est affichée. Un caractère final
de changement de ligne est ajouté quand la chaîne de format est affichée.
- TMOUT
-
Si configurée en valeur strictement positive,
TMOUT est traitée
comme le délai par défaut 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'entrée vient d'un terminal. Dans un interpréteur
interactif, la valeur est interprétée comme une durée en seconde à attendre
une ligne de saisie après avoir affiché l'invite de base. Bash se termine
après avoir attendu pendant ce temps en seconde si aucune saisie de ligne
complète n'est arrivée.
- TMPDIR
-
Si existante, bash utilise sa valeur comme nom de répertoire dans lequel
bash crée les fichiers temporaires nécessaires au fonctionnement de
l'interpréteur.
- auto_resume
-
Cette variable commande le comportement de l'interpréteur vis-à-vis de
l'utilisateur et du contrôle des tâches. Si cette variable existe, les
commandes simples constituées d'un seul mot, sans redirection, sont
considérées comme de possibles relances de tâches suspendues. Aucune
ambiguïté n'est possible, si plusieurs tâches commencent par la chaîne
saisie, la tâche à laquelle il a été accédé le plus récemment est
sélectionnée. Le nom d'une tâche suspendue, dans ce contexte, est la
ligne de commande utilisée pour la lancer. Si configurée à la valeur
exact, la chaîne fournie doit correspondre exactement au nom d'une tâche
suspendue ; si configurée à substring, la chaîne fournie doit
correspondre à une sous-chaîne du nom de la tâche suspendue. La valeur
substring donne une fonctionnalité analogue à l'identificateur de tâche
%? (consultez
CONTRÔLE DES TÂCHES ci-dessous). Si configurée à
toute autre valeur, la chaîne fournie doit être le préfixe du nom d'une
tâche suspendue ; cela fournit une fonctionnalité analogue à
l'identificateur de tâche %string.
- histchars
-
Les deux ou trois caractères commandant le développement de l'historique et
le découpage en lexèmes (consultez
DÉVELOPPEMENT DE L'HISTORIQUE
ci-dessous). Le premier caractère est le caractère de développement de l'historique, celui qui indique le début d'un développement d'historique
(normalement « ! »). Le second caractère est celui de substitution rapide, utilisé comme raccourci pour relancer la commande précédente, en
modifiant une partie de la chaîne (par défaut « ^ »). Le troisième
caractère facultatif est celui qui indique, lorsqu'on le trouve en début de
mot que le reste de la ligne est un commentaire (normalement « # »). Ce
caractère de commentaire empêche le développement de l'historique pour tous
les mots restants sur la ligne. Il ne conduit pas nécessairement l'analyseur
de l'interpréteur à considérer le reste de la ligne comme un commentaire.
Tableaux
Bash fournit des variables de type tableau indicé ou associatif, à une
dimension. Toute variable peut être utilisée comme tableau indicé ; la
commande interne declare peut servir à déclarer explicitement un
tableau. Il n'y a pas de limitation maximale à la taille d'un tableau, ni
d'obligation à indicer les éléments ou les affecter de façon contiguë. Les
tableaux indicés sont consultés avec des entiers (évaluations arithmétiques
comprises) commençant à zéro ; les tableaux associatifs sont consultés avec
des chaînes arbitraires. Sauf mention contraire, les indices de tableaux
indicés ne doivent pas être des entiers négatifs.
Un tableau indicé est créé automatiquement si une variable quelconque est
affectée en utilisant la syntaxe
nom[indice]=valeur. L'indice est traité comme une
expression arithmétique et doit s'évaluer en un nombre. declare -a nom
permet de déclarer explicitement un tableau indicé (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). declare -a nom[indice] est aussi accepté ; l'indice est ignoré.
Les tableaux associatifs sont créés en utilisant declare -A nom.
Des attributs peuvent être indiqués pour une variable tableau en utilisant
les commandes internes declare et readonly. Les attributs s'appliquent
à tous les éléments d'un tableau.
Les tableaux sont affectés en utilisant l'affectation composée de la forme
nom=(valeur_1 ... valeur_n), où chaque valeur peut être de
la forme [indice]=chaîne. Les affectations de tableau indicé ne
nécessitent rien d’autre que chaîne. Chaque valeur de la liste est
développée en utilisant tous les développements de l'interpréteur décrits
ci-dessous dans
DÉVELOPPEMENTS. Lors de l'affectation de tableaux
indicés, si les crochets et les indices facultatifs sont fournis, les
affectations ont lieu en conséquence ; sinon l'indice de l'élément affecté
est le dernier indice affecté plus un. L'indexation commence à zéro.
Lors de l'affectation à un tableau associatif, les mots d'une affectation
composée peuvent être soit des affectations pour lesquelles un indice est
requis, soit une liste de mots qui est interprétée comme une séquence
alternant clés et valeurs : nom=( clé1 valeur1 clé2 valeur2
...). Elles sont traitées de la même manière que nom=(
[clé1]=valeur1 [clé2]=valeur2 ...). Le premier mot de la
liste détermine comment les autres mots sont interprétés ; toutes les
affectations d'une liste doivent être du même type. Lors de l'utilisation de
paires clé/valeur, les clés ne peuvent pas être absentes ou vides ; une
valeur finale absente est traitée comme une chaîne vide.
Cette syntaxe est aussi acceptée par la commande interne declare. Les
éléments individuels du tableau sont affectés en utilisant la syntaxe
nom[indice]=valeur présentée ci-dessus. Lors de l’affectation
vers un tableau indicé, si nom est indicé avec un nombre négatif, ce
nombre est considéré comme ajouté à l'indice maximal de nom plus un,
ainsi, un indice négatif compte à rebours depuis la fin du tableau et un
indice -1 fait référence au dernier élément du tableau.
L'opérateur += ajoutera à une variable tableau lors d'une affectation en
utilisant la syntaxe d'affectation composée ; consultez
PARAMÈTRES
ci-dessous.
Tout élément d'un tableau est accessible avec la notation
${nom[indice]}. Les accolades sont nécessaires pour éviter
les conflits avec le développement des chemins. Si indice est @ ou
*, le mot se développe en tous les éléments de nom. Ces deux indices
ne diffèrent que lorsque le mot apparaît entre guillemets doubles. Si le mot
est entre guillemets doubles, ${nom[*]} se développe en un seul mot
contenant les valeurs de chaque élément du tableau séparées par le premier
caractère de la variable spéciale
IFS et ${nom[@]}
développe chaque élément de nom en un mot distinct. Quand il n'y a pas
d'élément dans le tableau, ${nom[@]} ne se développe en rien. Si le
développement entre guillemets doubles survient à l'intérieur d'un mot, le
développement du premier paramètre est accolé à la première partie du mot
original et le développement du dernier paramètre est accolé à la dernière
partie du mot original. Le comportement est analogue à celui des paramètres
spéciaux * et @ (consultez Paramètres spéciaux
ci-dessus). ${#nom[indice]} s'évalue en longueur de l'élément
${nom[indice]}. Si l'indice est * ou @, il s'évalue
en nombre d'éléments dans le tableau. Si l'indice utilisé pour référencer
un élément de tableau indicé s'évalue en un nombre négatif, il est considéré
comme ajouté à l'indice maximal du tableau plus un, ainsi, un indice négatif
compte à rebours depuis la fin du tableau et un indice -1 fait référence
au dernier élément du tableau.
Le référencement d'une variable tableau sans indice est équivalent au
référencement d'un tableau avec un indice de 0. Toute référence à une
variable utilisant un indice valable est légale et bash créera un tableau
si nécessaire.
Une variable tableau est considérée configurée si une valeur a été affectée
à un indice. La chaîne NULL est une valeur possible.
Les clefs (indices) d’un tableau peuvent être aussi bien obtenues que les
valeurs. ${!nom[@]} et ${!nom[*]} se développent en
indices assignés dans la variable tableau nom. Le traitement entre
guillemets doubles est similaire au développement des paramètres spéciaux
@ et * entre guillemets doubles.
La commande interne unset sert à détruire les tableaux. unset
nom[indice] détruit l'élément de tableau d'indice indice,
pour à la fois les tableaux indicés et les tableaux associatifs. Les indices
négatifs des tableaux indicés sont traités comme décrit
précédemment. Supprimer le dernier élément d'une variable tableau ne détruit
pas la variable. unset nom, où nom est un tableau, supprime le
tableau entier. unset nom[indice], où indice est un * ou un
@, se comporte différemment selon que nom est un tableau indicé ou
associatif. Si nom est un tableau associatif, la commande détruit
l'élément avec un indice * ou @. Si nom est un tableau indicé,
unset supprime tous les éléments mais ne supprime pas le tableau
lui-même.
Lors de l'utilisation d'un nom de variable avec un indice comme argument
d'une commande comme avec unset, sans utiliser la syntaxe des
développements de mots décrite précédemment, l'argument est sujet au
développement de chemin. Si le développement de chemin n'est pas souhaité,
l'argument doit être protégé.
Les commandes internes declare, local et readonly acceptent toutes
une option -a pour préciser un tableau indicé et une option -A pour
préciser un tableau associatif. Si les deux options sont fournies, -A est
prioritaire. La commande interne read accepte une option -a pour
affecter une liste de mots lus depuis l'entrée standard dans un tableau. Les
commandes internes set et declare affichent les valeurs d'un tableau
d'une façon qui permet de les réutiliser pour des affectations.
DÉVELOPPEMENTS
Les développements sont appliqués à la ligne de commande après avoir été
découpée en mots. Sept types de développements sont effectués : le
développement des accolades, le développement du tilde, le
développement des paramètres et des variables, la substitution de commande, le développement arithmétique, le découpage en mots et le
développement des chemins.
L'ordre des développements est : développement des accolades ; développement
du tilde, des paramètres, des variables et arithmétique, et substitution de
commande (effectuée de la gauche vers la droite) ; découpage en mots ; et
développement des chemins.
Sur les systèmes qui le permettent, un développement supplémentaire a lieu :
la substitution de processus. Il est réalisé en même temps que le
développement du tilde, des paramètres, des variables et arithmétique, et
que la substitution de commande.
Après la réalisation de ces développements, les caractères de protection
présents dans le mot original sont supprimés à moins qu'ils n'aient été
protégés eux-mêmes (suppression des protections)
Seuls le développement des accolades, le découpage en mots et le
développement des chemins peuvent modifier le nombre de mots. Les autres
développements transforment un mot unique en un autre mot unique. La seule
exception à cette règle est le développement de « $@ » et
« ${nom[@]} », ainsi que, dans la plupart des cas, $* et
${name[*]} comme expliqué précédemment (consultez
PARAMÈTRES).
Développement des accolades
Le développement des accolades est un mécanisme permettant de produire
des chaînes quelconques. Il est similaire au développement des chemins,
mais les noms de fichiers produits n'existent pas nécessairement. Les motifs
qui seront développés prennent la forme d'un préambule facultatif, suivi
soit par une série de chaînes séparées par des virgules, soit par
l'expression d'une série entre accolades, et suivi par un post-scriptum
facultatif. Le préambule est inséré devant chacune des chaînes contenues
entre les accolades et le post-scriptum est concaténé à la fin de chacune
des chaînes résultantes, le développement se faisant de gauche à droite.
Plusieurs développements d'accolades peuvent être imbriqués. Les résultats
de chaque développement ne sont pas triés, l'ordre de gauche à droite est
conservé. Par exemple a{d,c,b}e se développe en « ade ace abe ».
Une expression de séquence est de la forme
{x..y[..incr]}, où x et y sont soit des entiers,
soit des lettres uniques, et incr, un incrément facultatif, est un
entier. Lorsqu'il s'agit d'entiers, l'expression est remplacée par la liste
des nombres entre x et y inclus. Les entiers fournis peuvent être
préfixés par 0 pour forcer chaque terme à avoir la même longueur. Si x
ou y commencent par un zéro, l'interpréteur essaiera de forcer tous les
termes créés à la même longueur, en ajoutant des zéros au besoin. S'il
s'agit de lettres, l'expression se développe en l’ensemble des caractères
situés entre x et y, inclus, d'un point de vue lexicographique en
utilisant les paramètres régionaux par défaut de C. Remarquez que x et
y doivent être du même type (entier ou lettre). Si l'incrément est
fourni, il est utilisé comme différence entre chaque terme. L'incrément par
défaut est 1 ou -1 suivant les valeurs de x et y.
Le développement des accolades est effectué avant tout autre développement
et tous les caractères ayant une signification spéciale pour les autres
développements sont conservés dans le résultat. Il s'agit d'une modification
purement littérale. Bash n'effectue aucune interprétation syntaxique du
texte entre les accolades.
Un développement d'accolades correctement formé doit contenir des accolades
ouvrante et fermante non protégées et au moins une virgule non protégée ou
une expression de série correcte. Tout développement d'accolades
incorrectement formé est laissé inchangé. Un { ou un , peuvent être
protégés par une contre-oblique pour éviter d'être considérés comme partie
d'une expression entre accolades. Pour éviter tout conflit avec le
développement des paramètres, la chaîne ${ n'est pas considérée comme
éligible au développement des accolades, et empêche le développement
d'accolades jusqu'au } fermant.
Cette construction est typiquement utilisée comme raccourci lorsque le
préfixe commun aux chaînes à engendrer est plus long que dans les exemples
précédents :
-
mkdir /usr/local/src/bash/{old,new,dist,bugs}
ou
-
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
Le développement des accolades induit une légère incompatibilité 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 inchangées. Bash supprime les accolades dans les mots, après
développement. Par exemple, si le mot file{1,2} est fourni à sh, il
reste inchangé en sortie. En revanche, il est transformé en file1 file2
par bash. Si une compatibilité stricte avec sh est nécessaire, lancez
bash avec l'option +B ou désactivez le développement des accolades
avec l'option +B de la commande set (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
Développement du tilde
Si un mot commence par un caractère tilde (« ~ ») non protégé, tous les
caractères précédant la première barre oblique non protégée (voire tous les
caractères s'il n'y a pas de barre oblique non protégée), sont considérés
comme un préfixe tilde. Si aucun caractère du préfixe tilde n'est
protégé, les caractères suivant le tilde sont traités comme un identifiant de connexion possible. Si cet identifiant de connexion est la chaîne NULL,
le tilde est remplacé par la valeur du paramètre d'interpréteur
HOME. Si
HOME n'existe pas, le répertoire d'accueil de
l'utilisateur exécutant l'interpréteur est utilisé à la place. Sinon le
préfixe tilde est remplacé par le répertoire d'accueil associé à
l'identifiant de connexion indiqué.
Si le préfixe tilde est « ~+ », la valeur de la variable de l'interpréteur
PWD le remplace. Si le préfixe tilde est « ~- », la valeur de la
variable de l'interpréteur
OLDPWD, si existante, lui est
substituée. Si les caractères à la suite du tilde dans le préfixe tilde
représentent un nombre N préfixé facultativement par un « + » ou un « - »
le préfixe tilde est remplacé par l'élément correspondant de la pile de
répertoires telle qu'il serait affiché par la commande interne dirs
appelée avec le préfixe tilde en argument. Si les caractères à la suite du
tilde dans le préfixe tilde représentent un nombre sans un « + » ou « - » en
tête, on suppose qu'il s'agit de « + ».
Si l'identifiant de connexion est incorrect ou si le développement du tilde
échoue, le mot est inchangé.
Chaque affectation de variable vérifie immédiatement la présence de préfixes
tilde non protégés suivant un : ou le premier =. Dans ces cas, le
développement des tildes est aussi effectué. On peut donc utiliser des noms
de fichiers avec des tildes dans des affectations de
PATH,
MAILPATH et
CDPATH et l'interpréteur affectera la valeur
développée.
Bash effectue aussi le développement des tildes sur les mots satisfaisant
les conditions d'affectations de variable (comme décrit précédemment dans
PARAMÈTRES) quand elles apparaissent comme arguments de commandes
simples. Bash ne le fait pas en mode POSIX sauf pour les commandes de
déclaration listées ci-dessus.
Développement des paramètres
Le caractère « $ » permet d'introduire le développement des paramètres,
la substitution de commande ou le développement arithmétique. Le nom du
paramètre ou du symbole à développer peut être encadré par des accolades
facultatives mais permettant d'éviter le développement de la variable à
partir de caractères la suivant immédiatement et qui pourraient être
considérés comme appartenant à son nom.
Lorsque les accolades sont utilisées, l'accolade de fin correspondante est
le premier caractère « } » ni protégé par une contre-oblique, ni inclus
dans une chaîne protégée, un développement arithmétique, une substitution de
commande ou un développement des paramètres.
- ${paramètre}
-
est remplacé par la valeur du paramètre. Les accolades sont nécessaires
quand le paramètre est un paramètre positionnel ayant plusieurs chiffres,
ou si le paramètre est suivi de caractères n'appartenant pas à son
nom. Le paramètre est un paramètre d’interpréteur (comme décrit
précédemment dans PARAMÈTRES) ou une référence de tableau (Tableaux).
Si le premier caractère du paramètre est un point d'exclamation (!),
et si le paramètre n'est pas un nameref, il introduit un niveau
d'indirection de variable. Bash utilise la valeur formée par le
développement du reste du paramètre en tant que nouveau
paramètre. Cette variable est alors développée et la valeur utilisée pour
le reste du développement plutôt que le développement du paramètre
original. On appelle ce mécanisme le développement indirect. La valeur
est sujette au développement de tildes et de paramètres, à la substitution
de commande ou au développement arithmétique. Si le paramètre est un
nameref, le développement porte sur le nom du paramètre référencé par le
paramètre plutôt que sur le développement indirecte complet. Les
exceptions à cela sont les développements de ${!préfixe*} et de
${!nom[@]} décrits ci-dessous. Le point d'exclamation doit
immédiatement suivre l'accolade ouvrante afin d'introduire l'indirection.
Dans chacun des cas ci-dessous, le mot est soumis au développement de
tilde, au développement des paramètres, à la substitution de commande et au
développement arithmétique.
Quand il n'effectue pas de développement de sous-chaîne, en utilisant les
formes documentées ci-dessous (par exemple :-), bash teste si le
paramètre est inexistant ou NULL. L'absence de deux-points induit un test
sur la seule inexistence du paramètre.
- ${paramètre:-mot}
-
Utilisation de valeur par défaut. Si le paramètre est inexistant ou
NULL, le développement du mot est substitué. Sinon, c'est la valeur du
paramètre qui est substituée.
- ${paramètre:=mot}
-
Affectation de valeur par défaut. Si le paramètre est inexistant ou
NULL, le développement du mot lui est affecté. La valeur du paramètre
est alors substitué. Les paramètres positionnels et spéciaux ne peuvent pas
être affectés de cette façon.
- ${paramètre:?mot}
-
Affichage d'erreur si NULL ou inexistant. Si le paramètre est
inexistant ou NULL, le développement du mot (ou un message approprié si
aucun mot n'est fourni) est affiché sur la sortie d'erreur standard et
l'interpréteur termine, s'il n'est pas interactif. Sinon, la valeur du
paramètre est substituée.
- ${paramètre:+mot}
-
Utilisation de valeur alternative. Si le paramètre est NULL ou
inexistant, rien n'est substitué. Sinon le développement du mot est
substitué.
- ${paramètre:début}
-
- ${paramètre:début:longueur}
-
Développement des sous-chaînes. Se développe pour fournir la sous-chaîne
de longueur indiquée (en caractère) commençant au début. Si le
paramètre est @ ou *, un tableau indicé par @ ou *, ou un nom
de tableau associatif, le résultat diffère comme décrit ci-dessous. Si la
longueur est omise, fournit la sous-chaîne commençant au caractère
indiqué par début et s'étendant jusqu'à la fin de la valeur. La
longueur et le début sont des expressions arithmétiques (consultez
ÉVALUATION ARITHMÉTIQUE ci-dessous).
Si le début est négatif, sa valeur est considérée à partir de la fin du
contenu du paramètre. Si longueur est négatif, sa valeur est
considérée comme une position en caractère à partir de la fin de la valeur
du paramètre plutôt que comme un nombre de caractères, et le
développement est constitué des caractères entre le début et cette
position. Remarquez que les positions négatives doivent être séparées des
deux-points par au moins une espace pour éviter d’être confondues avec le
développement de :-.
Si le paramètre est @ ou *, le résultat correspond à
longueurparamètres positionnels commençant au début. Une valeur
négative de début est considérée relative au plus grand paramètre
positionnel plus un (ainsi un indice -1 fait référence au dernier paramètre
positionnel). C’est une erreur de développement si longueur est évaluée
en nombre négatif.
Si le paramètre est un nom de tableau indicé par @ ou *, le
résultat est les longueur éléments du tableau commençant à
${paramètre[début]}. Une valeur négative de début est
prise relativement à la valeur maximale de l'indice du tableau considéré
plus un. C’est une erreur de développement si longueur est évaluée en
nombre négatif.
Le développement de sous-chaîne appliqué à un tableau associatif produit des
résultats non définis.
L'indexation des sous-chaînes commence à zéro, sauf pour les paramètres
positionnels pour lesquels l'indexation commence à 1 par défaut. Si début
est 0, et que les paramètres positionnels sont utilisés, la liste est
préfixée par $0.
- ${!préfixe*}
-
- ${!préfixe@}
-
Noms correspondant au préfixe. Se développe en noms des variables dont
les noms commencent par préfixe, séparés par le premier caractère de la
variable spéciale
IFS. Si @ est utilisé et que le développement
apparaît entre guillemets doubles, chaque nom de variable se développe
séparément.
- ${!nom[@]}
-
- ${!nom[*]}
-
Liste des clefs du tableau. Si nom est une variable de type tableau,
elle se développe en liste des indices (clefs) du tableau affecté à
nom. Si nom n'est pas un tableau, se développe en 0 si nom
existe et en NULL sinon. Quand @ est utilisé et que le développement
apparaît entre guillemets doubles, chaque clef se développe en un mot
séparé.
- ${#paramètre}
-
Longueur du paramètre. Est remplacé par la longueur, en caractères, de la
valeur du paramètre. Si le paramètre est * ou @, la valeur est
le nombre de paramètres positionnels. Si le paramètre est un nom de
tableau indicé par * ou @, la valeur donnée est le nombre d'éléments
du tableau. Si le paramètre est un nom de tableau indicé par un nombre
négatif, ce nombre est considéré comme ajouté à l'indice maximal de
paramètre plus un (ainsi un indice négatif compte à rebours depuis la fin
du tableau et un indice -1 fait référence au dernier élément).
- ${paramètre#mot}
-
- ${paramètre##mot}
-
Retrait du motif correspondant au préfixe. Le mot est développé pour
fournir un motif, comme dans le développement des chemins et mis en
correspondance avec la valeur développée du paramètre avec les règles
décrites dans Motifs génériques ci-dessous. Si le motif correspond au
début de la valeur du paramètre, alors le développement prend la valeur
développée du paramètre après suppression du plus court (cas « # ») ou
du plus long (cas « ## ») motif correspondant. Si le paramètre est
@ ou *, l'opération de suppression de motif est appliquée à chaque
paramètre positionnel tour à tour et le développement est la liste
résultante. Si le paramètre est une variable tableau indicée par @ ou
*, l'opération de suppression de motif est appliquée à chaque élément du
tableau tour à tour et le développement est la liste résultante.
- ${paramètre%mot}
-
- ${paramètre%%mot}
-
Retrait du motif correspondant au suffixe. Le mot est développé pour
fournir un motif, comme dans le développement des chemins et mis en
correspondance avec la valeur développée du paramètre avec les règles
décrites dans Motifs génériques ci-dessous. Si le motif correspond à une
portion finale de la valeur développée du paramètre, alors le
développement prend la valeur développée du paramètre après suppression
du plus court (cas « % ») ou du plus long (cas « %% ») motif
correspondant. Si le paramètre est @ ou *, l'opération de
suppression de motif est appliquée à chaque paramètre positionnel tour à
tour et le développement est la liste résultante. Si le paramètre est une
variable tableau indicée par @ ou *, l'opération de suppression de
motif est appliquée à chaque élément du tableau tour à tour et le
développement est la liste résultante.
- ${paramètre/motif/chaîne}
-
- ${paramètre//motif/chaîne}
-
- ${paramètre/#motif/chaîne}
-
- ${paramètre/%motif/chaîne}
-
Substitution de motif. Le motif est développé produire un motif comme
dans le développement des chemins. Le paramètre est développé et la plus
longue portion correspondant au motif est remplacée par la chaîne. La
chaîne est sujette au développement du tilde, des paramètres et des
variables, au développement arithmétique, à la substitution de commande et
de processus, et à la suppression des protections. La mise en correspondance
est réalisée en utilisant les règles décrites dans Motifs génériques
ci-dessous. Dans la première forme ci-dessus, seule la première
correspondance est remplacée. S'il y a deux barres obliques séparant le
paramètre et le motif, (la seconde forme ci-dessus) toutes les
correspondances au motif sont remplacées par la chaîne. Si le motif
est précédé par # (la troisième forme ci-dessus), il doit correspondre au
début de la valeur développée du paramètre. Si le motif est précédé
par % (la quatrième forme ci-dessus), il doit correspondre à la fin de la
valeur du développement du paramètre. Si la chaîne est NULL, les
portions correspondant au motif sont supprimées et le / suivant le
motif peut être omis.
Si l'option d'interpréteur patsub_replacement est activée en utilisant
shopt, toutes les instances non protégées de & dans la chaîne sont
remplacées par la partie correspondante du motif.
La protection d'une partie de la chaîne empêche les remplacements dans le
développement de la partie protégée, y compris le remplacement des chaînes
stockées dans les variables de l'interpréteur. La contre-oblique protégera
& dans la chaîne ; la contre-oblique est supprimée afin de permettre
un & littéral dans la chaîne de remplacement. La contre-oblique peut
aussi être utilisée pour protéger une contre-oblique ; \\ résulte en
une contre-oblique littérale dans le remplacement. Les utilisateurs doivent
faire attention si la chaîne est protégée entre des guillemets doubles
pour éviter des interactions non souhaitées entre la contre-oblique et les
guillemets doubles, dans la mesure où la contre-oblique a une signification
particulière avec des guillemets doubles. La substitution de motif réalise
la vérification de la présence de & non protégée après le développement
de chaîne ; les développeurs de programmes d’interpréteur doivent
protéger toutes les occurrences de & qu'ils souhaitent être traitées
littéralement dans le remplacement et s'assurer que toutes les instances de
& qu'ils souhaitent voir remplacées ne soient pas protégées.
Si l'option d'interpréteur nocasematch est activée, la mise en
correspondance est réalisée sans tenir compte de la casse des caractères
alphabétiques. Si le paramètre est @ ou *, la substitution est
appliquée à chaque paramètre positionnel tour à tour et le développement est
la liste résultante. Si le paramètre est une variable tableau indicée par
@ ou *, l'opération de substitution est appliquée à chaque élément du
tableau tour à tour et le développement est la liste résultante.
- ${paramètre^motif}
-
- ${paramètre^^motif}
-
- ${paramètre,motif}
-
- ${paramètre,,motif}
-
Modification de la casse. Ce développement modifie la casse des
caractères alphabétiques du paramètre. Le motif est développé pour
fournir un motif, comme dans le développement des chemins. Chaque caractère
de la valeur développée du paramètre est testé par rapport au motif
et, en cas de correspondance, sa casse est convertie. Le motif ne devrait
pas essayer de correspondre à plus d’un caractère. L'opérateur ^
convertit les lettre minuscules correspondant à ce motif en majuscules ;
l'opérateur , convertit les lettre majuscules correspondant à ce motif
en minuscules. Les développements ^^ et ,, convertissent tous les
caractères correspondant à leur valeur développée ; les développements ^
et , convertissent seulement le premier caractère de la valeur développée
correspondant. Si motif est omis, il est traité comme un ?, ce qui
correspond à n'importe quel caractère. Si le paramètre est @ ou *,
la modification de casse s'applique à chaque paramètre positionnel tour à
tour et le développement est la liste résultante. Si le paramètre est une
variable tableau indicée par @ ou *, la modification de casse
s'applique à chaque élément du tableau tour à tour et le développement est
la liste résultante.
- ${paramètre@opérateur}
-
Transformation de paramètre. Le développement est soit une transformation
de la valeur du paramètre ou des informations sur paramètre lui-même,
selon la valeur de opérateur. Chaque opérateur est une lettre unique :
-
- U
-
Le développement est une chaîne qui est la valeur de l'argument avec des
caractères alphabétiques en minuscule convertis en majuscule.
- u
-
Le développement est une chaîne qui est la valeur de l'argument avec son
premier caractère converti en majuscule, si c'est un caractère alphabétique.
- L
-
Le développement est une chaîne qui est la valeur de l'argument avec les
caractères alphabétiques en majuscule convertis en minuscule.
- Q
-
Le développement est une chaîne qui est la valeur de l'argument protégée
dans un format réutilisable en entrée de l'interpréteur.
- E
-
Le développement est une chaîne qui est la valeur du paramètre avec des
suites de caractères de protection par contre-oblique développée comme avec
le mécanisme de protection $'...'.
- P
-
Le développement est une chaîne qui est le résultat du développement de
lavaleur du paramètre comme s'il s'agissait d'une chaîne d'invite
(consultez INVITES ci-dessous).
- A
-
Le développement est une chaîne sous la forme d'une affectation ou d'une
commande declare qui, lorsqu'elle est évaluée, recréera paramètre avec
sa valeur et ses attributs.
- K
-
Produit une version potentiellement protégée de la valeur de l'argument,
sauf qu'il affiche les valeurs des tableaux indicés et associatifs comme une
séquence de paires clé/valeur protégées (consultez Tableaux ci-dessus).
- a
-
Le développement est une chaîne consistant en valeurs d'indicateur
représentant les attributs de paramètre.
- k
-
Comme la transformation K, mais développe les clés et les valeurs des
tableaux indicés et associatifs pour séparer les mots après le découpage en
mots.
Si le paramètre est @ ou *, l'opération est appliquée à chaque
paramètre positionnel tour à tour et le développement est la liste
résultante. Si le paramètre est une variable tableau indicée par @ ou
*, l'opération est appliquée à chaque élément du tableau tour à tour et
le développement est la liste résultante.
Le résultat du développement est sujet au découpage en mots et au
développement des chemins comme décrit ci-dessous.
Substitution de commande
La substitution de commande permet de remplacer le nom d'une commande par
son résultat. Il en existe deux formes :
-
$(commande)
ou
-
`commande`
Bash effectue le développement en exécutant la commande dans un
environnement de sous-interpréteur et en remplaçant la substitution de
commande par sa sortie standard dont les éventuels sauts de lignes finaux
sont supprimés. Les changements de ligne internes ne sont pas supprimés mais
peuvent disparaître lors du découpage en mots. La substitution de commande
$(cat fichier) peut être remplacée par l'équivalent plus rapide
$(< fichier).
Quand l'ancienne forme de substitution avec les accents graves « ` » est
utilisée, le caractère contre-oblique garde sa signification propre sauf
lorsqu'il est suivi de $, ` ou \. Le premier accent grave non
protégé par une contre-oblique termine la substitution de commande. Quand on
utilise la forme $(commande), tous les caractères entre parenthèses
constituent la commande ; aucun n'est traité spécifiquement.
Les substitutions de commande peuvent être imbriquées. Pour imbriquer en
utilisant la forme à accents graves, il faut protéger les accents graves
internes avec des contre-obliques.
Si la substitution apparaît entre guillemets doubles, le découpage en mots
et le développement des chemins ne sont pas effectués sur ses résultats.
Développement arithmétique
Le développement arithmétique permet de remplacer une expression
arithmétique par le résultat de son évaluation. Le format du développement
arithmétique est :
-
$((expression))
L'ancien format $[expression] est obsolète et sera supprimé dans
les prochaines versions de bash.
L'expression est traitée comme si elle était entre guillemets doubles,
mais des caractères guillemet double dans l'expression ne sont pas traités
spécifiquement et sont supprimés. Tous les lexèmes dans l'expression sont
sujets au développement des paramètres et des variables, à la substitution
de commande et à la suppression des protections. Le résultat est traité
comme l’expression arithmétique à évaluer. Les développements arithmétiques
peuvent être imbriqués.
L'évaluation est effectuée en suivant les règles décrites ci-dessous dans
ÉVALUATION ARITHMÉTIQUE. Si l'expression est incorrecte,
bash affiche un message indiquant l'échec et aucune substitution n'a
lieu.
Substitution de processus
La substitution de processus permet à une entrée ou une sortie d'un
processus d’être référencée en utilisant un nom de fichier. Elle prend la
forme <(liste) ou >(liste). La liste de
processus est exécutée de façon asynchrone est son entrée ou sortie apparaît
comme un nom de fichier. Le nom de ce fichier est passé en argument à la
commande actuelle comme résultat de ce développement. Si on utilise la forme
>(liste), le fichier passé en argument devra être lu pour
obtenir la sortie de la liste. La substitution de processus est prise en
charge sur les systèmes acceptant le mécanisme des tubes nommés (FIFO) ou
la méthode /dev/fd de nommage de fichiers ouverts.
Sur les systèmes qui le permettent, la substitution de processus est
effectuée simultanément au développement des paramètres et variables, à la
substitution de commande et au développement arithmétique.
Découpage en mots
Les résultats du développement des paramètres, de la substitution de
commande et du développement arithmétique qui ne se trouvent pas entre
guillemets doubles sont analysés par l'interpréteur afin d'appliquer le
découpage en mots.
L'interpréteur considère chaque caractère du paramètre
IFS comme
un délimiteur et découpe le résultat des autres développements en mots
utilisant ces caractères comme terminaisons de champ. Si
IFS est
inexistante ou si sa valeur est exactement
<espace><tab><changement_de_ligne>, la valeur par
défaut, alors les suites de caractères <espace>, <tab>
et <changement_de_ligne> au début ou à la fin du résultat des
développements précédents sont ignorés, et toute suite de caractères de
IFS ni au début ni à la fin sert à délimiter les mots. Si
IFS a une valeur autre que celle par défaut, alors les suites de
caractères blancs espace et tabulation et changement_de_ligne sont
ignorées en début et fin de mot, à condition que ces caractères blancs se
trouvent dans la valeur de
IFS (un caractère blanc de
IFS). Tout caractère de
IFS qui n'est pas un caractère blanc,
se trouvant à côté d'un caractère blanc de
IFS, délimite un
champ. Une suite de caractères blancs de
IFS est également traitée
comme un délimiteur. Si la valeur de
IFS est NULL, aucun découpage
en mots n'a lieu.
Les arguments NULL explicites ("" ou '') sont
conservés et passés à des commandes comme chaînes vides. Les arguments NULL
implicites non protégés, résultant du développement des paramètres qui n'ont
pas de valeurs, sont supprimés. Si un paramètre sans valeur est développé
entre guillemets doubles, le résultat est un argument NULL qui est conservé
et passé à une commande comme une chaîne vide. Quand un argument NULL
protégé apparaît comme appartenant à un mot dont l'expansion n'est pas NULL,
l'argument NULL est supprimé. C'est-à-dire que le mot -d''
devient -d après le découpage en mots et le retrait de l'argument NULL.
Remarquez que si aucun développement n'a lieu, le découpage en mots n'est
pas effectué.
Développement des chemins
Après le découpage en mots, à moins que l'option -f soit présente,
bash recherche dans chaque mot les caractères *, ? et [. Si l'un
d'eux apparaît et n'est pas protégé, le mot est considéré comme un motif
et remplacé par une liste, classée par ordre alphabétique, de noms de
fichiers correspondant à ce motif (consultez
Motifs génériques
ci-dessous). Si aucun nom de fichier ne correspond et si l'option
d'interpréteur nullglob n'est pas activée, le mot reste inchangé. Si
l'option nullglob existe et si aucune correspondance n'est trouvée, le
mot est supprimé. Si l'option d'interpréteur failglob existe et si aucune
correspondance n'est trouvée, un message d'erreur est affiché et la commande
n'est pas exécutée. Si l'option d'interpréteur nocaseglob est activée, la
correspondance est effectuée sans tenir compte de la casse des caractères
alphabétiques. Remarquez que lorsque des expressions d’intervalle comme
[a-z] (voir ci-dessous) sont utilisées, les lettres de l'autre casse peuvent
être incluses, selon le paramétrage de LC_COLLATE. Quand un motif est
utilisé pour le développement des chemins, le caractère « . » au début
d'un nom ou immédiatement à la suite d'une barre oblique doit être
explicitement mis en correspondance, à moins que l'option d'interpréteur
dotglob n'existe. Pour être mis en correspondance avec les noms de
fichier « . » et « .. », le motif doit débuter par un « . (par
exemple, « .? »), même si l'option dotglob existe. Si l'option
d'interpréteur globskipdots est activée, les noms de fichier « . » et
« .. » ne sont jamais mis en correspondance, même si le motif débute par
un « .. Quand il ne s'agit pas de correspondance avec des chemins, le
caractère « . » n'est pas traité spécifiquement. Lors de la
correspondance avec un chemin, le caractère barre oblique doit toujours être
mis en correspondance explicitement par une barre oblique dans le motif,
mais dans les autres contextes de correspondance, il peut être mis en
correspondance par un caractère de motif spécial comme décrit ci-dessous
dans
Motifs génériques. Voyez la description de la commande
shopt dans
COMMANDES INTERNES DE L'INTERPRÉTEUR pour une
description des options d'interpréteur nocaseglob, nullglob,
globskipdots, failglob et dotglob.
La variable de l'interpréteur
GLOBIGNORE peut servir à restreindre
l'ensemble des noms de fichiers correspondant à un motif. Si
GLOBIGNORE existe, chaque nom de fichier qui correspond aussi à un motif
de
GLOBIGNORE est supprimé de la liste des correspondances. Si
l'option nocaseglob existe, la mise en correspondance avec les motifs
dans
GLOBIGNORE est réalisée sans tenir compte de la casse. Les
noms de fichiers « . » et « .. » sont toujours ignorés quand
GLOBIGNORE existe et n'est pas NULL. Toutefois, configurer
GLOBIGNORE avec une valeur non NULL a pour effet d'activer l'option
d'interpréteur dotglob, ainsi tous les autres noms de fichiers commençant
par « . » correspondront. Pour obtenir l'ancien comportement ignorant les
noms commençant par « . », placez « .* » dans l'un des motifs de
GLOBIGNORE. L'option dotglob est désactivée si la variable
GLOBIGNORE est inexistante. La correspondances de motifs respecte
la configuration de l'option d'interpréteur extglob.
Motifs génériques
Tout caractère apparaissant dans un motif, hormis les caractères spéciaux
décrits ci-dessous, correspond à lui-même. Le caractère NUL ne peut pas se
trouver dans un motif. Une contre-oblique protège le caractère qui la suit ;
la contre-oblique de protection est supprimée lors de la recherche de
correspondance. Les caractères spéciaux de motifs doivent être protégés
s'ils sont destinés à une correspondance littérale.
Les caractères spéciaux ont les significations suivantes :
-
- *
-
Correspond à n'importe quelle chaîne, y compris la chaîne NULL. Si l'option
globstar de l'interpréteur est activée, et que * est utilisé dans un
contexte de développement des chemins, deux * adjacents sont utilisés
pour un seul motif correspondant à tous les fichiers et zéro ou plus de
répertoires et sous-répertoires. Lorsqu'il sont suivis de /, deux *
adjacents correspondront seulement aux répertoires et sous-répertoires.
- ?
-
Correspond à n'importe quel caractère.
- [...]
-
Correspond à tout caractère entre les crochets. Un couple de caractères
séparés par un trait d'union indique une expression d’intervalle ; tout
caractère qui correspond à n'importe quel caractère situé entre les deux
bornes incluses, en utilisant les suites de collations et le jeu de
caractères des paramètres linguistiques régionaux actuels, est capturé. Si
le premier caractère suivant le [ est un ! ou un ^ alors la
correspondance se fait sur tous les caractères hors intervalle. L'ordre de
tri des caractères dans les expressions d’intervalle et les caractères
inclus dans l'intervalle sont déterminés par les paramètres linguistiques
régionaux actuels et par les valeurs des variables de l'interpréteur
LC_COLLATE et
LC_ALL si existantes. Pour obtenir
l’interprétation traditionnelle des expressions d’intervalle, où [a-d]
est équivalent à [abcd], configurez la valeur de la variable
d’interpréteur LC_ALL à C ou activez l’option d’interpréteur
globasciiranges. Un - peut faire partie du motif de correspondance à
condition d’être le premier ou le dernier caractère de l'ensemble. Un ]
peut faire partie du motif de correspondance à condition d’être le premier
caractère de l'ensemble.
Entre [ et ], on peut indiquer une classe de caractère en utilisant
la syntaxe [:classe:], où classe est l'une des classes
suivantes, définies dans la norme POSIX :
-
alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
Une classe correspond à n'importe quel caractère qui s'y trouve. La classe
de caractères word correspond aux lettres, aux chiffres et au caractère
souligné « _ ».
Entre [ et ], on peut indiquer une classe d'équivalence en
utilisant la syntaxe [=c=] qui correspond à n'importe quel
caractère ayant le même poids de collation (comme indiqué par les paramètres
linguistiques régionaux actuels) que le caractère c.
Entre [ et ], la syntaxe [.symbole.] correspond au symbole de
collation symbole.
Si l'option extglob d'interpréteur est activée par la commande interne
shopt l'interpréteur reconnaît plusieurs opérateurs de correspondance
étendue. Dans la description suivante, une liste-motif est une liste d'un
ou plusieurs motifs séparés par des |. Les motifs composés sont formés en
utilisant un ou plusieurs sous-motifs comme suit :
-
- ?(liste-motif)
-
Correspond à zéro ou une occurrence des motifs indiqués.
- *(liste-motif)
-
Correspond à zéro ou plusieurs occurrences des motifs indiqués.
- +(liste-motif)
-
Correspond à une ou plusieurs occurrences des motifs indiqués.
- @(liste-motif)
-
Correspond à une occurrence exactement des motifs indiqués.
- !(liste-motif)
-
Correspond à tout sauf l'un des motifs indiqués.
L'option extglob d'interpréteur modifie le comportement de l'analyseur
dans la mesure où les parenthèses sont normalement traitées comme des
opérateurs avec une signification syntaxique. Pour être sûr que les motifs
développés mis en correspondance sont analysés correctement, il faut
s'assurer que extglob est activé avant d'analyser les constructions
contenant les motifs, y compris les fonctions de l'interpréteur et les
substitutions de commande.
Lors de la correspondance avec des noms de fichier, l'option de
l'interpréteur dotglob détermine l'ensemble de noms de fichiers à
tester : quand dotglob est activé, l'ensemble de noms de fichier inclut
tous les fichiers commençant par « . », mais « . » et « .. »
doivent être mis en correspondance avec un motif ou un sous-motif qui
commence par un point ; quand dotglob est désactivé, l'ensemble ne
comprend pas tous les fichiers commençant par « . », à moins que le motif
ou le sous-motif débute par un « . ». Comme précédemment, « . » tout
seul a une signification particulière lors de la correspondance avec des
noms de fichiers.
La mise en correspondance de motifs étendus complexes avec de longues
chaînes est lente surtout quand les motifs contiennent des alternances et
les chaînes contiennent plusieurs correspondances. L'utilisation de
correspondances séparées avec des chaînes plus courtes ou en utilisant des
tableaux de chaînes à la place d'une longue chaîne unique peut être plus
court.
Suppression des protections
Après les développements précédents, toutes les occurrences non protégées
des caractères \, ' et " qui ne résultent pas d'un des
développements ci-dessus sont supprimées.
REDIRECTIONS
Avant qu'une commande ne soit exécutée, il est possible de rediriger son
entrée ou sa sortie en utilisant une notation spéciale prise en compte par
l'interpréteur. La redirection permet aux descripteurs de fichier d’être
dupliqués, ouverts, fermés, de faire référence à d’autres fichiers et peut
modifier les fichiers lus et écrits par la commande. Les redirections
permettent également de modifier les descripteurs de fichier dans
l'environnement d’exécution actuel de l'interpréteur. Les opérateurs de
redirection suivants peuvent précéder ou apparaître n'importe où dans une
commande simple ou suivre une commande. Les redirections sont traitées
dans leur ordre d'apparition, de gauche à droite.
Toutes les redirections pouvant être précédées par un numéro de descripteur
de fichier peuvent aussi être précédées par un mot de la forme
{nom_de_variable}. Dans ce cas, pour chaque opérateur de redirection à
part >&- et <&-, l'interpréteur de commande allouera un descripteur
de fichier supérieur ou égal à 10 et l'affectera à nom_de_variable. Si
>&- ou <&- sont précédés de {nom_de_variable}, la valeur de
nom_de_variable définit le descripteur de fichier à fermer. Si
{nom_de_variable} est fournie, la redirection persiste au-delà de la
portée de la commande, permettant au programmeur de l'interpréteur de gérer
manuellement la durée de vie du descripteur de fichier. L'option de
l'interpréteur varredir_close gère ce comportement.
Dans les descriptions suivantes, si le numéro de descripteur de fichier est
omis et si le premier caractère de l'opérateur de redirection est <,
la redirection se rapporte à l'entrée standard (descripteur de fichier
0). Si le premier caractère de l'opérateur de redirection est >,
la redirection se rapporte à la sortie standard (descripteur de fichier
1).
Le mot qui suit l'opérateur de redirection dans les descriptions suivantes,
à moins qu'il en soit fait état autrement, est soumis au développement des
accolades, du tilde, des paramètres et des variables, à la substitution de
commande, au développement arithmétique, à la suppression des protections,
au développement des chemins et au découpage en mots. S'il se développe en
plusieurs mots, bash signale une erreur.
Remarquez que l'ordre des redirections est important. Par exemple, la
commande
-
ls > liste_répertoires 2>&1
redirige à la fois la sortie standard et la sortie d'erreur standard vers le
fichier liste_répertoires, alors que la commande
-
ls 2>&1 > liste_répertoires
ne redirige que la sortie standard vers le fichier liste_répertoires, car
la sortie d'erreur standard a été dupliquée de la sortie standard avant que
celle-ci ne soit redirigée vers liste_répertoires.
Bash gèrent plusieurs noms de fichier spécifiquement quand ils sont
utilisés dans des redirections. Si le système d'exploitation sur lequel
bash s'exécute fournit ces fichiers spéciaux, bash les utilise ;
sinon, il les émule en interne avec le comportement décrit ci-dessous.
-
- /dev/fd/df
-
Si df est un entier correct, le descripteur de fichier df est
dupliqué.
- /dev/stdin
-
Le descripteur de fichier 0 est dupliqué.
- /dev/stdout
-
Le descripteur de fichier 1 est dupliqué.
- /dev/stderr
-
Le descripteur de fichier 2 est dupliqué.
- /dev/tcp/hôte/port
-
Si hôte est un nom de machine ou une adresse Internet corrects et si
port est un numéro de port entier ou un nom de service, bash tentera
d'ouvrir le socket TCP correspondant.
- /dev/udp/hôte/port
-
Si hôte est un nom de machine ou une adresse Internet corrects et si
port est un numéro de port entier ou un nom de service, bash tentera
d'ouvrir le socket UDP correspondant.
Un échec à l'ouverture ou à la création de fichier conduit à l'échec de la
redirection.
Les redirections utilisant des descripteurs de fichier supérieurs à 9
doivent être utilisées avec précaution, car des conflits peuvent survenir
avec les descripteurs de fichier utilisés en interne par l'interpréteur.
Notez que la commande interne exec peut faire appliquer les redirections
à l'interpréteur de commande en cours.
Redirection d'entrée
Une redirection d'entrée conduit à l'ouverture en lecture avec le
descripteur de fichier numéro n du fichier dont le nom résulte du
développement du mot ou en tant qu'entrée standard (descripteur de
fichier 0) si n n'est pas indiqué.
Le format général des redirections d'entrée est :
-
[n]<mot
Redirection de sortie
Une redirection de sortie conduit à l'ouverture en écriture du fichier dont
le nom résulte du développement du mot avec comme descripteur de fichier
n ou en tant que sortie standard (descripteur de fichier 1) si n n'est
pas indiqué. Si le fichier n'existe pas, il est créé. S'il existait déjà, sa
taille est réduite à zéro.
Le format général des redirections de sortie est le suivant :
-
[n]>mot
Si l'opérateur de redirection est > et si l'option noclobber de la
commande interne set est activée, la redirection échouera si le fichier
dont le nom résulte du développement du mot existe et est un fichier
normal. Si l'opérateur de redirection est >| ou l'opérateur >
avec l'option noclobber de la commande interne set n'est pas activée,
la redirection sera tentée même si le fichier dont le nom résulte du
développement du mot existe.
Ajout d'une sortie redirigée
La redirection de la sortie de cette façon conduit à l'ouverture du fichier
dont le nom résulte du développement du mot pour ajouter au descripteur
de fichier n ou à la sortie standard (descripteur de fichier 1) si n
n'est pas indiqué. Si le fichier n'existe pas, il est créé.
Le format général 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 simultanée de la sortie standard
(descripteur 1) et de la sortie d'erreur standard (descripteur 2), dans un
fichier dont le nom est le résultat du développement du mot.
Il y a deux formes pour rediriger les sortie standard et sortie d'erreur
standard :
-
&>mot
et
-
>&mot
La première des deux formes est préférée. C'est sémantiquement équivalent à
-
>mot 2>&1
En utilisant la deuxième forme, mot ne peut pas être développé en nombre
ou -. Si c’est le cas, les autres opérateurs de redirection s’appliquent
(consultez
Dédoublement de descripteurs de fichier ci-dessous)
pour des raisons de compatibilité.
Ajout de la sortie standard et de la sortie d'erreur standard
Cette construction permet l'ajout simultané de la sortie standard
(descripteur 1) et de la sortie d'erreur standard (descripteur 2), dans un
fichier dont le nom est le résultat du développement du mot.
La forme pour ajouter les sortie standard et sortie d'erreur standard est :
-
&>>mot
C'est sémantiquement équivalent à
-
>>mot 2>&1
(consultez
Dédoublement de descripteurs de fichier ci-dessous).
Document en ligne
Ce type de redirection commande à l'interpréteur de lire son entrée de la
source actuelle jusqu'à ce qu'il voit une ligne contenant seulement le
délimiteur prévu (sans blancs finaux). Toutes les lignes lues jusqu'à ce
point sont ensuite utilisées comme entrée standard (ou comme descripteur de
fichier n, si n est spécifié) pour une commande.
Le format des documents en ligne est le suivant :
-
[n]<<[-]mot
document_en_ligne
délimiteur
Aucun développement des paramètres ou des variables, ni substitution de
commande, ni développement arithmétique ou des chemins n’est effectué sur le
mot. Si une partie du mot est protégée, le délimiteur est le
résultat de la suppression des protections sur mot et les lignes du
document_en_ligne ne sont pas développées. Si mot n'est pas protégé,
toutes les lignes du document_en_ligne sont soumises au développement des
paramètres, à la substitution de commande et au développement arithmétique,
la suite de caractères \<changement_de_ligne> est ignorée et
\ doit être utilisée pour protéger les caractères \, $ et `.
Si l'opérateur de redirection est <<-, alors les tabulations en
tête de chaque ligne sont supprimées de l'entrée, y compris dans la ligne
contenant délimiteur. Cela permet d'indenter de façon naturelle les
documents en ligne au sein des scripts.
Chaînes en ligne
Une variante aux documents en ligne, le format est :
-
[n]<<<mot
Le mot est sujet au développement du tilde, des paramètres et des
variables, à la substitution de commande, au développement arithmétique et à
la suppression des protections. Ni le développement des chemins, ni le
découpage en mots ne sont réalisés. Le résultat est fourni comme une seule
chaîne, avec l'ajout d'un caractère de changement de ligne, à la commande
sur son entrée standard (ou sur le descripteur de fichier n, si n est
spécifié).
Dédoublement de descripteurs de fichier
L'opérateur de redirection
-
[n]<&mot
permet de dupliquer les descripteurs de fichier en entrée. Si le mot se
transforme en un ou plusieurs chiffres, le descripteur de fichier noté par
n devient une copie de ce descripteur. Si les chiffres du mot ne
correspondent pas à un descripteur ouvert en lecture, une erreur de
redirection se produit. Si le mot prend la forme -, le descripteur
n est fermé. Si n n'est pas mentionné, l'entrée standard (descripteur
0) est utilisée.
L'opérateur
-
[n]>&mot
est utilisé de façon similaire pour dupliquer les descripteurs de sortie. Si
n n'est pas explicité, la sortie standard (descripteur 1) est
utilisée. Si les chiffres du mot ne correspondent pas à un descripteur en
écriture, une erreur de redirection se produit. Si mot est évalué en
-, le descripteur de fichier n est fermé. Dans le cas particulier où
n est omis et où mot ne se développe pas en un ou plusieurs chiffres,
ou -, les sorties standard et d'erreur standard sont toutes deux
redirigées comme décrit précédemment.
Déplacement de descripteurs de fichier
L'opérateur de redirection
-
[n]<&chiffre-
déplace le descripteur de fichier chiffre vers le descripteur de fichier
n ou sur l'entrée standard (descripteur de fichier 0) si n n'est
pas indiqué. chiffre est fermé après avoir été dupliqué en n.
De la même façon, l'opérateur de redirection
-
[n]>&chiffre-
déplace 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
indiqué.
Ouverture en Lecture/Écriture d'un descripteur de fichier
L'opérateur de redirection
-
[n]<>mot
conduit à l'ouverture du fichier dont le nom résulte du développement du
mot, à la fois en lecture et en écriture et lui affecte le descripteur de
fichier n ou bien le descripteur 0 si n n'est pas mentionné. Si le
fichier n'existe pas, il est créé.
ALIAS
Les alias permettent de substituer une chaîne à un mot lorsqu'il est
utilisé comme premier mot d'une commande simple. L'interpréteur gère une
liste d'alias qui peuvent être créés et détruits avec les commandes internes
alias et unalias (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). L'interpréteur vérifie si le premier mot de
chaque commande simple, si non protégé, est un alias. Si c'est le cas, ce
mot est remplacé par le texte de l'alias. Les caractères /, $, `
et = et tout métacaractère de l'interpréteur ou caractère de
protection décrits ci-dessus ne peuvent pas apparaître dans un nom
d'alias. Le texte de remplacement peut contenir toute entrée correcte pour
l'interpréteur, y compris les métacaractères de
l'interpréteur. L'interpréteur vérifie si le premier mot du texte de
remplacement est à son tour un alias, mais un mot identique à un alias en
cours de développement n'est pas développé une seconde fois. Cela signifie
qu'on peut, par exemple, créer un alias ls valant ls -F et bash
n'essaiera pas de développer récursivement le texte de substitution. Si le
dernier caractère de la valeur de l'alias est un blanc, alors le prochain
mot de commande suivant l'alias connaîtra aussi le développement d'alias.
Les alias sont créés et affichés avec la commande alias et supprimés avec
la commande unalias.
Il n'existe pas de mécanisme permettant d'utiliser des arguments dans le
texte de remplacement. S'ils sont nécessaires, utilisez une fonction de
l'interpréteur (consultez
FONCTIONS ci-dessous).
Les alias ne sont pas développés quand l'interpréteur n'est pas interactif
sauf si l'option expand_aliases de l'interpréteur est créée par la
commande shopt (consultez la description de shopt dans
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
Les règles concernant la définition et l'utilisation des alias sont un peu
confuses. Bash lit toujours au moins une ligne d'entrée complètement et
toutes les lignes qui composent une commande composée, avant d'exécuter une
des commandes de cette ligne ou de la commande composée. Les alias sont
développés lorsque la commande est lue et non pas lorsqu'elle est
exécutée. Ainsi, une définition d'alias apparaissant sur la même ligne
qu'une autre commande ne prend pas effet avant la lecture de la prochaine
ligne d'entrée. Une commande placée à la suite d'une définition d'alias sur
la même ligne ne sera pas affectée par ce nouvel alias. Ce comportement est
également important lors de l'exécution des fonctions. Les alias sont
développés lorsque la définition de la fonction est lue et non pas lors de
l'exécution de cette fonction, parce qu'une définition de fonction est
elle-même une commande. Ainsi des alias définis dans une fonction ne sont
pas disponibles avant la fin de l'exécution de la fonction. Pour plus de
tranquillité, placez toujours les définitions d'alias sur des lignes isolées
et n'utilisez jamais la commande alias dans les commandes composées.
Les alias sont surpassés par les fonctions de l'interpréteur dans la plupart
des situations.
FONCTIONS
Une fonction de l'interpréteur, définie comme décrit ci-dessus, dans
GRAMMAIRE DE L'INTERPRÉTEUR, conserve une suite de commandes pour
exécution ultérieure. Lorsque le nom d'une fonction de l'interpréteur est
utilisée comme un simple nom de commande, la liste des commandes associées à
ce nom de fonction est exécutée. Les fonctions sont exécutées dans le
contexte de l'interpréteur actuel ; aucun nouveau processus n'est créé pour
les interpréter (à la différence d'un script). Lorsqu'une fonction est
exécutée, les arguments de la fonction deviennent les paramètres
positionnels pendant son exécution. Le paramètre spécial # est mis à jour
en conséquence. Le paramètre spécial 0 reste inchangé. Le premier élément
de la variable
FUNCNAME contient le nom de la fonction pendant son
exécution.
Tous les autres aspects de l'environnement d'exécution de l'interpréteur
sont identiques entre la fonction et le contexte d'appel, aux exceptions
suivantes : les captures de
DEBUG et RETURN (consultez la
description de la commande interne trap dans
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous) ne sont pas héritées, à moins que l'attribut
trace ne soit positionné pour la fonction (consultez la description de la
commande interne
declare ci-dessous) ou que l'option
d'interpréteur -o functrace n'ait été activée avec la commande interne
set (auquel cas toutes les fonctions hériteront des captures de DEBUG
et RETURN), et la capture
ERR n'est pas héritée à moins que
l'option d'interpréteur -o errtrace n'ait été activée.
Les paramètres linguistiques régionaux des variables pour les fonctions
peuvent être déclarés avec la commande interne local (local variables). Normalement, les variables et leurs valeurs sont partagées
entre la fonction et son contexte d'appel. Si une variable est déclarée
local, la portée visible de la variable est restreinte à cette fonction
et à ses enfants (y compris les fonctions qu'elle appelle).
Dans la description suivante, la portée actuelle est une fonction qui
s'exécute actuellement. Les portées précédentes consistent en celles du
contexte d'appel de la fonction et ainsi de suite, en remontant jusqu'à la
portée « globale », où l'interpréteur n'exécute aucune fonction de
l'interpréteur. Par conséquent, une variable locale pour la portée actuelle
est une variable déclarée avec les commandes internes local ou declare
dans la fonction qui est exécutée actuellement.
Les variables locales « suivent » les variables du même nom déclarées pour
des portées précédentes. Par exemple, une variable locale déclarée dans une
fonction masque une variable globale du même nom : les références et les
affectations se réfèrent à la variable locale, sans modifier la variable
globale. Quand la fonction rend la main, la variable globale est à nouveau
visible.
L'interpréteur utilise les portées dynamiques pour contrôler la
visibilité d'une variable dans les fonctions. Avec les portées dynamiques,
les variables visibles et leurs valeurs sont le résultat d'une suite
d'appels de fonction qui font que l'exécution atteint la fonction
actuelles. La valeur de la variable vue par une fonction dépend de sa valeur
dans son contexte d'appel, s'il existe, que le contexte d'appel soit la
portée « globale » ou une autre fonction de l'interpréteur. C'est aussi la
valeur qu'une déclaration de variable locale « suit », et la valeur qui est
restaurée quand la fonction rend la main.
Par exemple, si une variable var est déclarée comme locale dans la
fonction fonc1, et que fonc1 appelle une autre fonction, fonc2, les
références à var provenant de la fonc2 seront résolues à la valeur de
la variable locale var provenant la fonc1, masquant toute variable
globale nommée var.
La commande interne unset fonctionne avec les mêmes portées dynamiques :
si une variable est locale pour la portée actuelle, unset la détruit ;
autrement, la destruction se réfère à la variable trouvée dans une portée
d'appel comme décrit ci-dessus. Si une variable pour la portée locale
actuelle est désactivée, elle reste ainsi (apparaissant comme détruite)
jusqu'à ce qu'elle soit réinitialisée dans cette portée ou jusqu'à ce que la
fonction rende la main. Une fois que la fonction a rendu la main, toute
instance de la variable dans la portée antérieure deviendra visible. Si la
désactivation agit sur une variable dans une portée antérieure, toute
instance d'une variable de ce nom qui avait été masquée deviendra visible
(voir plus loin comment l'option de l'interpréteur localvar_unset modifie
ce comportement).
La variable FUNCNEST, si configurée à une valeur numérique strictement
positive, définit le niveau maximal d'imbrication de fonctions. Les
invocations de fonctions qui dépassent la limite forceront toute la commande
à abandonner.
Si la commande interne return est exécutée dans une fonction, celle-ci se
termine et l'exécution reprend avec la commande suivant l'appel de
fonction. Toute commande associée à la capture de RETURN est exécutée
avant que l'exécution reprenne. Quand une fonction se termine, les
paramètres positionnels et le paramètre spécial # reprennent les valeurs
qu'ils avaient avant l'appel de la fonction.
Les noms et les définitions de fonctions peuvent être affichés avec l'option
-f des commandes internes declare ou typeset. L'option -F de
declare ou typeset n'affichera que les noms de fonction (et
facultativement le fichier source et le numéro de ligne, si l'option
d'interpréteur extdebug est activée). Les fonctions peuvent être
exportées avec l'option -f de la commande interne export, afin d'être
automatiquement définies dans les processus enfant de l'interpréteur (ceux
créés lors de l'exécution d'un lancement séparé de l'interpréteur). Une
définition de fonction peut être supprimée avec l'option -f de la
commande interne unset.
Les fonctions peuvent être récursives. La variable FUNCNEST peut être
utilisée pour limiter la profondeur de la pile d'appel de la fonction et
restreindre le nombre d'invocations de fonctions. Par défaut, aucune limite
n'est imposée quant au nombre d'appels récursifs.
ÉVALUATION ARITHMÉTIQUE
L'interpréteur permet, dans certaines circonstances, l'évaluation
d'expressions arithmétiques (consultez les commandes internes let et
declare ainsi que Développement arithmétique). L'évaluation est
effectuée en utilisant des entiers de longueur fixe, sans vérification du
débordement. Néanmoins, la division par 0 est capturée et marquée comme
une erreur. Les opérateurs, leur priorité, leur associativité et leur valeur
sont identiques à ceux du langage C. La liste suivante d'opérateurs est
groupée par opérateurs de niveaux de priorité identiques. Les niveaux sont
décrits par ordre de priorité décroissante.
- id++ id--
-
post-incrément et post-décrément de variables
- - +
-
moins et plus unaires
- ++id --id
-
préincrément et prédécrément de variables
- ! ~
-
négations logique et binaire
- **
-
exponentiation
- * / %
-
multiplication, division, reste
- + -
-
addition, soustraction
- << >>
-
décalage arithmétique à gauche et à droite
- <= >= < >
-
comparaisons
- == !=
-
égalité et différence
- &
-
ET binaire
- ^
-
OU exclusif binaire
- |
-
OU binaire
- &&
-
ET logique
- ||
-
OU logique
- expr?expr:expr
-
opérateur conditionnel
- = *= /= %= += -= <<= >>= &= ^= |=
-
affectations
- expr1 , expr2
-
virgule
Les variables de l'interpréteur sont utilisables comme opérandes, le
développement des paramètres étant effectué avant l'évaluation
arithmétique. Dans une expression, les variables de l'interpréteur peuvent
également être référencées par leur nom, sans utiliser la syntaxe de
développement des paramètres. Une variable d'interpréteur NULL ou
inexistante est évaluée à 0 lorsqu'elle est consultée par son nom sans
utiliser la syntaxe de développement des paramètres. La valeur d'une
variable est évaluée comme une expression arithmétique lorsqu'elle est
consultée, ou lorsqu'une valeur lui est affecté alors que son attribut
integer (entier) a été positionné en utilisant declare -i. Une valeur
NULL est évaluée à 0. Une variable d'interpréteur n'a donc pas besoin
d'avoir son attribut integer positionné pour être utilisable dans un
calcul.
Les constantes de type entier suivent la définition du langage C, sans
suffixes ou constantes de caractères. Les constantes commençant par 0
sont interprétées comme des nombres octaux. Un en-tête 0x ou 0X indique une
valeur hexadécimale. Sinon, les nombres ont la forme [base#]n où la
base facultative est un nombre décimal entre 2 et 64 représentant la base
arithmétique et n est un nombre exprimé dans cette base. Si la base#
est omise, la base 10 est utilisée. En indiquant n, si un caractère non
chiffre est requis, les chiffres supérieurs à 9 sont représentés par les
lettres minuscules, les lettres majuscules, le « @ » et le « _ », dans cet
ordre. Si la base est inférieure ou égale à 36, les minuscules et les
majuscules sont interchangeables pour représenter les nombres entre 10
et 35.
Les opérateurs sont évalués par ordre de priorité. Les sous-expressions
entre parenthèses sont évaluées en premier, ce qui permet de surpasser les
règles de priorité ci-dessus.
CONDITIONS
Les conditions sont utilisées par la commande composée [[ et les
commandes internes test et [ pour vérifier les attributs d'un fichier
et effectuer des comparaisons arithmétiques ou sur des chaînes. Les
commandes test et [ déterminent comment elles se comportent à partir
du nombre d'arguments ; consultez la description de ces commandes pour
toutes les autres actions spécifiques aux commandes.
Les conditions se forment à partir des primitives unaires ou binaires
suivantes. Bash gère plusieurs noms de fichier spécifiquement quand ils
sont utilisés dans des conditions. Si le système d'exploitation sur lequel
bash s'exécute fournit ces fichiers spéciaux, bash les utilise ;
sinon, il les émule en interne avec ce comportement : 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 examiné. 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 examiné.
Sauf indication contraire, les primitives relatives aux fichiers suivent les
liens symboliques et opèrent sur la cible du lien plutôt que sur le lien
lui-même.
Lorsqu'ils sont utilisés avec [[, les opérateurs < et >
ordonnent d'un point de vue lexicographique en utilisant les paramètres
linguistiques régionaux actuels. La commande test trie en utilisant
l'ordre ASCII.
- -a fichier
-
Vrai si le fichier existe.
- -b fichier
-
Vrai si le fichier existe et est un fichier spécial bloc.
- -c fichier
-
Vrai si le fichier existe et est un fichier spécial caractère.
- -d fichier
-
Vrai si le fichier existe et est un répertoire.
- -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 positionné.
- -h fichier
-
Vrai si le fichier existe et est un lien symbolique.
- -k fichier
-
Vrai si le fichier existe et a son bit « sticky » positionné.
- -p fichier
-
Vrai si le fichier existe et est un tube nommé (FIFO).
- -r fichier
-
Vrai si le fichier existe et est accessible en lecture.
- -s fichier
-
Vrai si le fichier existe et a une taille strictement positive.
- -t df
-
Vrai si le descripteur de fichier df est ouvert et se rapporte à un
terminal.
- -u fichier
-
Vrai si le fichier existe et a son bit Set-UID positionné.
- -w fichier
-
Vrai si le fichier existe et est accessible en écriture.
- -x fichier
-
Vrai si le fichier existe et est exécutable.
- -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.
- -N fichier
-
Vrai si le fichier existe et a été modifié depuis sa dernière lecture.
- -O fichier
-
Vrai si le fichier existe et appartient à l'UID effectif de
l'utilisateur.
- -S fichier
-
Vrai si le fichier existe et est un socket.
- fichier_1 -ef fichier_2
-
Vrai si le fichier_1 et le fichier_2 se rapportent au même
périphérique et ont les mêmes numéros d'inœuds.
- fichier_1 -nt fichier_2
-
Vrai si le fichier_1 est plus récent que le fichier_2 (selon les dates
de dernière 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.
- -o nom_opt
-
Vrai si l'option d'interpréteur nom_opt est activée. Consulter la liste
des options ci-dessous dans la description de l'option -o de la commande
interne set.
- -v nom_de_variable
-
Vrai si la variable nom_de_variable de l'interpréteur est configurée (si
une valeur lui a été assignée).
- -R nom_de_variable
-
Vrai si la variable nom_de_variable de l'interpréteur est configurée et
est une référence de nom.
- -z chaîne
-
Vrai si la longueur de la chaîne est nulle.
- chaîne
-
- -n chaîne
-
Vrai si la longueur de la chaîne est non nulle.
- chaîne_1 == chaîne_2
-
- chaîne_1 = chaîne_2
-
Vrai si les deux chaînes sont égales. Le symbole = devrait être utilisé
avec la commande test pour être en conformité POSIX. Utilisée avec la
commande [[, cela réalise une correspondance de motif tel que décrit
précédemment (Commandes composées).
- chaîne_1 != chaîne_2
-
Vrai si les deux chaînes sont différentes.
- chaîne_1 < chaîne_2
-
Vrai si chaîne_1 se trouve avant chaîne_2 dans l'ordre
lexicographique.
- chaîne_1 > chaîne_2
-
Vrai si chaîne_1 se trouve après chaîne_2 dans l'ordre
lexicographique.
- arg1 OP arg2
-
OP est l'un des opérateurs suivants -eq, -ne, -lt,
-le, -gt ou -ge. Ces opérateurs arithmétiques binaires renvoient
vrai si arg1 est respectivement égal, différent, inférieur, inférieur ou
égal, supérieur, supérieur ou égal à arg2. arg1 et arg2 peuvent
être des entiers positifs ou négatifs. Lorsqu'ils sont utilisés avec la
commande [[, arg1 et arg2 sont évalués comme des expressions
arithmétiques (consultez
ÉVALUATION ARITHMÉTIQUE ci-dessus).
DÉVELOPPEMENT DES COMMANDES SIMPLES
Lors de l'exécution d'une commande simple, l'interpréteur effectue les
développements, affectations et redirections, de gauche à droite dans
l'ordre suivant.
- 1.
-
Les mots que l'analyseur a repéré comme affectations de variables (ceux qui
précèdent le nom de la commande) et les redirections sont conservées pour un
traitement ultérieur.
- 2.
-
Les mots qui ne sont ni des affectations de variables ni des redirections
sont développés. S'il reste des mots après le développement, le premier mot
est considéré comme le nom d'une commande et les suivants comme ses
arguments.
- 3.
-
Les redirections sont effectuées comme décrit ci-dessus dans
REDIRECTIONS.
- 4.
-
Le texte suivant le signe = de chaque affectation de variable est sujet
au développement du tilde, des paramètres, à la substitution de commande, au
développement arithmétique et à la suppression des protections avant d'être
affecté à la variable.
Si aucun nom de commande ne résulte des précédentes opérations, les
affectations de variables modifient l'environnement actuel de
l'interpréteur. Dans le cas de commandes de ce type (celles qui consistent
uniquement en affectations et en redirections), les affectations sont
effectuées avant les redirections. Sinon les variables sont ajoutées à
l'environnement de la commande exécutée et n'affectent pas l'environnement
de l'interpréteur actuel. Si l'une des tentatives d'affectation concerne une
variable en lecture seule, une erreur se produit et la commande termine avec
un état différent de zéro.
Si aucun nom de commande n'est obtenu, les redirections sont effectuées mais
ne modifient pas l'environnement de l'interpréteur actuel. Une erreur de
redirection conduit à la terminaison de la commande avec un état différent
de zéro.
S'il reste un nom de commande après le développement, l'exécution a lieu
comme décrit ci-dessous. Sinon la commande termine. Si l'un des
développements contient une substitution de commande, l'état final de la
commande est l'état final de la dernière substitution de commande
effectuée. S'il n'y avait aucune substitution de commande, la commande
termine avec un état de zéro.
EXÉCUTION DES COMMANDES
Après le découpage de la ligne de commande en mots, si le résultat est une
commande simple suivie d'une liste facultative d'arguments, les actions
suivantes sont effectuées.
Si le nom de la commande ne contient aucune barre oblique, l'interpréteur
tente de la localiser. S'il existe une fonction de l'interpréteur de ce nom,
elle est appelée comme nous l'avons vu ci-dessus dans
FONCTIONS. Si le nom n'est pas celui d'une fonction, l'interpréteur le
recherche dans la liste des commandes internes. Si une correspondance est
trouvée, cette commande interne est appelée.
Si le nom n'est ni celui d'une fonction de l'interpréteur, ni celui d'une
commande interne et s'il ne contient pas de barre oblique, bash va
chercher dans chacun des éléments de
PATH un répertoire contenant
un fichier exécutable du nom désiré. Bash utilise une table de hachage
pour mémoriser les chemins d'accès complets aux fichiers exécutables
(consultez la commande hash dans
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Une recherche complète dans les répertoires du
PATH n'est effectuée que si la commande ne se trouve pas dans la
table de hachage. Si la recherche est infructueuse, l'interpréteur recherche
une fonction de l'interpréteur appelée command_not_found_handle. Si cette
fonction existe, elle est appelée dans un environnement d'exécution séparé
avec la commande d'origine et comme argument les arguments de celle-ci, et
l'état final de la fonction devient l'état final de ce sous-interpréteur. Si
cette fonction n'est pas définie, l'interpréteur affiche un message d'erreur
et renvoie un état final de 127.
Si la recherche réussit ou si le nom de la commande contient une ou
plusieurs barres obliques, l'interpréteur exécute le programme demandé dans
un environnement d'exécution distinct. L'argument 0 est configuré au nom
indiqué et les éventuels arguments restants de la commande sont configurés
aux arguments indiqués.
Si cette exécution échoue parce que le programme n'est pas un exécutable et
si le fichier n'est pas un répertoire, il est pris pour un script, un
fichier contenant des commandes d'interpréteur, et l'interpréteur crée une
nouvelle instance de lui-même pour exécuter ce script. Ce sous-interpréteur
se réinitialisera lui-même, comme si un nouvel interpréteur avait été appelé
pour exécuter le script, à la différence qu'il continuera à mémoriser
l'emplacement des commandes connues de son parent (consultez hash dans
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
Si le programme est un fichier commençant par #!, le reste de la première
ligne indique un interprète pour ce programme. L'interpréteur se chargera
d'exécuter l'interprète indiqué sur les systèmes d'exploitation qui ne
gèrent pas eux-mêmes ce format d'exécutable. Les arguments de l'interprète
consistent en un seul argument facultatif fourni sur la première ligne du
fichier à la suite du nom de l'interprète, suivi du nom du programme, suivi
des arguments de la commande s'il y en a.
ENVIRONNEMENT D'EXÉCUTION DES COMMANDES
L'interpréteur fournit un environnement d'exécution consistant en
l'ensemble des éléments suivants :
- -
-
les fichiers ouverts hérités par l'interpréteur à son appel et modifiés par
les redirections fournies à la commande interne exec ;
- -
-
le répertoire de travail actuel comme configuré par cd, pushd ou
popd ou hérité par l'interpréteur à son appel ;
- -
-
le masque de création de fichier comme configuré par umask ou hérité du
parent de l'interpréteur ;
- -
-
les captures actuelles configurées par trap ;
- -
-
les paramètres de l'interpréteur configurés par des affectations de
variables, avec la commande interne set, ou hérités de l'environnement du
parent de l'interpréteur ;
- -
-
les fonctions de l'interpréteur définies lors de l'exécution ou héritées de
l'environnement du parent de l'interpréteur ;
- -
-
les options activées à l'appel (par défaut ou avec les arguments de ligne de
commande) ou par set ;
- -
-
les options activées par shopt ;
- -
-
les alias de l'interpréteur définies par la commande alias ;
- -
-
les ID des divers processus, y compris ceux des tâches en arrière-plan, la
valeur de $$ et la valeur de
PPID.
Lorsqu'une commande différente d'une commande interne ou d'une fonction de
l'interpréteur doit être exécutée, elle est appelée dans un environnement
d'exécution séparé constitué de ce qui suit. Sauf indication contraire, les
valeurs sont héritées de l'environnement de l'interpréteur :
- -
-
les fichiers ouverts de l'interpréteur, ainsi que toutes modifications et
ajouts précisés par les redirections de la commande ;
- -
-
le répertoire de travail actuel ;
- -
-
le masque de création de fichiers ;
- -
-
les variables et les fonctions de l'interpréteur marquées pour
l'exportation, ainsi que les variables exportées spécialement pour la
commande ;
- -
-
les captures interceptées par l'interpréteur sont réinitialisées aux valeurs
héritées de l'interpréteur parent et les captures ignorées par
l'interpréteur restent ignorées.
Une commande appelée dans un environnement distinct ne peut pas affecter
l'environnement d'exécution de l'interpréteur.
Un sous-interpréteur est une copie du processus de l'interpréteur.
Les substitutions de commande, les commandes groupées entre parenthèses et
les commandes asynchrones sont appelées dans un environnement de
sous-interpréteur qui est une copie de celui de l'interpréteur, mais les
captures interceptées par l'interpréteur sont réinitialisées aux valeurs que
l'interpréteur avait héritées de son parent à son appel. Les commandes
internes appelées dans un pipeline sont aussi exécutées dans un
environnement de sous-interpréteur. Les modifications apportées à
l'environnement d'un sous-interpréteur n'affectent aucunement
l'environnement d'exécution de l'interpréteur.
Les sous-interpréteurs engendrés pour exécuter les substitutions de commande
héritent de la valeur de l'option -e de l'interpréteur parent. En dehors
du mode POSIX, bash efface l'option -e de tels sous-interpréteurs.
Si une commande est suivie par un & et que le contrôle des tâches n'est
pas actif, l'entrée standard par défaut de la commande est le fichier vide
/dev/null. Sinon, la commande appelée hérite des descripteurs de fichier
de l'interpréteur appelant comme modifiés par les redirections.
ENVIRONNEMENT
Quand un programme est appelé, il reçoit un tableau de chaînes que l'on
appelle environnement. Il s'agit d'une liste de couples nom-valeur,
de la forme nom=valeur.
L'interpréteur fournit plusieurs façons de gérer l'environnement. Au
démarrage, l'interpréteur analyse son propre environnement et crée un
paramètre pour chaque nom trouvé, en le marquant comme exportable vers
les processus enfants. Les commandes exécutées héritent de cet
environnement. Les commandes export et declare -x permettent d'ajouter
ou de supprimer des paramètres ou des fonctions de l'environnement. Si la
valeur d'un paramètre de l'environnement est modifiée, la nouvelle valeur
devient une partie de l'environnement et elle remplace
l'ancienne. L'environnement hérité par toute commande exécutée est
l'environnement initial de l'interpréteur, dont les valeurs peuvent être
modifiées dans l'interpréteur, sans les éléments supprimés par la commande
unset, et avec les éléments ajoutés par les commandes export et
declare -x.
L'environnement d'une commande simple ou d'une fonction peut être
augmenté temporairement, en la faisant précéder des affectations de
paramètres, comme nous l'avons vu ci-dessus dans
PARAMÈTRES. Ces
affectations ne concernent que l'environnement vu par cette commande.
Si l'option -k est configurée (consultez ci-dessous la commande interne
set), alors toutes les affectations de paramètres sont placées dans
l'environnement d'une commande exécutée et non seulement celles qui
précèdent son nom.
Quand bash appelle une commande externe, la variable _ est configurée
en chemin d'accès complet à cette commande et elle est transmise dans
l'environnement.
CODE DE RETOUR
L'état final d'une commande exécutée est la valeur renvoyée par l'appel
système waitpid ou fonction équivalente. Les états finaux prennent leurs
valeurs entre 0 et 255, néanmoins, comme expliqué ci-dessous, l'interpréteur
peut utiliser les valeurs supérieures à 125 de façon particulière. Les états
finaux des commandes internes et composées sont également limités à cet
intervalle. Sous certaines conditions, l'interpréteur utilisera des valeurs
particulières pour indiquer des modes d'échec particuliers.
Du point de vue de l'interpréteur, une commande qui termine avec état final
valant zéro a réussi. Un état final de zéro indique le succès. Un état final
différent de zéro indique un échec. Quand une commande se termine par un
signal mortel N, bash utilise la valeur 128+N comme état final.
Si une commande n'est pas trouvée, le processus enfant créé pour l'exécuter
renvoie un état de 127. Si une commande est trouvée mais pas exécutable, la
valeur renvoyée est 126.
Si une commande échoue à cause d'une erreur survenue lors d'un développement
ou des redirections, l'état final est strictement plus grand que zéro.
Les commandes internes renvoient un état de 0 (vrai) si réussies et
une valeur différente de zéro (faux) si une erreur se produit pendant
leur exécution. Toutes les commandes internes renvoient un état final de
2 pour indiquer un usage incorrect, en général des options non valables
ou des arguments manquants.
Le code de retour de la dernière commande est disponible dans le paramètre
spécial $?.
Bash lui-même renvoie l'état final de la dernière commande exécutée, à
moins qu'une erreur de syntaxe ne se produise, auquel cas il termine avec
une valeur différente de zéro. Consultez aussi ci-dessous la commande
interne exit.
SIGNAUX
Quand bash fonctionne de façon interactive, en absence de toute capture,
il ignore
SIGTERM (c'est ainsi que kill 0 ne tue pas un
interpréteur interactif) et
SIGINT est intercepté et géré (c'est
ainsi que la commande interne wait est interruptible). Dans tous les cas,
bash ignore
SIGQUIT. Si le contrôle des tâches est actif,
bash ignore
SIGTTIN,
SIGTTOU et
SIGTSTP.
Les commandes externes lancées par bash ont les gestionnaires de signaux
configurés aux valeurs héritées par l'interpréteur de son parent. Quand le
contrôle des tâches n'est pas actif, les tâches en arrière-plan ignorent les
signaux
SIGINT et
SIGQUIT en plus des gestionnaires
hérités. Les commandes exécutées en tant que résultat d'une substitution de
commande ignorent les signaux de contrôle de tâches émis par le clavier
SIGTTIN,
SIGTTOU et
SIGTSTP.
Par défaut, l'interpréteur termine à la réception de
SIGHUP. Avant
de terminer, un interpréteur interactif renvoie le
SIGHUP à toutes
les tâches en cours ou suspendues. Les tâches suspendues reçoivent aussi
SIGCONT pour s'assurer qu'elles reçoivent bien le
SIGHUP. Pour empêcher l'interpréteur d'envoyer le signal à une tâche
particulière, elle devrait être supprimée de la table des tâches avec la
commande interne disown (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous) ou marquée comme exemptée de
SIGHUP en
utilisant disown -h.
Si l'option d'interpréteur huponexit a été configurée avec la fonction
shopt, bash envoie un signal
SIGHUP à toutes les tâches
lorsqu'un interpréteur de commandes de connexion interactif termine.
Lorsque bash attend qu'une commande se termine et qu'il reçoit un signal
pour lequel une capture a été configurée, la capture ne sera pas exécutée
tant que la commande n'est pas terminée. Lorsque bash attend la fin d'une
commande asynchrone par la commande interne wait, la réception d'un
signal pour lequel une capture a été configurée conduira à un retour
immédiat de la commande interne wait avec un état final supérieur à 128,
à la suite de quoi la capture est immédiatement exécutée.
Quand le contrôle des tâches n'est pas activé, et que bash est dans
l'attente de l'achèvement d'une commande au premier plan, l'interpréteur
reçoit les signaux émis par le clavier comme
SIGINT (généralement
créé par ^C) que l'utilisateur a généralement l'intention d'envoyer à
cette commande. Cela se produit parce que l'interpréteur et la commande sont
dans le même groupe de processus que le terminal, et ^C envoie un
SIGINT à tous les processus de ce groupe de processus.
Quand bash est exécuté sans que le contrôle de tâche ne soit activé et
reçoit un
SIGINT pendant qu'il attend une commande au premier
plan, il attend jusqu'à ce que la commande au premier plan s'achève et
décide ensuite que faire du
SIGINT :
- 1.
-
Si la commande termine du fait du
SIGINT, bash conclut que
l'utilisateur a l'intention de mettre fin à tout le script et répond au
SIGINT (par exemple en exécutant une capture de
SIGINT
ou en s'arrêtant lui-même) ;
- 2.
-
Si la commande ne se termine pas du fait du
SIGINT, le programme a
géré le
SIGINT lui même et ne l'a pas traité comme un signal
fatal. Dans ce cas bash ne traite pas le
SIGINT comme un signal
fatal, en supposant plutôt soit que le
SIGINT était utilisé comme
un élément du déroulement normal du programme (par exemple, emacs l'utilise
pour interrompre des commandes d'édition) ou était abandonné
délibérément. Néanmoins, bash exécutera toute capture définie par
SIGINT, comme il le fait pour tout autre signal capturé reçu pendant
qu'il attend que la commande au premier plan s'achève, pour des raisons de
compatibilité
CONTRÔLE DES TÂCHES
Le contrôle des tâches se réfère à la capacité de suspendre (suspend)
sélectivement l'exécution d'un processus et de la reprendre (resume)
ultérieurement. L'utilisateur bénéficie généralement de cette possibilité
grâce à l'action conjointe du pilote de terminal du noyau de système
d'exploitation et de bash.
L'interpréteur associe une tâche à chaque pipeline. Il maintient une
table des tâches en cours d'exécution, cette table pouvant être affichée
avec la commande jobs. Quand bash lance une tâche de façon asynchrone
(en arrière-plan), il affiche une ligne qui ressemble à :
-
[1] 25647
Cette ligne indique que la tâche est la tâche numéro 1 et que le PID du
dernier processus dans le pipeline associé à cette tâche est 25647. Tous les
processus d'un même pipeline font partie de la même tâche. Bash utilise
la notion de tâche comme base du contrôle des tâches.
Pour faciliter l'implémentation d'une interface utilisateur pour le contrôle
de tâches, le système introduit la notion d'ID de groupe de processus associés à un terminal. Les membres de ce groupe de processus (processus
dont le GID est égal au Process Group ID du terminal actuel) reçoivent
les signaux émis par le clavier comme
SIGINT. Ces processus sont
dits au premier plan. Les processus en arrière-plan sont ceux dont le
Process-GID diffère de celui du terminal ; ils sont indifférents aux
signaux émis par le clavier. Seuls les processus au premier plan peuvent
lire depuis le terminal ou, si l'utilisateur l'indique avec stty tostop,
y écrire. Les processus en arrière-plan qui tentent une lecture (ou une
écriture si stty tostop est actif) dans le terminal reçoivent un signal
SIGTTIN (SIGTTOU) émis par le pilote du terminal du noyau, qui,
sauf interception, suspend le processus.
Si le système d'exploitation sur lequel bash fonctionne permet le
contrôle des tâches, bash fournit des outils pour l'utiliser. La frappe
d'un caractère de suspension (généralement ^Z, Contrôle-Z) pendant
l'exécution d'un processus conduit à la suspension de celui-ci et redonne la
main à bash. La frappe d'un caractère de suspension différée
(généralement ^Y, Contrôle-Y) conduira à la suspension du processus au
moment où il tentera de lire des saisies depuis le terminal et la main
reviendra à bash. L'utilisateur peut alors manipuler l'état de cette
tâche en utilisant la commande bg (background = arrière-plan) pour en
continuer l'exécution en arrière-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 immédiatement et a pour effet de
bord d'éliminer les sorties et saisies en attente.
Plusieurs façons permettent de se rapporter à une tâche. Le caractère %
introduit une spécification de tâche (jobspec). Il est possible de se
rapporter à la tâche numéro n avec %n. Il est également possible de se
rapporter à une tâche en utilisant un préfixe du nom utilisé pour la lancer
ou une sous-chaîne qui apparaît dans sa ligne de commande. Par exemple,
%ce se rapporte à une tâche suspendue dont le nom de commande commence
par ce. Si ce préfixe correspond à plusieurs tâches, bash signale une
erreur. Utiliser %?ce, d'un autre côté, se rapporte à toute tâche
contenant la chaîne ce dans sa ligne de commande. Si la sous-chaîne
correspond à plusieurs tâches, bash signale une erreur. Les symboles
%% et %+ se rapportent à la notion de tâche actuelle de
l'interpréteur, c'est-à-dire la dernière tâche suspendue alors qu'elle était
au premier plan ou démarrée en arrière-plan. La tâche précédente peut
être désignée en utilisant %-. Si une seule tâche existe, %+ et %-
peuvent tous deux être utilisés pour se rapporter à cette tâche. Dans les
affichages se rapportant aux tâches (par exemple la sortie de la commande
jobs), la tâche actuelle est toujours annotée d'un + et la tâche
précédente d'un -. Un simple % (non accompagné de spécification de
tâche) se rapporte également à la tâche actuelle.
Il suffit de nommer une tâche pour la ramener au premier plan : %1 est
synonyme de « fg %1 » et ramène la tâche 1 de l'arrière-plan vers le
premier plan. De même, « %1 & » reprend la tâche 1 en arrière-plan, de
façon équivalente à « bg %1 ».
L'interpréteur est immédiatement prévenu lorsqu'une tâche change
d'état. Normalement bash attend d'être prêt à afficher son interpréteur
avant de signaler des changements dans l'état des tâches, afin de ne pas
interrompre toute autre sortie. Si l'option -b de la commande interne
set est activée, bash signalera de telles modifications
immédiatement. Toute capture sur
SIGCHLD est exécutée pour chaque
enfant qui se termine.
Si une tentative visant à terminer bash est réalisée alors que des tâches
sont suspendues (ou, si l'option d'interpréteur checkjobs a été activée
par la commande interne shopt, en cours d'exécution), l'interpréteur
affiche un message d'avertissement, et, si l'option d'interpréteur
checkjobs est activée, affiche la liste les tâches et leurs états. La
commande jobs peut alors être utilisée pour examiner leur état. Si une
deuxième tentative est faite pour terminer sans commande intercalaire,
l'interpréteur n'affiche aucun autre avertissement et les tâches suspendues
sont terminées.
Lorsque l'interpréteur est dans l'attente d'une tâche ou d'un processus
utilisant la commande interne wait et que le contrôle des tâches est
activé, wait rendra la main quand la tâche changera d'état. L'option
-f fera que wait attendra que la tâche ou le processus termine avant
de rendre la main.
INVITES
Quand il est exécuté de façon interactive, bash affiche l'invite de base
PS1 dès qu'il est prêt à lire une commande et l'invite secondaire
PS2 quand il a besoin de plus de saisies pour exécuter une
commande. Bash affiche
PS0 après avoir lu une commande, mais
avant de l'exécuter. Bash affiche
PS4 comme décrit ci-dessus
avant de tracer chaque commande quand l'option -x est activée. Bash
permet de personnaliser ces chaînes d'invite, en insérant un certain nombre
de caractères spéciaux protégés par des contre-obliques qui sont décodés
comme suit :
-
- \a
-
un caractère ASCII d'alarme (07) ;
- \d
-
la date au format « Jour_de_la_semaine Mois Quantième » (par exemple : « Tue
May 26 ») ;
- \D{format}
-
le format est passé à strftime(3) et le résultat est inséré dans la
chaîne de l'invite ; un format vide implique une représentation du temps
spécifique aux paramètres linguistiques régionaux. Les accolades sont
nécessaires ;
- \e
-
un caractère de protection ASCII (033) ;
- \h
-
le nom de la machine, jusqu'au premier point « . » ;
- \H
-
le nom de la machine ;
- \j
-
le nombre de tâches actuellement gérées par l'interpréteur ;
- \l
-
le nom de base du nom de périphérique de terminal de l'interpréteur ;
- \n
-
changement de ligne ;
- \r
-
retour chariot
- \s
-
le nom de l'interpréteur, c'est-à-dire le nom de base de $0 (la portion
suivant la dernière 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 numéro de version complet (avec niveau de correctifs) de bash, (par
exemple, 2.00.0) ;
- \w
-
la valeur de la variable de l'interpréteur ($PWD), avec
$HOME
abrégé en tilde « ~ » (utilise la valeur de la variable
PROMPT_DIRTRIM) ;
- \W
-
le nom de base de $PWD, avec
$HOME abrégé en tilde (« ~ ») ;
- \!
-
le numéro d'historique de la commande ;
- \#
-
le numéro de la commande ;
- \$
-
# si l'UID effectif est 0, $ sinon ;
- \nnn
-
le caractère de code octal nnn ;
- \\
-
une contre-oblique ;
- \[
-
débute une suite de caractères non imprimables, qui peuvent être utilisés
pour inclure une suite de caractères de contrôle du terminal dans
l'interpréteur ;
- \]
-
finit une suite de caractères non imprimables.
Le numéro de commande et le numéro d'historique sont généralement
différents : le numéro d'historique d'une commande correspond à sa position
dans la file d'historique qui peut contenir des commandes relues depuis
cette liste (consultez
HISTORIQUE ci-dessous), alors que le numéro
de commande est simplement une position dans la suite de commandes exécutées
depuis le début de la session d'interpréteur actuelle. Après que la chaîne
ait été décodée, elle est soumise au développement des paramètres, à la
substitution de commande, au développement arithmétique, au découpage des
mots et à la suppression des protections, selon la valeur de l'option
d'interpréteur promptvars (consultez la description de shopt dans
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Cela peut avoir
des effets non désirés si des portions protégées de la chaîne apparaissent à
l'intérieur de la substitution de commande ou contiennent des caractères
spéciaux pour le développement de mots.
READLINE
C'est la bibliothèque qui gère la lecture des saisies lors des sessions
interactives de l'interpréteur, à moins que l'option --noediting ne soit
indiquée à l'appel de l'interpréteur. Par défaut les commandes d'édition de
ligne sont similaires à celles d'Emacs. Une interface d'édition de ligne
dans le style vi est aussi disponible. Pour arrêter l'édition de ligne après
le démarrage de l'interpréteur, utiliser l'option +o emacs ou +o vi de
la commande interne set (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
Notation readline
Dans ce paragraphe on utilisera la notation « à la Emacs » pour indiquer les
frappes de touches. Les touches Contrôle sont notées C-touche, par
exemple C-n signifie Contrôle-N. De même, les touches Méta sont notées
par M-touche, ainsi M-x signifie Méta-X. (Sur les claviers sans touches
Méta, M-x signifie ESC x, c'est-à-dire presser la touche
d'Échappement puis la touche x. Cela fait de ESC le préfixe méta. La
combinaison M-C-x signifie ESC-Contrôle-x ou encore presser la touche
d'Échappement puis maintenir la touche Contrôle enfoncée tout en pressant la
touche x.)
Les commandes readline peuvent recevoir des arguments numériques, qui
fonctionnent en règle générale comme compteurs de répétitions. Parfois,
cependant, c'est le signe de l'argument qui est significatif. L'utilisation
d'un argument négatif pour une commande agissant dans un sens donné (par
exemple kill-line) conduit cette commande à agir dans la direction
opposée. Les commandes dont le comportement avec les arguments diffère de
cela sont indiquées ci-dessous.
Lorsqu'une commande est indiquée comme détruisant du texte, le texte
effacé est en fait sauvegardé pour une éventuelle récupération ultérieure
(« yanking »). Il est conservé dans un tampon circulaire (« kill ring »). Les suppressions successives conduisent à l'accumulation du texte
en un seul bloc qui peut être récupéré en une fois. Les commandes non
destructives séparent les blocs de textes dans le tampon circulaire.
Initialisation de readline
Readline est personnalisé en plaçant des commandes dans un fichier
d'initialisation (le fichier inputrc). Le nom de ce fichier est pris dans
la variable de l'interpréteur
INPUTRC. Si cette variable est
inexistante, le nom par défaut est ~/.inputrc. Si ce fichier n'existe pas
ou s'il ne peut pas être lu, le dernier fichier par défaut est
/etc/inputrc. Lorsqu'un programme utilisant la bibliothèque readline
démarre, le fichier d'initialisation est lu et les raccourcis clavier et les
variables sont mis en place. Il n'y a que quelques constructions
élémentaires possibles dans le fichier d'initialisation de readline. Les
lignes blanches sont ignorées. Les lignes commençant par # sont des
commentaires. Les lignes commençant par $ indiquent des constructions
conditionnelles. Les autres lignes indiquent des raccourcis clavier et des
paramétrages de variables.
Les raccourcis clavier par défaut peuvent être modifiés par un fichier
inputrc. D'autres programmes qui utilisent cette bibliothèque peuvent
ajouter leurs propres commandes et raccourcis.
Par exemple, en plaçant
-
M-Control-u: universal-argument
ou
-
C-Meta-u: universal-argument
dans le fichier inputrc, on associera la suite de touches M-C-u à la
commande readline universal-argument.
Les caractères symboliques suivants sont acceptés : RUBOUT, DEL,
ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE et TAB.
En plus des noms de commandes, readline permet d'associer à une touche une
chaîne de caractères qui sera insérée lorsque la touche est pressée (une
macro).
Raccourcis clavier readline
La syntaxe pour contrôler les raccourcis clavier dans le fichier inputrc
est simple. Tout ce qui est nécessaire est le nom de la commande ou le texte
d'une macro et la suite de touches à laquelle il faut l'associer. Les noms
de touches peuvent être indiqués de l'une des deux façons : comme un nom de
touche symbolique, éventuellement précédé des préfixes 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: "> sortie"
Dans l'exemple ci-dessus, C-u est associé à la fonction
universal-argument, M-DEL à la fonction backward-kill-word et
C-o à l'exécution de la macro exprimée dans la partie gauche
(c'est-à-dire, insérer le texte
``> output''
sur la ligne).
Avec la seconde forme, "touches":nom_de_fonction ou macro,
touches diffère de touche ci-dessus en ce que les chaînes notant une
suite complète de touches peuvent être indiquées en plaçant la suite entre
guillemets doubles. Certaines suites de touches d'échappement dans le style
GNU Emacs peuvent être utilisées, comme dans l'exemple suivant, mais les
noms de caractères 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 à nouveau associé à la fonction
universal-argument, C-x C-r à la fonction re-read-init-file et
ESC [ 1 1 ~ à l'insertion du texte
``Function Key 1''.
Le jeu complet des suites de caractères de protection du style GNU Emacs
est :
-
- \C-
-
préfixe Contrôle ;
- \M-
-
préfixe Méta ;
- \e
-
caractère de protection ;
- \\
-
contre-oblique ;
- \"
-
un guillemet " littéral ;
- \'
-
un guillemet ' littéral.
En plus des suites de caractères de protection dans le style GNU Emacs, un
second jeu de suites de caractères de protection par contre-obliques est
disponible :
-
- \a
-
alerte (alarme) ;
- \b
-
effacement arrière (« backspace ») ;
- \d
-
effacement ;
- \f
-
saut de page (« form feed ») ;
- \n
-
changement de ligne ;
- \r
-
retour chariot
- \t
-
tabulation horizontale ;
- \v
-
tabulation verticale ;
- \nnn
-
le caractère 8 bits dont la valeur octale est nnn (un à trois chiffres) ;
- \xHH
-
le caractère 8 bits dont la valeur hexadécimale est HH (un ou deux
chiffres hexadécimaux) ;
Lorsqu'on saisit le texte d'une macro, il faut utiliser des guillemets
simples ou doubles pour indiquer la définition de la macro. Les textes non
protégés sont considérés comme des noms de fonctions. Dans le corps de la
macro, les protections par contre-oblique décrites ci-dessus sont
développées. La contre-oblique protégera tout autre caractère 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'édition à
l'autre en mode interactif en utilisant l'option -o de la commande
interne set (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR
ci-dessous).
Variables de readline
Readline dispose de variables permettant de personnaliser encore plus son
comportement. Une variable peut être configurée dans le fichier inputrc
avec une affectation de la forme
-
set nom_de_variable valeur
ou utilisant la commande interne bind (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
Sauf indication contraire, les variables de readline prennent les valeurs
On ou Off (la casse étant sans importance). Les noms de variables non
reconnues sont ignorés. Lorsqu'une valeur de variable est lue, les variables
vides ou de valeur NULL, « on » (insensible à la casse) et « 1 » sont
équivalentes à On. Toutes les autres valeurs sont équivalentes à
Off. Les variables et leurs valeurs par défaut, sont :
- active-region-start-color
-
Une variable de chaîne qui contrôle la couleur du texte et du fond lors de
l'affichage du texte dans la zone active (consultez la description de
enable-active-region ci-dessous). Cette chaîne ne doit pas occuper
l'emplacement d'un caractère physique quelconque sur l'affichage, aussi elle
devrait consister uniquement en séquences d'échappement du terminal. Elle
est envoyée au terminal avant l'affichage du texte dans la zone
active. Cette variable est remise à sa valeur par défaut chaque fois que le
type de terminal change. La valeur par défaut est la chaîne qui place le
terminal en mode standout tel qu'obtenu à partir de la description
terminfo du terminal. Cette valeur pourrait être par exemple
"\e[01;33m".
- active-region-end-color
-
Une variable de chaîne qui « annule » les effets de
active-region-start-color et rétablit l'apparence « normale » de
l'affichage du terminal après l'affichage de texte dans la zone
active. Cette chaîne ne doit pas occuper l'emplacement d'un caractère
physique quelconque sur l'affichage, aussi elle devrait consister uniquement
en séquences d'échappement du terminal. Elle est envoyée au terminal après
l'affichage du texte dans la zone active. Cette variable est remise à sa
valeur par défaut chaque fois que le type de terminal change. La valeur par
défaut est la chaîne qui rétablit le terminal à partir du mode standout
tel qu'obtenu à partir de la description terminfo du terminal. Cette
valeur pourrait être par exemple "\e[0m".
- bell-style (audible)
-
Cette variable commande readline lorsqu'il faut déclencher l'alarme du
terminal. Si configurée à none, readline n'émet jamais d'alarme. Si
configurée à visible, readline utilise une alarme visuelle s'il y en a
une disponible. Si configurée à audible, readline essaie de faire sonner
l'alarme du terminal.
- bind-tty-special-chars (On)
-
Si configurée à On, readline tente d'associer les caractères de contrôle
traités spécialement par le pilote de terminal du noyau à leurs équivalents
readline.
- blink-matching-paren (Off)
-
Si configurée à On, readline tente de déplacer brièvement le curseur vers
une parenthèse ouvrante lors de l'insertion d'une parenthèse fermante.
- colored-completion-prefix (Off)
-
Si configurée à On, lors du listage des complètements, readline
affiche le préfixe commun du jeu des complètements possibles en utilisant
une couleur différente. Les définitions de couleur sont prises selon la
valeur de la variable d’environnement LS_COLORS. S'il y a une définition
de couleur dans $LS_COLORS pour le suffixe personnalisé
« readline-colored-completion-prefix », readline utilise cette couleur pour
le suffixe commun plutôt que la valeur par défaut.
- colored-stats (Off)
-
Si configurée à On, readline affiche les complètements possibles en
utilisant des couleurs différentes pour indiquer leur type de fichier. Les
définitions de couleur sont prises dans la valeur de la variable
d’environnement LS_COLORS.
- comment-begin (« # »)
-
Cette chaîne est insérée quand la commande readline insert-comment est
exécutée. Cette commande est associée à M-# en mode Emacs et à # en
mode de commande vi.
- completion-display-width (-1)
-
Le nombre de colonnes d'écran utilisées pour afficher de possibles
correspondances lors de la réalisation du complètement. La valeur est
ignorée si elle est inférieure à 0 ou supérieure à la largeur de l'écran
du terminal. Une valeur de 0 fera que les correspondances seront
affichées une par ligne. La valeur par défaut est -1.
- completion-ignore-case (Off)
-
Si configurée à On, readline effectue les correspondances et
complètements de noms de fichiers sans tenir compte de la casse.
- completion-map-case (Off)
-
Si configurée à On et completion-ignore-case activée, readline traite
les traits d'union (-) et les tirets bas (_) comme équivalents
lorsqu'elle réalise une recherche de correspondance et un complètement de
nom de fichier insensibles à la casse.
- completion-prefix-display-length (0)
-
La longueur, en caractères, du préfixe commun d'une liste de complètements
possibles affiché sans modification. Si configurée en valeur positive, les
préfixes communs plus longs que cette valeur sont remplacés par une ellipse
lors de l'affichage des complètements possibles.
- completion-query-items (100)
-
Cela détermine quand l'utilisateur est interrogé pour voir le nombre de
complètements possibles produits par la commande
possible-completions. Elle peut être configurée à toute valeur entière
positive. Si le nombre de complètements possibles est supérieur ou égal à la
valeur de cette variable, readline demandera à l'utilisateur s'il veut ou
non les voir ; sinon, ils sont simplement affichés sur le terminal. Une
valeur zéro signifie que readline ne demandera jamais ; des valeurs
négatives sont traitées comme un zéro.
- convert-meta (On)
-
Si configurée à On, readline transformera les caractères avec leur
huitième bit réglé à une suite de caractères ASCII en supprimant le huitième
bit et en préfixant un caractère de protection (en fait, en utilisant le
caractère de protection comme préfixe méta). La configuration par défaut
est On, mais readline la fixe à Off si le paramètre linguistique
régional contient des caractères 8 bits. Cette variable dépend du paramètre
linguistique régional LC_CTYPE et peut être modifiée si le paramètre
linguistique régional est changé.
- disable-completion (Off)
-
Si configurée à On, readline empêchera le complètement des mots. Les
caractères de complètement seront insérés sur la ligne comme s'ils avaient
été associés à self-insert.
- echo-control-characters (On)
-
Si configurée à On, sur les systèmes d'exploitation le permettant,
readline affiche un caractère correspondant à un signal provenant du
clavier.
- editing-mode (emacs)
-
Commande si readline doit démarrer avec des raccourcis clavier similaires à
Emacs ou à vi. editing-mode peut être positionné soit à emacs,
soit à vi.
- emacs-mode-string (@)
-
Si la variable show-mode-in-prompt est activée, cette chaîne est affichée
immédiatement avant la dernière ligne de la première invite quand le mode
édition d'Emacs est activé. La valeur est développée comme un raccourci
clavier, donc le jeu standard de préfixes meta- ou Control- et de
séquences de protections par contre-oblique est disponible. Utiliser les
caractères de protection \1 et \2 pour ouvrir et fermer les séquences de
caractères non imprimables, ce qui peut être utilisé pour inclure une suite
de caractères de contrôle du terminal dans la chaîne de mode.
- enable-active-region (On)
-
Le curseur (« point ») correspond à la position actuelle du curseur et la
marque correspond à une position de curseur sauvegardée. Le texte entre
le curseur et la marque est désigné comme la zone. Quand cette variable
est réglée à On, readline permet à certaines commandes de désigner la
zone comme active. Quand la zone est active, readline surligne le
texte en utilisant la valeur de active-region-start-color qui est par
défaut la chaîne qui active le mode standout du terminal. La région
active montre le texte inséré par collage spécial (bracketed-paste) et
tout texte correspondant trouvé lors de recherches incrémentales et
non-incrémentales dans l'historique.
- enable-bracketed-paste (On)
-
Quand configurée à On, readline configurera le terminal pour pouvoir
insérer chaque collage dans le tampon d'édition comme une chaîne de
caractères uniques, plutôt que de traiter chaque caractère comme s'il avait
été lu du clavier. Cela empêche readline d'exécuter toute commande d'édition
liée à des suites de touches apparaissant dans le texte collé.
- enable-keypad (Off)
-
Quand configurée à On, readline essayera d'activer le pavé numérique de
l'application une fois appelée. Sur certains systèmes, c'est nécessaire pour
utiliser les flèches.
- enable-meta-key (On)
-
Quand configurée à On, readline essayera d'activer toutes les touches de
modificateur Méta que le terminal peut prendre en charge une fois
appelé. Sur de nombreux terminaux, la touche Méta est utilisée pour
saisir des caractères sur huit bits.
- expand-tilde (Off)
-
Si configurée à On, le développement du tilde est effectué lorsque
readline tente un complètement de commandes.
- history-preserve-point (Off)
-
Si configurée à On, le programme d'historique tente de placer le curseur
au même endroit sur chaque ligne d'historique récupérée avec
previous-history ou next-history.
- history-size (unset)
-
Configure le nombre maximal d'éléments sauvegardés dans la file de
l'historique. Si configuré à zéro, tous les éléments sont effacés et aucun
nouvel élément n’est sauvegardé. Si configuré à une valeur strictement
négative, le nombre d'éléments de la file d’historique n'est pas limité. Par
défaut, le nombre d’éléments est configuré à la valeur de la variable
HISTSIZE de l'interpréteur. En cas de tentative de régler history-size
à une valeur non numérique, le nombre maximal d'éléments est configuré
à 5OO.
- horizontal-scroll-mode (Off)
-
Quand configurée à On, readline utilisera une seule ligne d'affichage et
fera défiler la saisie horizontalement sur une seule ligne d'écran quand
elle devient plus longue que la largeur de l'écran, plutôt que de faire un
retour à la ligne. Ce réglage est activé automatiquement pour les terminaux
de hauteur 1.
- input-meta (Off)
-
Si configurée à On, readline acceptera des saisies sur huit bits
(autrement dit il ne supprimera pas le huitième bit), quel que soit le
terminal utilisé. Le nom meta-flag est un synonyme pour cette
variable. La configuration par défaut est Off, mais readline la fixe à
On si le paramètre linguistique régional contient des caractères
8 bits. Cette variable dépend du paramètre linguistique régional LC_CTYPE
et peut être modifiée si le paramètre linguistique régional est changé.
- isearch-terminators (« C-[C-J »)
-
La chaîne de caractères qui doit terminer une recherche incrémentale sans
que le caractère ne soit exécuté comme une commande. Si cette variable n'a
pas reçu de valeur, les caractères ESC et C-J termineront une
recherche incrémentale.
- keymap (emacs)
-
Configure le jeu de raccourcis readline actuel. 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 équivalent à
vi-command ; emacs est équivalent à emacs-standard. La valeur par
défaut est emacs ; la valeur de editing-mode modifie aussi le jeu de
raccourcis par défaut.
- keyseq-timeout (500)
-
Indique le temps que readline attendra un caractère lors de la lecture
d’une suite de touches ambiguë (c’est-à-dire qui peut former une suite de
touches complète en utilisant l’entrée lue jusqu’à présent, ou accepter une
entrée supplémentaire pour compléter une suite de touches plus longue). Si
aucune entrée n’est reçue pendant le temps d’attente, readline utilisera
la suite la plus courte, mais complète. La valeur est indiquée en
milliseconde, donc une valeur de 1000 signifie que readline attendra
pendant une seconde une entrée supplémentaire. Si cette variable est
configurée à une valeur inférieure ou égale à zéro, ou à une valeur non
numérique, readline attendra la saisie d’une autre touche pour décider de
la suite de touches à compléter.
- mark-directories (On)
-
Si configurée à On, une barre oblique est ajoutée aux noms de
répertoires.
- mark-modified-lines (Off)
-
Si configurée à On, les lignes d'historique qui ont été modifiées seront
précédées à l'affichage d'un astérisque (*).
- mark-symlinked-directories (Off)
-
Si configurée à On, une barre oblique est ajoutée aux noms complétés si
ce sont des liens symboliques vers des répertoires (selon la valeur de
mark-directories).
- match-hidden-files (On)
-
Cette variable, quand elle est configurée à On, conduit readline à faire
correspondre des fichiers dont le nom commence par un « . » (fichiers
cachés) lors du complètement de noms de fichiers. Si configurée à Off, le
« . » du début doit être fourni par l'utilisateur dans le nom de fichier à
compléter.
- menu-complete-display-prefix (Off)
-
Si configurée à On, le complètement de menu affiche le préfixe commun à
la liste de complètements possibles (qui peut être vide) avant de tourner
dans la liste.
- output-meta (Off)
-
Si configurée à On, readline affichera directement les caractères ayant
leur huitième bit défini plutôt que d'utiliser une suite de caractères de
protection avec préfixe méta. La configuration par défaut est Off, mais
readline la fixe à On si le paramètre linguistique régional contient des
caractères 8 bits. Cette variable dépend du paramètre linguistique régional
LC_CTYPE et peut être modifiée si le paramètre linguistique régional est
changé.
- page-completions (On)
-
Si configurée à On, readline utilise un afficheur de texte interne du
type more pour afficher les complètements possibles sur un seul plein
écran.
- print-completions-horizontally (Off)
-
Si configurée à On, readline affichera les complètements correspondants
triés horizontalement dans l'ordre alphabétique plutôt que verticalement.
- revert-all-at-newline (Off)
-
Si configurée à On, readline annulera toutes les modifications des
lignes d'historique avant de s'arrêter quand accept-line est exécuté. Par
défaut les lignes d'historique peuvent être modifiées et conservent les
listes d'annulation individuelles au fur et à mesure des appels à
readline.
- show-all-if-ambiguous (Off)
-
Cela modifie le comportement par défaut des fonctions de complètement. Si
configurée à On, les mots qui ont plus d'un complètement possibles
conduisent à l'affichage immédiat des correspondances plutôt qu'à l'émission
d'une alarme.
- show-all-if-unmodified (Off)
-
Cela modifie le comportement par défaut des fonctions de complètement de
façon similaire à show-all-if-ambiguous. Si configurée à On, les mots
qui ont plus d'un complètement possible sans aucun complètement partiel
possible (les complètements possibles ne partagent pas de préfixe commun)
conduisent à l'affichage immédiat des correspondances plutôt qu'à l'émission
d'une alarme.
- show-mode-in-prompt (Off)
-
Si configurée à On, ajoute une chaîne au début de l’invite indiquant le
mode d’édition : Emacs, commande Vi ou insertion Vi. L'utilisateur peut
configurer la chaîne de mode (par exemple, emacs-mode-string).
- skip-completed-text (Off)
-
Si configurée à On, modifie le comportement par défaut du complètement
lors de l'insertion d'une unique correspondance dans la ligne. Elle n'est
utilisée que lors d'un complètement effectué au milieu d'un mot. Si elle est
activée, readline n'insère pas de caractères de complètement correspondant à
des caractères situés après le curseur dans le mot en train d'être complété,
ainsi les parties du mots situées après le curseur ne sont pas dupliquées.
- vi-cmd-mode-string ((cmd))
-
Si la variable show-mode-in-prompt est activée, cette chaîne est affichée
immédiatement avant la dernière ligne de la première invite quand le mode
d'édition de vi est activé et en mode commande. La valeur est développée
comme un raccourci clavier, donc le jeu standard de préfixes meta- ou
Control- et de séquences de protections par contre-oblique est
disponible. Utiliser les caractères de protection \1 et \2 pour ouvrir et
fermer les séquences de caractères non imprimables, ce qui peut être utilisé
pour inclure une suite de caractères de contrôle du terminal dans la chaîne
de mode.
- vi-ins-mode-string ((ins))
-
Si la variable show-mode-in-prompt est activée, cette chaîne est affichée
immédiatement avant la dernière ligne de la première invite quand le mode
d'édition de vi est activé et en mode insertion. La valeur est développée
comme un raccourci clavier, donc le jeu standard de préfixes meta- ou
Control- et de séquences de protections par contre-oblique est
disponible. Utiliser les caractères de protection \1 et \2 pour ouvrir et
fermer les séquences de caractères non imprimables, ce qui peut être utilisé
pour inclure une suite de caractères de contrôle du terminal dans la chaîne
de mode.
- visible-stats (Off)
-
Si configurée à On, un caractère indiquant le type de fichier, comme
signalé par stat(2) est ajouté aux noms de fichiers en affichant les
complètements possibles.
Constructions conditionnelles de readline
Readline implémente un mécanisme inspiré des fonctionnalités de compilation
conditionnelle du préprocesseur C qui permet d'effectuer le paramétrage des
raccourcis clavier et des variables selon les résultats de tests. Il y a
quatre directives d'analyse utilisées.
- $if
-
La structure $if permet de choisir les raccourcis selon
le mode d'édition, le terminal utilisé ou l'application utilisant
readline. Le texte du test, après n’importe quel opérateur de
comparaison, va jusqu'à la fin de la ligne ; sauf notation contraire,
aucun caractère n'est nécessaire pour le délimiter.
-
- mode
-
La forme mode= de la directive $if est utilisée pour vérifier si
readline est en mode emacs ou vi. Cela peut être utilisé conjointement à la
commande set keymap, par exemple pour ne configurer les raccourcis des
jeux de raccourcis emacs-standard et emacs-ctlx que si readline
démarre en mode emacs.
- term
-
La forme term= peut être utilisée pour ajouter des raccourcis clavier
spécifiques au terminal, comme associer des suites de touches produites par
des touches de fonction du terminal. Le mot à droite du signe = est
comparé à la fois au nom complet du terminal et à la portion de nom du
terminal qui précède le premier signe -. Cela permet, par exemple, de
faire correspondre sun avec à la fois sun et sun-cmd.
- version
-
Le test de version peut être utilisé pour effectuer des comparaisons avec
des versions particulières de readline. La version est développée selon
la version actuelle de readline. L'ensemble d'opérateurs de comparaison
inclut =, (et ==), !=, <=, >=, < et
>. Le numéro de version fourni à droite de l'opérateur consiste en un
numéro de version majeure, un point décimal facultatif et un numéro de
version mineure facultatif (par exemple, 7.1). Si la version mineure est
omise, on considère que c'est 0. L'opérateur peut être séparé de la
chaîne version et de l'argument du numéro de version par une espace.
- application
-
La structure application est utilisée pour inclure des paramétrages
spécifiques à chaque application. Chaque programme utilisant la bibliothèque
readline configure un nom d'application et un fichier d'initialisation
peut tester une valeur particulière. Ce peut être utilisé pour associer des
suites de touches à des fonctions utiles pour un certain programme. Par
exemple, les commandes suivantes ajoutent une suite de touches qui protège
le mot actuel ou précédant dans bash :
-
$if Bash
# Protéger le mot actuel ou le précédant
"\C-xq": "\eb\"\ef\""
$endif
- variable
-
La structure variable fournit des tests d'égalité simples pour les
variables et les valeurs de readline. Les opérateurs de comparaison permis
sont =, ==, et !=. Le nom de la variable doit être séparé de
l'opérateur par une espace ; l'opérateur peut être séparé de la valeur à
droite par une espace. Les variables de chaîne ainsi que les variables
booléennes peuvent être testées. Les variables booléennes doivent être
comparées aux valeurs on et off.
- $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 exécutées si un $if échoue.
- $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 (consultez
HISTORIQUE ci-dessous) des lignes contenant
une chaîne donnée. Il y a deux modes de recherche : incrémental et non incrémental.
Les recherches incrémentales commencent avant même que l'utilisateur n'ait
terminé de saisir la chaîne recherchée. À chaque caractère saisi, readline
affiche l'élément suivant de l'historique qui correspond à la chaîne déjà
entrée. Une recherche incrémentale nécessite seulement le nombre de
caractères indispensable pour retrouver l'élément d'historique désiré. Les
caractères se trouvant dans la variable isearch-terminators servent à
terminer une recherche incrémentale. Si aucune valeur n'a été affectée à
cette variable, les caractères Échappement (« Escape ») et Contrôle-J
terminent une recherche incrémentale. Contrôle-G permet d'interrompre une
recherche incrémentale et de restaurer la ligne originale. Lorsque la
recherche est finie, l'élément d'historique contenant la chaîne désirée
devient la ligne actuelle.
Pour trouver les autres éléments correspondant dans la file d'historique,
saisissez selon Contrôle-S ou Contrôle-R. Cela recherchera en avant ou en
arrière dans l'historique l'élément suivant correspondant à la chaîne saisie
jusque-là. Toute autre suite de touches associée à une commande readline
interrompra la recherche et exécutera la commande. Par exemple, un
changement de ligne interrompra la recherche et acceptera la ligne,
exécutant ainsi la commande de la file d'historique.
Readline se souvient de la dernière chaîne de recherche incrémentale. Si
deux Contrôle-R sont tapés sans caractère pour définir une nouvelle
recherche de chaîne, toute chaîne mémorisée sera utilisée.
Les recherches non incrémentales lisent la chaîne désirée en entier avant de
démarrer la recherche de correspondance dans la file d'historique. La chaîne
peut être saisie par l'utilisateur ou faire partie du contenu de la ligne
actuelle.
Noms des commandes readline
Ce qui suit est une liste des noms de commandes et les suites de touches
auxquelles elles sont associées par défaut. Les noms de commandes sans suite
de touche les accompagnant ne sont pas associées par défaut. Dans les
descriptions suivantes, le curseur (« point ») se rapporte à la position
actuelle du curseur et la marque se rapporte à une position de curseur
sauvegardée par la commande set-mark. Le texte entre le curseur et la
marque est désigné comme la zone.
Commandes de déplacement
- beginning-of-line (C-a)
-
Reculer au début de la ligne actuelle.
- end-of-line (C-e)
-
Avancer à la fin de la ligne.
- forward-char (C-f)
-
Avancer d'un caractère.
- backward-char (C-b)
-
Reculer d'un caractère.
- forward-word (M-f)
-
Avancer jusqu'à la fin du mot suivant. Les mots sont composés de caractères
alphanumériques (lettres et chiffres).
- backward-word (M-b)
-
Reculer jusqu'au début du mot actuel ou du précédent. Les mots sont composés
de caractères alphanumériques (lettres et chiffres).
- shell-forward-word
-
Avancer jusqu'à la fin du mot suivant. Les mots sont séparés par des
métacaractères non protégés de l'interpréteur.
- shell-backward-word
-
Reculer jusqu'au début du mot actuel ou du précédent. Les mots sont séparés
par des métacaractères non protégés de l'interpréteur.
- previous-screen-line
-
Tenter de déplacer le curseur vers la même colonne physique de l'écran sur
la ligne physique précédente de l'écran. Cela n'aura pas l'effet désiré si
la ligne actuelle de readline n'accepte pas sur d'une ligne physique ou si
le but n'est pas supérieur à la longueur de l'invite plus la largeur de
l'écran.
- next-screen-line
-
Tenter de déplacer le curseur vers la même colonne de l'écran physique sur
la ligne suivante de l'écran physique. Cela n'aura pas l'effet désiré si la
ligne actuelle de readline n'accepte pas plus d'une ligne physique ou si la
longueur de la ligne actuelle de readline n'est pas supérieure à la longueur
de l'invite plus la largeur de l'écran.
- clear-display (M-C-l)
-
Effacer l'écran et, si possible, le tampon de défilement du terminal, puis
rafraîchir la ligne actuelle, en laissant la ligne actuelle au sommet de
l'écran.
- clear-screen (C-l)
-
Effacer l'écran, puis rafraîchir la ligne actuelle, en laissant la ligne
actuelle au sommet de l'écran. S'il y a un argument, rafraîchir la ligne
actuelle sans effacer l'écran.
- redraw-current-line
-
Rafraîchir la ligne actuelle.
Commandes de manipulation de l'historique
- accept-line (changement de ligne, retour chariot)
-
Valider la ligne, sans se soucier de l'emplacement du curseur. Si la ligne
n'est pas vide, l'ajouter à la file d'historique, sous contrôle de la
variable
HISTCONTROL. Si cette ligne est une ligne d'historique
modifiée, restaurer cette dernière.
- previous-history (C-p)
-
Récupérer la commande précédente de la file d'historique, en remontant dans
la file.
- next-history (C-n)
-
Récupérer la commande suivante dans la file d'historique, en descendant dans
la file.
- beginning-of-history (M-<)
-
Récupérer la première ligne de l'historique.
- end-of-history (M->)
-
Retourner à la fin de l'historique de saisie, c'est-à-dire à la ligne en
cours de saisie.
- operate-and-get-next (C-o)
-
Valider la ligne actuelle pour exécution et récupérer de l'historique la
ligne suivante liée à la ligne actuelle pour édition. Si un argument
numérique est fourni, il spécifie l'entrée de l'historique à utiliser à la
place de la ligne actuelle.
- fetch-history
-
Avec argument numérique, récupérer cette entrée de la file d'historique et
en faire la ligne actuelle. Sans argument, revenir à la première entrée de
la file d'historique.'
- reverse-search-history (C-r)
-
Rechercher en arrière dans l'historique, en remontant. C'est une recherche
incrémentale.
- forward-search-history (C-s)
-
Rechercher en avant dans l'historique, en descendant. C'est une recherche
incrémentale.
- non-incremental-reverse-search-history (M-p)
-
Rechercher une chaîne en arrière dans l'historique, en remontant depuis la
ligne actuelle, utiliser une recherche non incrémentale pour une chaîne
fournie par l'utilisateur.
- non-incremental-forward-search-history (M-n)
-
Rechercher une chaîne en avant dans l'historique, utiliser une recherche non
incrémentale pour une chaîne fournie par l'utilisateur.
- history-search-forward
-
Rechercher en avant dans l'historique la chaîne comprise entre le début de
la ligne actuelle et la position du curseur. C'est une recherche non
incrémentale.
- history-search-backward
-
Rechercher en arrière dans l'historique la chaîne comprise entre le début de
la ligne actuelle et la position du curseur. C'est une recherche non
incrémentale.
- history-substring-search-backward
-
Rechercher en arrière dans l'historique la chaîne comprise entre le début de
la ligne actuelle et la position du curseur. La chaîne recherchée peut
trouver une correspondance n'importe où dans une ligne de
l'historique. C'est une recherche non incrémentale.
- history-substring-search-forward
-
Rechercher en avant dans l'historique la chaîne comprise entre le début de
la ligne actuelle et la position du curseur. La chaîne recherchée peut
trouver une correspondance n'importe où dans une ligne de
l'historique. C'est une recherche non incrémentale.
- yank-nth-arg (M-C-y)
-
Insérer, à l'emplacement du curseur, le premier argument de la commande
précédente. Généralement, il s'agit du second mot de la ligne
précédente. Avec un argument n, insérer le n-ième mot de la commande
précédente (les mots sont numérotés à partir de 0). Un argument négatif
insère le n-ième mot en partant de la fin de la commande précédente. Une
fois que l'argument n est traité, l'argument est extrait comme si le
développement d'historique « !n » avait été indiqué.
- yank-last-arg (M-., M-_)
-
Insérer le dernier argument de la commande précédente (le dernier mot de
l'élément précédent de la file d'historique). Avec un argument numérique, se
comporte exactement comme yank-nth-arg. Les appels successifs à
yank-last-arg remontent dans la file d'historique en insérant le dernier
mot (ou le mot indiqué par l'argument du premier appel) de chaque ligne tour
à tour. Tous les arguments numériques fournis à ces appels successifs
déterminent la direction de déplacement dans l'historique. Un argument
négatif modifie la direction dans l'historique (en avant ou en arrière). Les
outils de développement d'historique sont utilisés pour extraire le dernier
mot, comme si le développement d'historique « !$ » avait été indiqué.
- shell-expand-line (M-C-e)
-
Développer, comme le fait l'interpréteur, la ligne actuelle. Cela effectue
le développement des alias et d'historique, ainsi que tous les
développements de mot de l'interpréteur. Consultez ci-dessous
DÉVELOPPEMENT DE L'HISTORIQUE, pour une description détaillée du
développement de l'historique.
- history-expand-line (M-^)
-
Effectuer le développement d'historique sur la ligne actuelle. Consultez
ci-dessous
DÉVELOPPEMENT DE L'HISTORIQUE, pour une description
détaillée.
- magic-space
-
Effectuer le développement de l'historique sur la ligne actuelle et insérer
une espace. Consultez ci-dessous
DÉVELOPPEMENT DE L'HISTORIQUE,
pour une description détaillée.
- alias-expand-line
-
Effectuer le développement des alias sur la ligne actuelle. Consultez
ALIAS ci-dessus pour une description des développements d'alias.
- history-and-alias-expand-line
-
Effectuer le développement de l'historique et des alias sur la ligne
actuelle.
- insert-last-argument (M-., M-_)
-
Un synonyme de yank-last-arg.
- edit-and-execute-command (C-x C-e)
-
Appeler un éditeur sur la ligne de commande actuelle et exécuter le résultat
comme une commande d'interpréteur. Bash tente d'appeler, dans cet ordre,
$VISUAL,
$EDITOR et emacs comme éditeur.
Commande d'édition de texte
- end-of-file (généralement C-d)
-
Le caractère indiquant la fin de fichier, comme défini, par exemple, par
``stty''.
Si ce caractère est lu alors qu’aucun caractère n’est sur la ligne, et que
le curseur est au début de la ligne, readline l’interprète comme le fin de
l’entrée et renvoie
EOF.
- delete-char (C-d)
-
Effacer le caractère sous le curseur. Si cette fonction est associée au même
caractère que le caractère EOF du terminal, comme c’est souvent le cas
avec C-d, consultez les effets dans le paragraphe précédent.
- backward-delete-char (Effacement ou « Rubout »)
-
Effacer le caractère avant le curseur. Lorsque un argument numérique est
indiqué, le texte effacé est sauvegardé dans le tampon circulaire.
- forward-backward-delete-char
-
Effacer le caractère sous le curseur, sauf s'il est en fin de ligne, auquel
cas le caractère avant le curseur est effacé.
- quoted-insert (C-q, C-v)
-
Ajouter littéralement sur la ligne le caractère saisi suivant. Cela permet
d'insérer des caractères comme C-q, par exemple.
- tab-insert (C-v TAB)
-
Insérer un caractère de tabulation.
- self-insert (a, b, A, 1, !, ...)
-
Insérer le caractère mentionné.
- transpose-chars (C-t)
-
Échanger les caractères se trouvant devant et sous le curseur. Le curseur
est avancé d'un caractère. À la fin d'une ligne, les caractères échangés
sont les deux précédents. Les arguments négatifs n'ont aucun effet.
- transpose-words (M-t)
-
Déplace le mot avant le curseur au-delà du mot après le curseur et déplace
aussi le curseur sur ce mot. Si le curseur est à la fin de la ligne, cela
échange les deux derniers mots de la ligne.
- upcase-word (M-u)
-
Transformer le mot actuel (ou le suivant) en majuscules. Avec un argument
négatif, agir sur le mot précédent mais ne pas déplacer le curseur.
- downcase-word (M-l)
-
Transformer le mot actuel (ou le suivant) en minuscules. Avec un argument
négatif, agir sur le mot précédent mais ne pas déplacer le curseur.
- capitalize-word (M-c)
-
Passer en majuscule l'initiale du mot actuel (ou du suivant). Avec un
argument négatif, agir sur le mot précédent mais ne pas déplacer le curseur.
- overwrite-mode
-
Basculer en mode d'écrasement. Avec un argument numérique explicite
strictement positif, bascule en mode d'écrasement. Avec un argument
numérique explicite négatif ou nul, bascule en mode d'insertion. Cette
commande n'affecte que le mode emacs ; le mode vi écrase de façon
différente. Chaque appel à readline() démarre en mode d'insertion. En
mode d'écrasement, les caractères associés à self-insert remplacent le
texte sous le curseur plutôt que de déplacer le texte vers la droite. Les
caractères associés à backward-delete-char remplacent le caractère avant
le curseur par une espace. Par défaut, cette commande n'est pas associée.
Effacement et récupération
- kill-line (C-k)
-
Effacer le texte depuis la position du curseur jusqu'à la fin de la ligne.
- backward-kill-line (C-x Effacement)
-
Effacer en arrière jusqu'au début de ligne.
- unix-line-discard (C-u)
-
Effacer le texte entre le début de la ligne et la position du curseur. Le
texte est sauvegardé 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 actuel ou, si entre des
mots, jusqu'à la fin du mot suivant. Les limites des mots sont identiques à
celles utilisées par forward-word.
- backward-kill-word (M-Effacement)
-
Effacer le mot sous le curseur. Les limites de mots sont identiques à celles
utilisées par backward-word.
- shell-kill-word
-
Effacer le texte entre le curseur et la fin du mot actuel ou, si entre des
mots, jusqu'à la fin du mot suivant. Les limites des mots sont identiques à
celles utilisées par shell-forward-word.
- shell-backward-kill-word
-
Effacer le mot sous le curseur. Les limites de mots sont identiques à celles
utilisées 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 effacé est sauvegardé 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 supprimé est sauvegardé 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 actuelle.
- copy-region-as-kill
-
Copier le texte de la zone vers le tampon circulaire.
- copy-backward-word
-
Copier le mot précédant le curseur dans le tampon circulaire. Les limites de
mots sont identiques à celles de backward-word.
- copy-forward-word
-
Copier le mot suivant le curseur dans le tampon circulaire. Les limites de
mots sont identiques à celles de forward-word.
- yank (C-y)
-
Récupérer le texte au sommet du tampon circulaire à la position du curseur
dans le tampon.
- yank-pop (M-y)
-
Exécuter une rotation du tampon circulaire et récupérer le texte situé à son
nouveau sommet. Cela ne fonctionne qu'après yank ou yank-pop.
Arguments numériques
- digit-argument (M-0, M-1, ..., M--)
-
Ajouter ce chiffre à l'argument en cours de rédaction ou créer un nouvel
argument. M-- crée un argument négatif.
- universal-argument
-
Il s'agit d'une autre façon d'indiquer un argument. Si cette commande est
suivie d'un ou plusieurs chiffres facultativement précédés d'un signe moins,
ces chiffres définissent l'argument. Si la commande est suivie de chiffres,
une nouvelle exécution de universal-argument termine l'argument
numérique, mais est ignorée dans les autres cas. Par exception, si cette
commande est suivie immédiatement par un caractère qui n'est ni un chiffre
ni le signe moins, le compteur d'arguments de la commande suivante est
multiplié par 4. Le compteur d'arguments est initialement à un, donc la
première exécution de cette commande amène le compteur d'arguments à quatre,
une seconde fois porte le compteur d'arguments à seize et ainsi de suite.
Complètement
- complete (TAB)
-
Essayer d'effectuer un complètement du texte situé avant le curseur. Bash
effectue le complètement en considérant tour à 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 complètement de nom
de fichier est essayé.
- possible-completions (M-?)
-
Afficher les complètements possibles pour le texte situé avant le curseur.
- insert-completions (M-*)
-
Insérer avant le curseur l'ensemble des complètements qui auraient été
produits par possible-completions.
- menu-complete
-
Analogue à complete, mais en remplaçant le mot à compléter par une seule
correspondance de la liste des complètements possibles. Des exécutions
répétées de menu-complete parcourent la liste des complètements
possibles, en insérant chaque correspondance tour à tour. À la fin de la
liste des complètements, une alarme est émise (selon la configuration de
bell-style) et le texte original est restauré. Un argument de n
déplace de n positions dans la liste des correspondances. Un argument
négatif peut être utilisé pour revenir en arrière dans la liste. Cette
commande est destinée à être associée à la touche TAB, mais ne l'est pas
par défaut.
- menu-complete-backward
-
Identique à menu-complete, mais se déplace en arrière dans la liste des
complètements possibles, comme si un argument négatif avait été passé à
menu-complete. Cette commande n'est associée à aucune touche par défaut.
- delete-char-or-list
-
Effacer le caractère sous le curseur sauf au début ou en fin de ligne (comme
delete-char). En fin de ligne, se comporte comme
possible-completions. Cette commande n'est associée à aucune touche par
défaut.
- complete-filename (M-/)
-
Essayer le complètement des noms de fichiers sur le texte situé avant le
curseur.
- possible-filename-completions (C-x /)
-
Afficher les complètements possibles du texte situé avant le curseur, traité
comme un nom de fichier.
- complete-username (M-~)
-
Essayer le complètement sur le texte situé avant le curseur, en le traitant
comme un nom d'utilisateur.
- possible-username-completions (C-x ~)
-
Afficher les complètements possibles du texte situé avant le curseur, en le
traitant comme un nom d'utilisateur.
- complete-variable (M-$)
-
Essayer le complètement sur le texte situé avant le curseur, en le traitant
comme une variable de l'interpréteur.
- possible-variable-completions (C-x $)
-
Afficher les complètements possibles du texte situé avant le curseur, en le
traitant comme une variable de l'interpréteur.
- complete-hostname (M-@)
-
Essayer le complètement sur le texte situé avant le curseur, en le traitant
comme un nom de machine.
- possible-hostname-completions (C-x @)
-
Afficher les complètements possibles du texte situé avant le curseur, en le
traitant comme un nom de machine.
- complete-command (M-!)
-
Essayer le complètement sur le texte situé avant le curseur, en le traitant
comme un nom de commande. Le complètement des commandes essaie de faire
correspondre le texte, dans cet ordre, aux alias, mots réservés, fonctions
de l'interpréteur, commandes internes de l'interpréteur et finalement les
noms de fichiers exécutables.
- possible-command-completions (C-x !)
-
Afficher les complètements possibles du texte situé avant le curseur, en le
traitant comme un nom de commande.
- dynamic-complete-history (M-TAB)
-
Essayer le complètement du texte situé avant le curseur, en le comparant aux
lignes de la file d'historique lui correspondant pour les complètements
possibles.
- dabbrev-expand
-
Essayer le menu de complètement du texte situé avant le curseur, en le
comparant aux lignes de la file d'historique lui correspondant pour les
complètements possibles.
- complete-into-braces (M-{)
-
Effectuer un complètement en noms de fichiers et insérer la liste des
complètements possibles entre accolades afin que la liste soit exploitable
par l'interpréteur (consultez Développement des accolades ci-dessus).
Macros clavier
- start-kbd-macro (C-x ()
-
Démarrer la mémorisation dans la macro en cours des caractères tapés.
- end-kbd-macro (C-x ))
-
Arrêter la mémorisation dans la macro en cours des caractères saisis et
conserver la définition.
- call-last-kbd-macro (C-x e)
-
Réexécuter la dernière macro définie, en agissant comme si les caractères
contenus dans cette macro étaient saisis au clavier.
- print-last-kbd-macro ()
-
Afficher la dernière macro de clavier définie, mise en forme de façon à être
incorporée dans un fichier inputrc.
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'édition en cours et émettre une alarme de terminal (selon la
configuration de la variable bell-style).
- do-lowercase-version (M-A, M-B, M-x, ...)
-
Si le caractère x précédé de Méta est en majuscule, exécuter la commande
qui est associée aux caractères minuscules correspondants. Le comportement
est non défini si x est déjà en minuscule.
- prefix-meta (ESC)
-
Considérer le prochain caractère saisi comme un Méta.
ESC f est
équivalent à Meta-f.
- undo (C-_, C-x C-u)
-
Fonction d'annulation incrémentale, chaque ligne étant mémorisée séparément.
- revert-line (M-r)
-
Annuler toutes les modifications sur cette ligne. C’est équivalent à répéter
undo suffisamment de fois pour ramener la ligne à son état initial.
- tilde-expand (M-&)
-
Effectuer le développement du tilde sur le mot actuel.
- set-mark (C-@, M-<space>)
-
Placer la marque à la position actuelle du curseur. Si un argument numérique
est fourni, la marque est posée à la position correspondante.
- exchange-point-and-mark (C-x C-x)
-
Échanger le curseur et la marque. La position actuelle du curseur est
configurée à la position sauvegardée précédemment et l'ancienne position du
curseur est mémorisée comme la marque.
- character-search (C-])
-
Un caractère est lu et le curseur déplacé à l'occurrence suivante de ce
caractère. Un argument négatif recherche les occurrences précédentes.
- character-search-backward (M-C-])
-
Un caractère est lu et le curseur déplacé à l'occurrence précédente de ce
caractère. Un argument négatif recherche les occurrences suivantes.
- skip-csi-sequence
-
Lire suffisamment de caractères pour englober une suite multitouche comme
celles définies pour des touches comme Début et Fin. De telles suites
commencent par un indicateur de suite de contrôle (« control sequence
indicator » ou CSI), habituellement ESC-[. Si cette suite est associée à
"\[", les touches qui produisent de telles suites n'auront pas d'effet à
moins d'être explicitement associées à une commande readline, au lieu
d'insérer des caractères parasites dans le tampon d'édition. N'est associée
à aucune touche par défaut, mais est souvent associée à ESC-[.
- insert-comment (M-#)
-
Sans argument numérique, la valeur de la variable comment-begin de
readline est insérée au début de la ligne actuelle. Si un argument numérique
est fourni, cette commande agit comme une bascule : si les caractères du
début de ligne ne correspondent pas à la valeur de comment-begin, la
valeur est insérée, sinon, les caractères de comment-begin sont effacés
du début de la ligne. Dans les deux cas, la ligne est acceptée comme si un
changement de ligne avait été saisi. La valeur par défaut de
comment-begin conduit cette commande à transformer la ligne actuelle de
l'interpréteur en commentaire. Si un argument numérique conduit à
l'effacement du caractère de commentaire, la ligne sera exécutée par
l'interpréteur.
- spell-correct-word (C-x s)
-
Effectuer la correction orthographique sur le mot actuel, en le traitant
comme un répertoire ou un nom de fichier, de la même manière que l'option de
l'interpréteur cdspell. Les limites des mots sont identiques à celles
utilisées par shell-forward-word.
- glob-complete-word (M-g)
-
Le mot avant le curseur est traité comme un motif pour un développement de
chemin, avec un astérisque implicitement ajouté. Ce motif est utilisé pour
produire une liste de noms de fichiers correspondants pour de possibles
complètements.
- glob-expand-word (C-x *)
-
Le mot précédant le curseur est considéré comme un motif de développement de
chemin et la liste des fichiers correspondants est insérée à sa place. Si un
argument numérique est fourni, un astérisque est ajouté avant le
développement du chemin.
- glob-list-expansions (C-x g)
-
La liste des développements qui auraient été produits par
glob-expand-word est affichée et la ligne est rafraîchie. Si un argument
numérique est fourni, un astérisque est ajouté devant le développement du
chemin.
- dump-functions
-
Afficher toutes les fonctions et leurs raccourcis clavier sur le flux de
sortie de readline. Si un argument numérique est fourni, la sortie est mise
en forme de façon à être incorporée 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 numérique est fourni, la sortie
est mise en forme de façon à être incorporée dans un fichier inputrc.
- dump-macros
-
Afficher toutes les suites de touches readline associées à des macros et les
chaînes auxquelles elles correspondent. Si un argument numérique est fourni,
la sortie est mise en forme de façon à être incorporée dans un fichier
inputrc.
- display-shell-version (C-x C-v)
-
Afficher des informations sur la version actuelle de bash.
Complètement programmable
Lorsqu'un complètement de mot est tenté pour un argument d'une commande pour
laquelle une spécification de complètement a été définie en utilisant la
commande interne complete (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous), les outils de complètement programmables sont
appelés.
En premier lieu, le nom de la commande est identifié. Si le mot de commande
est vide (complètement essayé en début de ligne vide), toutes les
spécifications de complètement définies par l'option -E de complete
sont utilisées. Si une spécification de complètement a été définie pour
cette commande, elle est utilisée pour produire la liste des complètements
possibles pour le mot. Si le mot de commande est un chemin d'accès complet,
on cherche en premier lieu une spécification de complètement pour le chemin
d'accès complet. Si aucune spécification de complètement n'est trouvée pour
le chemin d'accès complet, une tentative est effectuée pour trouver une
spécification de complètement pour la partie située après la barre oblique
finale. Si ces recherches ne donnent aucun résultat sous forme de
spécification de complètement, toutes les spécifications de complètement
définies par l'option -D de complete sont utilisées par défaut. S'il
n'existe pas de spécification de complètement par défaut, bash tente un
développement d'alias sur le mot de commande en dernier ressort et tente de
trouver une spécification de complètement pour le mot de commande à partir
de n'importe quel développement ayant réussi.
Une fois qu'une spécification de complètement a été trouvée, elle est
utilisée pour produire la liste des mots correspondants. Si aucune
spécification de complètement n'est trouvée, le complètement par défaut de
bash, tel que décrit ci-dessus dans Complètement est effectué.
Tout d'abord, les actions définies par la spécification de complètement sont
utilisées. Seules les correspondances préfixées par le mot à compléter sont
renvoyées. Lorsque l'option -f ou -d sont utilisées pour le
complètement des noms de fichier ou de répertoire, la variable
d'interpréteur
FIGNORE est utilisée pour filtrer les
correspondances.
Tous les complètements indiqués par le motif de développement de chemin de
l'option -G sont ensuite produits. Il n'est pas nécessaire que les mots
produits par le motif correspondent au mot à compléter. La variable de
l'interpréteur
GLOBIGNORE n'est pas utilisée pour filtrer les
correspondances, mais la variable
FIGNORE est utilisée.
Ensuite, la chaîne indiquée comme argument à l'option -W est prise en
compte. Cette chaîne est tout d'abord découpée en utilisant les caractères
de la variable spéciale
IFS comme délimiteurs. Les protections de
l'interpréteur sont prises en compte. Chaque mot est ensuite développé en
utilisant les développements d'accolades, du tilde, des paramètres et des
variables, de même que la substitution de commande et le développement
arithmétique comme décrit ci-dessus dans
DÉVELOPPEMENTS. Les
résultats sont découpés en utilisant les règles décrites ci-dessus dans
Découpage en mots. Les résultats du développement sont comparés au mot à
compléter en considérant ce dernier comme préfixe et les mots correspondants
deviennent les complètements possibles.
Après la création de ces correspondances, toute fonction de l'interpréteur
ou commande indiquée avec les options -F et -C est appelée. Lorsque la
commande ou la fonction est appelée, les variables
COMP_LINE,
COMP_POINT,
COMP_LINKEY, et
COMP_POINTYPE se
voient affectées de valeurs comme décrit ci-dessus dans Variables de l'interpréteur. Si une fonction de l'interpréteur est appelée, les
variables
COMP_WORDS et
COMP_CWORD sont également
créées. Lorsqu'une fonction ou une commande est appelée, le premier argument
($1) est le nom de la commande dont les arguments doivent être complétés,
le deuxième argument ($2) est le mot à compléter et le troisième argument
($3) est le mot précédant celui devant être complété sur la ligne de
commande actuelle. Aucun filtrage des complètements produits pour le mot à
compléter n'est effectué ; la fonction ou la commande a toute liberté dans
la production des correspondances.
Toute fonction indiquée avec -F est appelée en premier. La fonction peut
utiliser tous les outils de l'interpréteur, incluant la commande interne
compgen décrite ci-dessous, pour produire les correspondances. Elle doit
mettre les complètements possibles dans la variable tableau
COMPREPLY, un par élément de tableau.
Ensuite, toute commande indiquée avec l'option -C est appelée dans un
environnement équivalent à la substitution de commande. Elle devrait
afficher une liste des complètements possibles, un par ligne, sur la sortie
standard. Si nécessaire, une contre-oblique peut être utilisée pour protéger
un caractère de changement de ligne.
Après la création de tous les complètements possibles, tout filtre, indiqué
avec l'option -X, est appliqué à la liste. Ce filtre est un motif comme
dans le développement des chemins ; un & dans le motif est remplacé par
le texte du mot en cours de complètement. Un & littéral peut être protégé
par une contre-oblique ; la contre-oblique est supprimée avant la tentative
de mise en correspondance. Tout complètement qui correspond au motif sera
supprimé de la liste. Un ! au début du motif provoque la négation de ce
motif ; dans ce cas, tout complètement ne correspondant pas au motif sera
supprimé de la liste. Si l'option d'interpréteur nocasematch est activée,
la mise en correspondance est effectuée sans tenir compte de la casse des
caractères alphabétiques.
Finalement, tous préfixe et suffixe indiqués avec les options -P et -S
sont ajoutés à chacun des éléments de la liste de complètement et le
résultat est renvoyé au programme de complètement de readline comme étant la
liste des complètements possibles.
Si les opérations précédemment appliquées ne produisent aucune
correspondance et si l'option -o dirnames a été fournie à complete
lorsque la spécification de complètement a été définie, le complètement des
noms de répertoire est tenté.
Si l'option -o plusdirs a été fournie à complete lors de la définition
de la spécification de complètement, le complètement des noms de répertoires
est tenté et toute correspondance est ajoutée aux résultats des autres
actions.
Par défaut, si une spécification de complètement est trouvée, tout ce
qu'elle produit est renvoyé au programme de complètement comme un jeu
complet des complètements possibles. Les complètements par défaut de bash
ne sont pas tentés et le complètement de fichiers par défaut de readline est
désactivé. Si l'option -o bashdefault a été fournie à complete lors de
la définition de la spécification de complètement, les complètements par
défaut de bash sont tentés si la spécification de complètement ne produit
aucune correspondance. Si l'option -o default a été fournie à complete
lors de la définition de la spécification de complètement, le complètement
par défaut de readline sera effectué si la spécification de complètement
(et, si tentés, les complètements par défaut de bash) ne produit aucune
correspondance.
Lorsqu'une spécification de complètement indique qu'un complètement de nom
de répertoire est souhaité, les fonctions de complètement programmable
forcent readline à ajouter une barre oblique pour compléter les noms qui
sont des liens symboliques vers des répertoires, selon la valeur de la
variable mark-directories de readline, indépendamment du paramétrage de
la variable mark-symlinked-directories de readline.
La modification dynamique des complètements est également possible. C'est
particulièrement utile combiné avec un complètement par défaut indiqué à
l'aide de complete -D. Les fonctions de l'interpréteur exécutés comme
gestionnaires de complètement permettent d'annoncer que le complètement
devrait être réessayé en renvoyant un état final de 124. Si une fonction de
l'interpréteur renvoie 124, et modifie la spécification de complètement
associée à la commande sur laquelle le complètement est essayé (fournie
comme premier argument quand la fonction est exécutée), le complètement
programmable recommence depuis le début, en essayant de trouver une nouvelle
spécification de complètement pour cette commande. Un jeu de complètements
peut ainsi être construit dynamiquement lorsque le complètement est essayé,
plutôt que d'être chargé entièrement au début.
Par exemple, en supposant l'existence d'une bibliothèque de spécifications
de complètement, chacune conservée dans un fichier correspondant au nom de
la commande, la fonction de complètement par défaut suivante chargerait les
complètements de façon dynamique :
_completion_loader()
{
. "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
}
complete -D -F _completion_loader -o bashdefault -o default
HISTORIQUE
Quand l'option -o history de la commande interne set est activée,
l'interpréteur donne accès à un historique des commandes, c'est-à-dire la
liste des commandes précédemment utilisées. La valeur de la variable
HISTSIZE est utilisée comme nombre de commandes à sauvegarder dans la
file d'historique. Le texte des
HISTSIZE dernières commandes (par
défaut 500) est sauvegardé. L'interpréteur conserve chaque commande dans la
file d'historique avant le développement des paramètres et des variables
(consultez
DÉVELOPPEMENTS ci-dessus) mais après avoir effectué le
développement de l'historique, selon les valeurs des variables de
l'interpréteur
HISTIGNORE et
HISTCONTROL.
Au démarrage, l'historique est initialisé avec le fichier dont le nom est
contenu dans la variable
HISTFILE (par défaut
~/.bash_history). Le fichier désigné par la valeur de
HISTFILE
est tronqué si nécessaire, pour ne pas contenir plus de lignes que le nombre
précisé par
HISTFILESIZE. Si HISTFILESIZE est détruite, ou
définie à NULL, une valeur non numérique ou une valeur numérique strictement
inférieure à zéro, le fichier d’historique n’est pas tronqué. Quand le
fichier d'historique est lu, les lignes commençant par le caractère de
commentaire d'historique suivi immédiatement par un chiffre sont considérées
comme des horodatages de la ligne d'historique précédente. Ces horodatages
sont facultativement affichés en fonction de la valeur de la variable
HISTTIMEFORMAT. Lorsqu'un interpréteur avec historique activé se termine,
les
HISTSIZE dernières lignes de la file d'historique sont copiées
dans le fichier
HISTFILE. Si l'option d'interpréteur histappend
est activée (consultez la description de shopt dans
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous), les lignes sont ajoutées au fichier
d'historique, sinon le fichier est écrasé. Si
HISTFILE est
inexistante ou si le fichier d'historique n'est pas accessible en écriture,
l'historique n'est pas sauvegardé. Si la variable
HISTTIMEFORMAT
est configurée, les horodatages sont écrits dans le fichier d'historique,
repérés par le caractère de commentaire d'historique, afin d'être conservés
au fur et à mesure des sessions de l'interpréteur. Le caractère de
commentaire d'historique est utilisé pour distinguer l'horodatage des autres
lignes de l'historique. Après la sauvegarde de l'historique, le fichier
d'historique est tronqué pour ne pas contenir plus de
HISTFILESIZE
lignes. Si
HISTFILESIZE est détruite, ou définie à NULL, une
valeur non numérique ou une valeur numérique inférieure à zéro, le fichier
d’historique n’est pas tronqué.
La commande interne fc (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous) permet d'afficher, d'éditer ou de réexécuter 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'édition en ligne de commande, des
commandes de recherche donnent accès à la file d'historique.
L'interpréteur permet de configurer quelles commandes seront sauvegardées
dans la file d'historique. Les variables
HISTCONTROL et
HISTIGNORE peuvent être configurées pour conduire l'interpréteur à ne
sauvegarder qu'un sous-ensemble des commandes saisies. L'option
d'interpréteur cmdhist, si activée, conduit l'interpréteur à essayer de
sauvegarder chaque ligne d'une commande multiligne dans le même élément de
l'historique, en ajoutant des points-virgules si nécessaire pour préserver
l'exactitude de la syntaxe. L'option d'interpréteur lithist conduit
l'interpréteur à sauvegarder les commandes avec des changements de ligne
incorporés plutôt que des points-virgules. Consultez ci-dessous la
description de la commande interne shopt dans
COMMANDES INTERNES DE L'INTERPRÉTEUR pour des détails sur la création et la destruction des
options d'interpréteur.
DÉVELOPPEMENT DE L'HISTORIQUE
L'interpréteur propose des possibilités de développement de l'historique qui
sont semblables à celles de csh. Ce paragraphe décrit quelles syntaxes
sont disponibles. Cette fonctionnalité est activée par défaut dans les
interpréteurs interactifs et peut être désactivée en utilisant l'option
+H de la commande interne set (consultez
COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Les interpréteurs non interactifs
n'effectuent pas de développement d'historique par défaut.
Le développement de l'historique permet d'insérer des mots de la file
d'historique dans le flux de saisie, facilitant la répétition de commandes,
l'insertion des arguments d'une ligne antérieure dans la saisie en cours ou
la correction rapide d'erreurs dans les commandes précédentes.
Le développement de l'historique est effectué immédiatement après la lecture
d'une ligne complète, avant que l'interpréteur ne la décompose en mots. Il
est effectué sur chaque ligne individuellement sans prendre en compte une
protection sur les lignes précédentes. Il se déroule en deux parties. La
première consiste à déterminer la ligne de la file d'historique à utiliser
pour les substitutions, la seconde permet de sélectionner les parties de la
ligne à inclure dans la ligne actuelle. La ligne sélectionnée dans
l'historique est l'événement et les parties de cette ligne à réutiliser
sont des mots. Plusieurs modificateurs permettent de manipuler les
mots sélectionnés. La ligne est découpée en mots de la même façon que lors
de la lecture d'une saisie, ainsi plusieurs mots séparés par des
métacaractères et encadrés par des guillemets sont considérés comme un
unique mot. Le développement de l'historique est introduit par l'apparition
du caractère de développement, qui est ! par défaut. Seules la
contre-oblique (\) et les guillemets simples permettent de protéger
le caractère de développement de l'historique, mais le caractère de
développement de l'historique est aussi traité comme protégé s'il précède
immédiatement le guillemet double fermant dans une chaîne entre guillemets
doubles.
Plusieurs caractères empêchent le développement de l'historique s'ils se
trouvent immédiatement après le caractère de développement de l'historique,
même s'il n'est pas protégé : espace, tabulation, changement de ligne,
retour chariot et =. Si l'option d'interpréteur extglob est activée,
( empêchera aussi le développement.
Plusieurs options d'interpréteur, configurables avec la commande interne
shopt, permettent d'ajuster le comportement du développement de
l'historique. Si l'option d'interpréteur histverify est activée
(consultez la description de la commande interne shopt ci-dessous) et si
readline est utilisée, les substitutions d'historique ne sont pas
transmises tout de suite à l'analyseur de l'interpréteur. À la place, la
ligne développée est rechargée dans le tampon d'édition de readline pour
permettre des modifications ultérieures. Si readline est utilisée et si
l'option histreedit est activée, une substitution d'historique qui échoue
est rechargée dans la mémoire tampon de readline pour
correction. L'option -p de la commande interne history peut servir à
examiner ce qu'une substitution donnera avant de l'employer
réellement. L'option -s de la commande interne history permet
d'ajouter des commandes à la fin de la file d'historique sans les avoir
effectivement exécutées, afin qu'elles soient disponibles pour des rappels
ultérieurs.
L'interpréteur offre le contrôle des divers caractères utilisés par le
mécanisme de développement de l'historique (consultez la description de
histchars ci-dessus dans Variables de l'interpréteur). L'interpréteur
utilise le caractère de commentaire d'historique pour repérer l'horodatage
lors de l'écriture du fichier d'historique.
Indicateur d'événement
Un indicateur d'événement est une référence à un élément ligne de commande
dans la file d'historique. Sauf s'il s'agit d'une référence absolue, les
événements sont relatifs à la position actuelle dans la file d'historique.
- !
-
Débute une substitution d'historique, sauf s'il est suivi par un blanc,
changement de ligne, retour chariot, = ou ( (lorsque l'option d'interpréteur
extglob est activée en utilisant la commande interne shopt).
- !n
-
Se rapporte à la ligne de commande n.
- !-n
-
Se rapporte à la commande actuelle moins n.
- !!
-
Se rapporte à la commande précédente. C'est un synonyme de « !-1 ».
- !chaîne
-
Se rapporte à la commande la plus récente précédant la position actuelle
dans la file d'historique commençant par chaîne.
- !?chaîne[?]
-
Se rapporte à la commande la plus récente précédant la position actuelle
dans la file d'historique contenant chaîne. Le ? final peut être omis
si chaîne est immédiatement suivie d'un changement de ligne. Si chaîne
est absente, la chaîne de la dernière recherche est utilisée ; c'est une
erreur s'il n'y a pas de chaîne de recherche précédente.
- ^chaîne_1^chaîne_2^
-
Substitution rapide. Répéter la commande précédente en remplaçant
chaîne_1 par chaîne_2. Équivalent à
« !!:s^chaîne_1^chaîne_2^ »
(consultez Modificateurs ci-dessous).
- !#
-
La ligne entière tapée jusqu'à présent.
Indicateurs de mots
Ces indicateurs servent à sélectionner les mots désirés dans un
événement. Un : sépare l'indicateur d'événements de l'indicateur de
mot. On peut l'omettre si l'indicateur de mot commence par ^, $, *,
- ou %. Les mots sont numérotés depuis le début de la ligne, le
premier étant noté 0 (zéro). Les mots sont insérés dans la ligne
actuelle, séparés par des espaces.
- 0 (zéro)
-
Le zéroième mot. Pour l'interpréteur, c'est le nom de la commande.
- n
-
Le n-ième mot.
- ^
-
Le premier argument, c'est-à-dire le mot 1.
- $
-
Le dernier mot. C’est généralement le dernier argument, mais qui sera
développé en zéroième mot s’il n’y a qu’un seul mot sur la ligne.
- %
-
Le premier mot correspondant à la recherche « ?chaîne? » la plus récente,
si la chaîne de recherche débute par un caractère qui fait partie d'un mot.
- x-y
-
Un intervalle de mots, « -y » permet d'abréger « 0-y ».
- *
-
Tous les mots sauf le zéroième. C'est un synonyme pour « 1-$ ». Il n'est
pas erroné d'utiliser * s'il n'y a qu'un mot dans l'événement ; la chaîne
vide est renvoyée dans ce cas.
- x*
-
Abréviation de x-$.
- x-
-
Abréviation de x-$ comme x*, mais sans le dernier mot. Si x
est absent, la valeur par défaut est 0.
Si un indicateur de mot est fourni sans indication d'événement, la dernière
commande est utilisée.
Modificateurs
Après un indicateur de mot facultatif, une suite d'un ou plusieurs des
modificateurs suivants peut apparaître, chacun précédé par un « : ». Cela
modifie ou corrige le ou les mots sélectionnés à partir de l’événement de
l'historique.
- h
-
Éliminer la fin du chemin d'accès, en ne gardant que le début.
- t
-
Supprimer tout le début d'un chemin d'accès, en ne gardant que la fin.
- r
-
Supprimer un suffixe final de la forme .xxx, en ne gardant que le nom de
base.
- e
-
Supprimer tout sauf le suffixe final.
- p
-
Afficher la nouvelle commande sans l'exécuter.
- q
-
Protéger les mots substitués, pour éviter des substitutions futures.
- x
-
Protéger les mots substitués comme avec q, mais avec séparation des mots
aux blancs et changements de ligne. Les modificateurs q et x
s'excluent mutuellement ; le dernier fourni est utilisé.
- s/ancien/nouveau/
-
Remplacer par nouveau la première occurrence de ancien sur la ligne
d'événement. Tout caractère peut être utilisé comme délimiteur à la place de
/. Le dernier délimiteur est facultatif si c'est le dernier caractère de la
ligne d'événement. Le délimiteur peut être protégé dans ancien et
nouveau avec une seule contre-oblique. Si & apparaît dans nouveau, il
est remplacé par ancien. Une seule contre-oblique protégera le &. Si
ancien est NULL, il est configuré au dernier ancien substitué ou si
aucune substitution n'a eu lieu précédemment, à la dernière chaîne dans
une recherche !?chaîne[?]. Si nouveau est NULL, chaque
correspondance à ancien est supprimée.
- &
-
Répéter la substitution précédente.
- g
-
Appliquer les modifications sur toute la ligne d'événements. C'est utilisé
conjointement à « :s » (par exemple
« :gs/ancien/nouveau/ ») ou « :& ». Si utilisé avec
« :s », tout délimiteur peut être utilisé à la place de / et le dernier
délimiteur est facultatif si c'est le dernier caractère de la ligne
d'événements. Un a peut être utilisé en tant que synonyme de g.
- G
-
Appliquer une fois le modificateur « s » ou « & » suivant à tous les
mots de la ligne d'événement.
COMMANDES INTERNES DE L'INTERPRÉTEUR
Sauf indication contraire, chaque commande interne décrite dans ce
paragraphe comme acceptant des options précédées par - accepte également
la notation -- pour signaler la fin des options. Les commandes internes
:, true, false et test/[ n'acceptent aucune option et ne
traitent pas -- particulièrement. Les commandes internes exit,
logout, return, break, continue, let et shift acceptent et
traitent les arguments commençant par - sans avoir besoin de --. Les
autres commandes internes, qui acceptent des arguments mais qui ne sont pas
déclarées explicitement comme acceptant des options, considèrent les
arguments commençant par - comme des options non valides, donc -- est
obligatoire pour éviter cette interprétation.
- : [arguments]
-
Sans effet ; cette commande ne fait rien d'autre que développer les
arguments et effectuer toute redirection indiquée. L'état renvoyé est
0.
. fichier [arguments]-
- source fichier [arguments]
-
Lire et exécuter les commandes du fichier dans l'environnement de
l'interpréteur actuel, puis renvoyer l'état final de la dernière commande
exécutée depuis fichier. Si le nom du fichier ne contient pas de barre
oblique, les chemins d'accès contenus dans
PATH sont parcourus
pour rechercher le répertoire contenant le fichier, mais le fichier
n'a pas besoin d'être exécutable. Lorsqu'il est recherché dans
PATH le fichier n'a pas besoin d'être exécutable. Lorsque bash n'est
pas en mode POSIX, il examine le répertoire de travail actuel si aucun
fichier n'est trouvé dans
PATH. Si l'option sourcepath de la
commande interne shopt est désactivée, le
PATH n'est pas
parcouru. Si des arguments sont fournis, ils sont transmis dans les
paramètres positionnels lorsque le fichier est exécuté. Sinon les
paramètres positionnels ne sont pas modifiés. Si l'option -T est activée,
. hérite de toutes les captures de DEBUG ; si elle ne l'est pas,
toutes les chaînes de capture de DEBUG sont sauvegardées et restaurées
autour de l'appel à ., et détruit les captures de DEBUG lors de
son exécution. Si -T n'existe pas et si le fichier venant de la source
modifie la capture de DEBUG, la nouvelle valeur est conservée quand .
se termine. L'état renvoyé est l'état de la dernière commande terminée au
sein du script (0 si aucune commande n'a été exécutée) et faux si le
fichier n'est pas trouvé ou ne peut être 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 définis, sous la forme
nom=valeur. Lorsque des arguments sont fournis, un alias est créé pour
chaque nom auquel on a donné une valeur. Une espace finale dans une
valeur conduira à la recherche d'alias dans le mot suivant lors du
développement de l'alias. Pour tous les noms sans valeur fournie dans
la liste d'arguments, le nom et la valeur de l'alias sont affichés. La
commande alias renvoie vrai, à moins qu'un nom n'ait été indiqué pour
lequel aucun alias n'a été défini.
- bg [tâche ...]
-
Reprendre en arrière-plan chaque tâche suspendue, comme si elle avait été
lancée avec &. Si aucune tâche n'est précisée, la notion
d'interpréteur de tâche actuelle est utilisée. bg tâche renvoie
0 sauf si le contrôle des tâches est désactivé, ou, quand le contrôle des
tâches est activé, si une tâche précisée n'a pas été trouvée ou a été
lancée sans contrôle de tâches.
- bind [-m jeu_de_raccourcis] [-lpsvPSVX]
-
- 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éteur
-
- bind [-m jeu_de_raccourcis] suite_de_touches:nom_de_fonction
-
- bind [-m jeu_de_raccourcis] suite_de_touches:commande_readline
-
- bind readline-command-line
-
Afficher les associations de touches readline actuelles et les raccourcis
de fonctions, associer une suite de touches à une fonction ou une macro
readline ou créer une variable readline. Chaque argument qui n'est pas
une option est une commande comme elle devrait apparaître dans un fichier
d'initialisation de readline tel que .inputrc, mais chaque raccourci
ou commande doit être fourni comme un argument indépendant ; 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 être
concerné par les raccourcis ultérieurs. Les noms de jeu_de_raccourcis
possibles sont emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command et vi-insert. vi est équivalent à vi-command
(vi-move est aussi un synonyme) ; emacs est équivalent à
emacs-standard.
- -l
-
Afficher la liste des noms de toutes les fonctions readline.
- -p
-
Afficher les noms des fonctions readline et leurs raccourcis de façon à
pouvoir les relire.
- -P
-
Afficher les noms des fonctions readline et leurs raccourcis.
- -s
-
Afficher les suites de touches readline associées aux macros et les
chaînes correspondantes, de façon à pouvoir les relire.
- -S
-
Afficher les suites de touches readline associées aux macros et les
chaînes correspondantes.
- -v
-
Afficher les noms des variables readline et leurs valeurs de façon à
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 indiquée.
- -u fonction
-
Dissocier toutes les touches associées à fonction.
- -r suite_de_touches
-
Supprimer tout raccourci actuel pour la suite_de_touches.
- -x suite_de_touches:commande_de_l'interpréteur
-
Conduire la commande_de_l'interpréteur à être exécutée chaque fois que la
suite_de_touches est saisie. Quand la commande_de_l'interpréteur est
exécutée, l'interpréteur configure la variable
READLINE_LINE au
contenu du tampon de ligne de readline et les variables
READLINE_POINT et
READLINE_MARK à la position actuelle du
curseur d'insertion et du point d'insertion sauvegardé (la marque)
respectivement. L'interpréteur affecte tout argument numérique fourni par
l'utilisateur à la variable
READLINE_ARGUMENT. S'il n'y a pas
d'argument, la variable n'existe pas. Si la commande exécutée modifie les
valeurs de
READLINE_LINE,
READLINE_POINT ou
READLINE_MARK, ces nouvelles valeurs seront prises en considération dans
l'état d'édition.
- -X
-
Afficher toutes les suites de touches associées aux commandes de
l’interpréteur et aux commandes associées pour pouvoir être réutilisées en
entrée.
La valeur renvoyée est 0, à moins qu'une option inconnue ne soit indiquée
ou qu'une erreur ne se soit produite.
- break [n]
-
Sortir d'une boucle for, while, until ou select. Si n est
indiqué, sortir de n niveaux de boucles. n doit être ≥ 1. Si
n est supérieur au nombre de boucles imbriquées, sortir de toutes les
boucles. La valeur renvoyée est 0, à moins que n ne soit pas supérieur
ou égal à 1.
- builtin commande_interne [arguments]
-
Exécuter la commande interne de l'interpréteur indiquée, en lui passant
les arguments, puis renvoyer son état final. C'est utile lorsqu'une
fonction est définie avec le même nom qu'une commande interne, et que cette
commande est appelée depuis l'intérieur de la fonction. La commande interne
cd est souvent redéfinie de cette façon. L'état renvoyé est faux si la
commande_interne n'est pas une commande interne de l'interpréteur.
- caller [expr]
-
Renvoyer le contexte de tout appel de sous-programme actif (une fonction de
l'interpréteur ou un script lancé avec les commandes internes . ou
source). Sans expr, caller affiche le numéro de ligne et le nom de
fichier du sous-programme actuel. Si un entier positif est fourni comme
expr, caller affiche le numéro de ligne, le nom du sous-programme et
le nom de fichier source correspondant à la position dans la pile d'appels
d'exécution actuelle. Cette information supplémentaire peut être utilisée,
par exemple, pour afficher une trace de la pile. La trame actuelle est la
trame 0. La valeur renvoyée est 0, à moins que l'interpréteur ne soit
pas en train d'exécuter un sous-programme ou que expr ne corresponde pas
à une position correcte dans la pile d'appels.
- cd [-L|[-P [-e]] [-@]] [rép]
-
Remplacer le répertoire de travail actuel par rép. Si rép n’est pas
fourni, la valeur de la variable d’interpréteur
HOME est la valeur
par défaut. La variable
CDPATH définit des chemins de recherche
pour trouver le répertoire contenant rép : tous les noms de répertoire
contenus dans
CDPATH sont parcourus à la recherche de rép. Les
répertoires possibles y sont fournis dans une liste séparés par des
deux-points « : ». Un nom de répertoire NULL dans
CDPATH est
équivalent au répertoire actuel, c'est-à-dire « . ». Si rép commence
par une barre oblique (/), alors
CDPATH n'est pas
utilisé. L'option -P force cd à n'employer que la structure de
répertoires physiques en résolvant les liens symboliques en traversant
rép et avant de traiter les instances de .. dans rép (consultez
aussi l'option -P de la commande interne set) ; l'option -L force à
suivre les liens symboliques en résolvant les liens symboliques après le
traitement des instances de .. dans rép. Si .. apparaît dans
rép, il est traité en supprimant le composant de chemin précédant
directement rép, jusqu’à une barre oblique ou le début de rép. Si
l'option -e est fournie avec -P, et que le répertoire de travail
actuel ne peut pas être déterminé avec succès après un changement de
répertoire avec succès, cd renverra un état d'échec. Sur les systèmes qui
le permettent, l’option -@ présente les attributs étendus associés à un
fichier comme à un répertoire. Un argument - est converti en
$OLDPWD avant d’essayer un changement de répertoire. Si un nom de
répertoire non vide de
CDPATH est utilisé ou si - est le
premier argument et si le changement de répertoire réussit, le chemin absolu
du nouveau répertoire de travail est écrit sur la sortie standard. Si le
changement de répertoire réussit, cd définit la valeur de la variable
d'environnement PWD au nom du nouveau répertoire et règle la variable
d'environnement OLDPWD à celle du répertoire de travail en cours avant le
changement. La valeur renvoyée est vrai si le changement de répertoire a
réussi, faux sinon.
- command [-pVv] commande [arguments ...]
-
Exécuter la commande avec les arguments indiqués, mais en supprimant
le processus habituel de recherche des commandes. Seules les commandes
internes ou les commandes trouvées dans
PATH seront exécutées. Si
l'option -p est indiquée, la recherche de la commande est effectuée en
utilisant une valeur par défaut pour
PATH garantissant de trouver
tous les utilitaires standards. Si l'option -V ou -v est fournie, une
description de la commande est affichée. L'option -v conduit à
n'afficher qu'un seul mot indiquant la commande ou le nom de fichier utilisé
pour appeler la commande. L'option -V fournit une description plus
prolixe. Si l'option -V ou -v est fournie, l'état final est 0 si la
commande a été trouvée et 1 sinon. Si aucune option n'est fournie et
si une erreur s'est produite ou si la commande ne peut être trouvée,
l'état final est 127. Sinon, l'état final de la command interne est
l'état final de commande.
- compgen [option] [mot]
-
Produire les correspondances des complètements possibles pour mot selon
les options, qui peuvent être toute option acceptée par la commande
interne complete à l'exception de -p et -r et écrit le résultat sur
la sortie standard. Lorsqu'on utilise les options -F ou -C, les
diverses variables de l'interpréteur créées par les outils de complètement
programmables, lorsque disponibles, n'auront pas de valeurs utilisables.
Les correspondances seront produites de la même façon que si le programme de
complètement programmable les avait produites directement à partir d'une
spécification de complètement avec les mêmes attributs. Si mot est
indiqué, seuls les complètements qui correspondent à mot sont affichés.
La valeur renvoyée est vrai, sauf si une option incorrecte a été fournie ou
si aucune correspondance n'a été produite.
- complete [-abcdefgjksuv] [-o option-complètement] [-DEI] [-A action] [-G globpat] [-W liste_de_mots]
-
[-F fonction] [-C commande] [-X motif_filtre] [-P
préfixe] [-S suffixe] nom [nom ...]
- complete -pr [-DEI] [nom ...]
-
Indiquer la façon de compléter les arguments de chaque nom. Si l'option
-p est fournie ou si aucune option n'est fournie, les spécifications de
complètement existantes sont affichées de telle façon qu'elles puissent être
réutilisées comme entrée. L'option -r retire une spécification de
complètement à chaque nom fourni ou, si aucun nom n'est fourni, toutes
les spécifications de complètement. L'option -D indique que les options
restantes et les actions devraient s'appliquer au complètement de commande
par « défaut », c'est-à-dire le complètement essayé sur une commande pour
laquelle aucun complètement n'a été préalablement défini. L'option -E
indique que les options restantes et les actions devraient s'appliquer au
complètement de commande « vide », c'est-à-dire le complètement essayé sur
une ligne vide. L'option -I indique que les options restantes et les
actions devraient s'appliquer au complètement du premier mot de non
affectation de la ligne ou après un délimiteur de commande ; ou |, ce
qui est habituellement le complètement d'un nom de commande. Si plusieurs
options sont fournies, l'option -D prend la préséance sur -E et les
deux prennent la préséance sur -I. Si une des -options -D, -E ou
-I est fournie, tous les autres arguments de nom sont ignorés ; ces
complètements ne s'appliquent qu'au cas précisé par l'option.
Le processus d'application de ces spécifications de complètement, lorsqu'un
complètement de mot est tenté, est décrit
above under Programmable Completion.
Les autres options, si indiquées, ont les significations suivantes. Les
arguments des options -G, -W et -X (et, si nécessaire, les options
-P et -S) devraient être protégées pour éviter leur développement
avant que la commande interne complete ne soit appelée.
-
- -o option-complètement
-
L'option-complètement commande plusieurs aspects du comportement des
spécifications de complètement au-delà de la simple production de
complètement. option-complètement peut être l'une des suivantes :
-
- bashdefault
-
Effectuer le reste des complètements par défaut de bash si la
spécification de complètement ne produit aucune correspondance.
- default
-
Utiliser le complètement de nom de fichier par défaut de readline si la
spécification de complètement ne produit aucune correspondance.
- dirnames
-
Effectuer le complètement de nom de répertoire si la spécification de
complètement ne produit aucune correspondance.
- filenames
-
Indiquer à readline que la spécification de complètement produit des noms de
fichiers, ainsi il peut effectuer tout traitement spécifique aux noms de
fichiers (comme ajouter une barre oblique aux noms de répertoires, protéger
les caractères spéciaux ou supprimer les espaces de fin de ligne). Destinée
à être utilisée avec les fonctions de l'interpréteur.
- noquote
-
Indiquer à readline de protéger les mots complétés s’il s’agit de noms de
fichier (la protection des noms de fichier est par défaut).
- nosort
-
Indiquer à readline de ne pas trier par ordre alphabétique la liste des
complètements possibles.
- nospace
-
Indiquer à readline de ne pas ajouter une espace (comportement par défaut)
aux mots complétés en fin de ligne.
- plusdirs
-
Après création de toutes les correspondances définies par la spécification
de complètement, une tentative de complètement de nom de répertoire est
effectuée et toutes les correspondances sont ajoutées aux résultats des
autres actions.
- -A action
-
L'action peut être l'une des suivantes pour produire une liste des
complètements possibles :
-
- alias
-
Noms d'alias. Peut également être indiquée avec -a.
- arrayvar
-
Noms de variable de type tableau.
- binding
-
Noms de raccourci clavier readline.
- builtin
-
Noms de commandes internes de l'interpréteur. Peut également être indiquée
avec -b.
- command
-
Noms de commande. Peut également être indiquée avec -c.
- directory
-
Noms de répertoire. Peut également être indiquée avec -d.
- disabled
-
Noms de commandes internes de l'interpréteur désactivées.
- enabled
-
Noms de commandes internes de l'interpréteur activées.
- export
-
Noms de variables de l'interpréteur exportées. Peut également être indiquée
avec -e.
- file
-
Noms de fichier. Peut également être indiquée avec -f.
- function
-
Noms de fonctions de l'interpréteur.
- group
-
Noms de groupe. Peut également être indiquée avec -g.
- helptopic
-
Sujets de l'aide acceptés par la commande interne help.
- hostname
-
Noms de machine tels qu'ils sont extraits du fichier indiqué par la variable
de l'interpréteur
HOSTFILE.
- job
-
Noms de tâche si le contrôle des tâches est actif. Peut également être
indiquée avec -j.
- keyword
-
Mots réservés de l'interpréteur. Peut également être indiquée avec -k.
- running
-
Noms de tâches en cours d'exécution si le contrôle des tâches est actif.
- service
-
Noms de service. Peut également être indiquée avec -s.
- setopt
-
Arguments corrects de l'option -o de la commande interne set.
- shopt
-
Noms des options d'interpréteur acceptées par la commande interne shopt.
- signal
-
Noms de signaux.
- stopped
-
Noms de tâches suspendues si le contrôle des tâches est actif.
- user
-
Noms d'utilisateur. Peut également être indiquée avec -u.
- variable
-
Noms de toutes les variables de l'interpréteur. Peut également être indiquée
avec -v.
- -C commande
-
La commande est exécutée dans un environnement de sous-interpréteur et sa
sortie est utilisée comme complètements possibles. Les arguments sont
fournis comme avec la fonction -F.
- -F fonction
-
La fonction de l'interpréteur est exécutée dans l'interpréteur
actuel. Lorsqu'une fonction est exécutée, le premier argument ($1) est le
nom de la commande dont les arguments doivent être complétés, le deuxième
argument ($2) est le mot à compléter et le troisième argument ($3) est
le mot précédant celui devant être complété sur la ligne de commande
actuelle. Lorsqu'elle finit, les complètements possibles sont récupérés à
partir de la valeur de la variable de type tableau
COMPREPLY.
- -G globpat
-
Le motif de développement des chemins globpat est développé pour produire
les complètements possibles.
- -P préfixe
-
préfixe est ajouté au début de chaque complètement possible après
application de toutes les autres options.
- -S suffixe
-
suffixe est ajouté à chaque complètement possible après application de
toutes les autres options.
- -W liste_de_mots
-
La liste_de_mots est découpée en utilisant les caractères de la variable
spéciale
IFS comme délimiteurs et chaque mot résultant est
développé. Les protections de l'interpréteur sont prises en compte à
l'intérieur de la liste_de_mots, afin de fournir un mécanisme pour que
les mots puissent contenir des métacaractères ou des caractères de
l'interpréteur dans la valeur de
IFS. Les complètements possibles
sont les éléments de la liste résultante qui correspondent au mot en cours
de complètement.
- -X motif_filtre
-
motif_filtre est un motif utilisé pour le développement des chemins. Il
est appliqué à la liste des complètements possibles produite par les options
et arguments précédents et chaque complètement correspondant à
motif_filtre est supprimé de la liste. Un ! au début du
motif_filtre inverse le motif ; dans ce cas, tout complètement qui ne
correspond pas à motif_filtre est supprimé.
La valeur renvoyée est vrai, sauf si une option incorrecte a été fournie, si
une option comme -p ou -r a été fournie sans un nom d'argument, si
une tentative a été faite pour supprimer une spécification de complètement
pour un nom pour lequel il n'existe pas de spécification, ou si une
erreur est survenue lors de l'ajout d'une spécification de complètement.
- compopt [-o option] [-DEI] [+o option] [nom]
-
Modifier les options de complètement pour chaque nom en fonction des
options, ou pour le complètement en cours d'exécution si aucun nom
n'est fourni. Si aucune option n'est donnée, afficher les options de
complètement pour chaque nom ou pour le complètement actuel. Les valeurs
d’options possibles sont celles décrites ci-dessus pour la commande interne
complete. L'option -D indique que les options restantes devraient
s'appliquer à la commande de complètement par « défaut » ; c'est-à-dire le
complètement essayé sur une commande pour laquelle aucun complètement n'a
été préalablement défini. L'option -E indique que les options fournies
devraient s'appliquer au complètement de commande « vide » ; c'est-à-dire le
complètement essayé sur une ligne vide. L'option I indique que les
options fournies restantes devraient s'appliquer au complètement du premier
mot de non affectation de la ligne ou après un délimiteur de commande ;
ou |, ce qui est habituellement le complètement d'un nom de commande.
La valeur renvoyée est vrai, à moins qu'une option incorrecte ait été
fournie, qu'une tentative ait été faite pour modifier les options pour un
nom pour lequel il n'existe pas de spécification de complètement, ou bien
qu'une erreur de sortie soit survenue.
- continue [n]
-
Reprendre l'exécution à l'itération suivante d'une boucle for, while,
until ou encore select. Si n est indiqué, reprendre l'exécution à
la n-ième boucle imbriquée. n doit être ≥ 1. Si n est
supérieur au nombre de boucles imbriquées, l'exécution reprend à la boucle
la plus externe (la boucle « au sommet »). La valeur renvoyée est 0, à
moins que n ne soit supérieur ou égal à 1.
- declare [-aAfFgiIlnrtux] [-p] [nom[=valeur] ...]
-
- typeset [-aAfFgiIlnrtux] [-p] [nom[=valeur] ...]
-
Déclarer des variables ou leur fournir des attributs. Si aucun nom n'est
indiqué, afficher les valeurs des variables. L'option -p affichera les
attributs et les valeurs de chaque nom. Quand -p est utilisée avec des
arguments nom, les options supplémentaires, à part -f et -F, sont
ignorées. Quand -p est fourni sans argument nom, les attributs et
valeurs de toutes les variables ayant des attributs indiqués par les options
additionnelles seront affichés. Si aucune autre option n'est fournie avec
-p, declare affichera les attributs et valeurs de toutes les variables
de l'interpréteur. L'option -f limite l'affichage aux fonctions de
l'interpréteur. L'option -F empêche l'affichage des définitions de
fonctions : seuls le nom de la fonction et ses attributs sont affichés. Si
l'option d'interpréteur extdebug est activée en utilisant shopt, le
nom du fichier source et le numéro de ligne où chaque nom est défini sont
aussi affichés. L'option -F implique -f. L'option -g force la
création ou la modification de variables avec une portée globale, même si
declare est exécutée dans une fonction de l'interpréteur. Elle est
ignorée dans tous les autres cas. L'option -I fait que les variables
locales héritent des attributs (sauf de l'attribut nameref) et prennent
la valeur de n'importe quelle variable existante du même nom dans son
environnement. S'il n'y a pas de variable existante, la variable locale est
détruite dans un premier temps. Les options suivantes permettent de
restreindre l'affichage aux variables dotées de certains attributs ou de
configurer les attributs des variables :
-
- -a
-
Chaque nom est une variable de type tableau indicé (consultez
Tableaux).
above).
- -A
-
Chaque nom est une variable de type tableau associatif (consultez
Tableaux).
above).
- -f
-
Utiliser seulement les noms de fonctions.
- -i
-
La variable est traitée comme un entier ; l'évaluation arithmétique
(consultez
ÉVALUATION ARITHMÉTIQUE
above)
est effectuée lorsqu'une valeur est affectée à la variable.
- -l
-
Quand cette variable contient une valeur, toutes les majuscules seront
converties en minuscules. L'attribut majuscule est désactivé.
- -n
-
Donner à chaque nom l’attribut nameref, le rendant une référence de
nom vers une autre variable. Cette autre variable est définie par la valeur
de nom. Toutes les références, les affectations et les modifications
d'attribut de nom, à part celles qui utilisent ou modifient l’attribut
-n lui-même, sont réalisées sur la variable référencée par la valeur de
nom. L’attribut -nameref ne peut pas être appliqué aux variables de
type tableau.
- -r
-
Rendre les noms accessibles en lecture seule. Plus aucune valeur ne
pourra leur être affectée et ils ne pourront plus être détruits.
- -t
-
Donner à chaque nom l'attribut trace. Les fonctions tracées héritent
des captures de DEBUG et RETURN de l'interpréteur appelant. L'attribut
trace n'a pas de signification spéciale pour les variables.
- -u
-
Quand cette variable contient une valeur, toutes les minuscules seront
converties en majuscules. L'attribut minuscule est désactivé.
- -x
-
Marquer les noms pour qu'ils soit exportés dans l'environnement des
commandes ultérieures.
En utilisant « + » à la place de « - », l'attribut correspondant est
désactivé, excepté que +a et +A ne peuvent pas être utilisés pour
détruire une variable tableau et que +r n'enlèvera pas l'attribut lecture
seule. Quand ils sont utilisés dans une fonction, declare et typeset
rendent local chaque nom, comme avec la commande local sauf si
l'option -g est fournie. Si un nom de variable est suivi par
=valeur, la valeur de cette variable est configurée à valeur. Lors
de l’utilisation de -a ou -A et de la syntaxe d’affectation composée
pour créer des variables de type tableau, les attributs supplémentaires sont
sans effet jusqu’aux affectations suivantes. La valeur renvoyée est 0,
sauf si une option incorrecte est rencontrée, une tentative est faite de
définir une fonction en utilisant
``-f foo=bar'',
une tentative est faite pour affecter la valeur à une variable en lecture
seule, une tentative est faite d'affecter une valeur à une variable tableau
sans employer la syntaxe d'affectation composée (consultez Tableaux
above),
un des noms n'est pas un nom correct pour une variable de l'interpréteur,
une tentative est faite de supprimer l'attribut lecture seule d'une variable
en lecture seule, une tentative est faite de supprimer l'attribut tableau
d'une variable tableau ou une tentative est faite avec -f d'afficher une
fonction inexistante.
- dirs [-clpv] [+n] [-n]
-
Sans option, afficher la liste des répertoires actuellement
mémorisés. L'affichage par défaut est réalisé sur une seule ligne, les noms
de répertoires étant séparés par des espaces. Les répertoires sont ajoutés à
la liste avec la commande pushd et supprimés avec la commande popd. Le
répertoire courant est toujours le premier répertoire de la pile.
-
- -c
-
Effacer la liste des répertoires en les supprimant tous.
- -l
-
Produire une liste en utilisant les chemins complets ; le format d'affichage
par défaut utilise le tilde pour représenter le répertoire d'accueil.
- -p
-
Afficher la pile des répertoires avec un élément par ligne.
- -v
-
Afficher la pile des répertoires avec un élément par ligne, en préfixant
chaque entrée avec son numéro d'indice dans la pile.
- +n
-
Afficher le n-ième élément de la liste fournie par dirs, lorsqu'appelé
sans options, en comptant à partir de la gauche en commençant à zéro.
- -n
-
Afficher le n-ième élément de la liste fournie par dirs, lorsqu'appelé
sans options, en comptant à partir de la droite en commençant à zéro.
La valeur renvoyée est 0, sauf si une option incorrecte a été fournie ou
si l'indice n dépasse la longueur de la pile des répertoires.
- disown [-ar] [-h] [tâche ... | pid ... ]
-
Sans options, supprimer chaque tâche de la table des tâches actives. Si
aucune tâche n'est précisée et qu’aucune des options -a ou -r n'est
fournie, la tâche actuelle est utilisée. Si l'option -h est indiquée,
aucune tâche n'est supprimée de la table, mais chaque tâche est
marquée pour que le signal
SIGHUP ne lui soit pas envoyé si
l'interpréteur reçoit un signal
SIGHUP. Si aucune tâche n'est
fournie, l'option -a signifie la suppression ou le marquage de toutes les
tâches ; l'option -r sans l'argument tâche restreint les opérations
aux tâches en cours d'exécution. La valeur renvoyée est 0, sauf si
tâche n'indique pas une tâche correcte.
- echo [-neE] [arguments ...]
-
Afficher les arguments, séparés par des espaces, suivis par un saut de
ligne. La valeur renvoyée est 0 sauf en cas d’erreur. Si -n est
indiqué, le changement de ligne final est supprimé. Si l'option -e est
indiquée, l'interprétation des caractères de protection suivants par une
contre-oblique est activée. L'option -E désactive l'interprétation de ces
caractères de protection, même sur les systèmes où ils sont interprétés par
défaut. L'option d'interpréteur xpg_echo peut être utilisée dynamiquement
pour déterminer si echo développe ou non par défaut ces caractères de
protection. echo n'interprète pas -- comme signifiant la fin des
options. echo reconnaît les suites de caractères de protection suivants :
-
- \a
-
alerte (alarme) ;
- \b
-
effacement arrière (« backspace ») ;
- \c
-
supprime tout affichage suivant ;
- \e
-
- \E
-
caractère de protection ;
- \f
-
saut de page (« form feed ») ;
- \n
-
saut de ligne (« new line ») ;
- \r
-
retour chariot
- \t
-
tabulation horizontale ;
- \v
-
tabulation verticale ;
- \\
-
contre-oblique ;
- \0nnn
-
le caractère 8 bits dont la valeur en octal est nnn (zéro à trois
chiffres octaux) ;
- \xHH
-
le caractère 8 bits dont la valeur hexadécimale est HH (un ou deux
chiffres hexadécimaux) ;
- \uHHHH
-
le caractère Unicode (ISO/IEC 10646) dont la valeur hexadécimale est HHHH
(un à quatre chiffres hexadécimaux) ;
- \UHHHHHHHH
-
le caractère Unicode (ISO/IEC 10646) dont la valeur hexadécimale est
HHHHHHHH (un à huit chiffres hexadécimaux) ;
- enable [-a] [-dnps] [-f fichier] [nom ...]
-
Activer ou désactiver les commandes internes de l'interpréteur. Désactiver
une commande interne permet d'exécuter une commande disque ayant le même nom
qu'une commande interne de l'interpréteur, sans avoir à indiquer un chemin
d'accès complet, même quand l'interpréteur recherche normalement les
commandes internes avant les commandes du disque. Si -n est utilisé,
chaque nom indiqué est désactivé, sinon ils sont activés. Par exemple,
pour utiliser le programme binaire test qui se trouve dans
PATH
plutôt que la commande interne, utilisez
``enable -n test''.
L'option -f demande de charger la nouvelle commande interne avec le
nom indiqué depuis le fichier objet partagé sur les systèmes qui le
permettent. bash utilisera la valeur de la variable
BASH_LOADABLES_PATH comme une liste séparée par des deux-points dans
laquelle rechercher le fichier. La valeur par défaut dépend du
système. L'option -d permet de supprimer une commande interne chargée
précédemment avec -f. Si aucun argument nom n'est indiqué ou si
l'option -p est fournie, une liste des commandes internes de
l'interpréteur est affichée. Sans autre option, la liste est celle des
commandes internes actives de l'interpréteur. Si -n est fournie, seules
les commandes désactivées sont affichées. Si -a est fournie, la liste de
toutes les commandes est affichée, avec une indication des activations et
désactivations. Si -s est fournie, la sortie est limitée aux commandes
internes spéciales POSIX. Si aucune option n'est fournie et si nom
n'est pas une commande interne de l'interpréteur, enable tentera de
charger nom à partir d'un objet partagé nommé nom comme si la commande
était
``enable -f name name .
La valeur renvoyée est 0 à moins que nom ne soit pas une commande
interne de l'interpréteur ou qu'il y ait une erreur au chargement d'une
nouvelle commande interne d'un objet partagé.
- eval [arguments ...]
-
Les arguments sont lus et regroupés en une seule commande simple. Cette
commande est alors lue et exécutée par l'interpréteur et son état final est
renvoyé comme valeur de la commande eval. S'il n'y a pas d'arguments
ou uniquement des arguments NULL, eval renvoie 0.
- exec [-cl] [-a nom] [commande [arguments]]
-
Si une commande est indiquée, elle remplace l'interpréteur. Aucun nouveau
processus n'est créé. Les arguments deviennent ceux de la commande. Si
l'option -l est fournie, l'interpréteur place un tiret en guise de
zéroième argument fourni à la commande. C'est ce que fait
login(1). L'option -c conduit à l'exécution de la commande avec un
environnement vide. Si l'option -a est fournie, l'interpréteur transmet
le nom comme zéroième argument. Si la commande ne peut être exécutée
pour une raison quelconque, un interpréteur non interactif termine, sauf si
l'option de l'interpréteur execfail est activée. Dans ce cas, une erreur
est renvoyée. Un interpréteur interactif renvoie une erreur si le fichier ne
peut pas être exécuté. Un sous-interpréteur termine sans conditions si
exec échoue. Si aucune commande n'est indiquée, les éventuelles
redirections sont mises en place dans l'interpréteur actuel et l'état
renvoyé est 0. S'il y a une erreur de redirection, l'état renvoyé est
1.
- exit [n]
-
Termine l'interpréteur avec un état de n. Si n est omis, l'état final
est celui de la dernière commande exécutée. Une capture sur
EXIT
est exécutée avant que l'interpréteur ne se termine.
- export [-fn] [nom[=mot]] ...
-
- export -p
-
Les noms fournis sont marqués pour être exportés automatiquement dans
l'environnement des commandes exécutées par la suite. Si l'option -f est
indiquée, les noms se rapportent à des fonctions. Si aucun nom n'est
donné ou si l'option -p est fournie, une liste de noms de toutes les
variables exportées est affichée. L'option -n conduit à supprimer
l'attribut d'exportation de toutes les variables nommées. Si un nom de
variable est suivi par =mot, la valeur de la variable est configurée à
mot. export renvoie un état final de 0, sauf si une option
incorrecte est rencontrée, si un des noms n'est pas un nom correct de
variable de l'interpréteur, ou si l'option -f est fournie avec un nom
qui n'est pas une fonction.
- fc [-e éditeur] [-lnr] [première] [dernière]
-
- fc -s [motif=nouveau] [commande]
-
La première forme sélectionne un intervalle de commandes de la première à
la dernière dans la file d’historique et l’affiche ou l’édite pour les
réexécuter. La première et la dernière peuvent être indiquées sous
forme de chaînes (pour trouver la dernière commande commençant par cette
chaîne) ou sous forme numérique (un indice dans la file d'historique où un
nombre négatif est utilisé comme décalage par rapport au numéro de la
commande actuelle). Sur la liste, une première ou une dernière de
valeur 0 est équivalente à -1, et -0 est équivalent à la commande
actuelle (habituellement la commande fc) ; autrement, 0 est équivalent
à -1 et -0 n'est pas valable. Si la dernière n'est pas indiquée,
elle est configurée à la commande actuelle si l'on veut afficher la liste
(ainsi
``fc -l -10''
affiche les 10 dernières commandes) et à l'identique de la première
sinon. Si la première n'est pas indiquée, elle est configurée à la
commande précédente pour une édition et à -16 pour l'affichage de liste.
L'option -n supprime l'affichage des numéros dans la liste. L'option
-r inverse l'ordre des commandes. Si l'option -l est indiquée, les
commandes sont affichées sur la sortie standard. Sinon, l'éditeur indiqué
est appelé avec un fichier contenant les commandes sélectionnées. Si aucun
éditeur n'est indiqué, on utilise la valeur de la variable
FCEDIT et la valeur de
EDITOR si
FCEDIT n'existe
pas. Si aucune variable n'existe,
vi
est utilisé. Lorsque l'édition se termine, les commandes sont affichées puis
exécutées.
Dans la seconde forme, la commande est réexécutée après avoir remplacé
chaque instance du motif par nouveau. commande est interprétée de
la même façon que première ci-dessus. Un alias utile pour cela est
``r="fc -s"'',
ainsi en tapant
``r cc''
on relance la dernière commande commençant par
``cc''
et en tapant
``r''
on réexécute la commande précédente.
Lorsque la première forme est utilisée, la valeur renvoyée est 0, sauf si
une option incorrecte est trouvée ou si première ou dernière indiquent
des lignes d'historique hors d'atteinte. Si l'option -e est fournie, la
valeur renvoyée est celle de la dernière commande exécutée ou un échec si
une erreur s'est produite avec le fichier temporaire des commandes. Avec la
seconde forme, l'état renvoyé est celui de la commande réexécutée, sauf si
commande n'indique pas une ligne correcte de l'historique, auquel cas
fc renvoie un échec.
- fg [tâche]
-
Reprendre la tâche au premier plan qui devient la tâche actuelle. Si
aucune tâche n'est précisée, l'interpréteur utilise la notion de tâche actuelle. La valeur renvoyée est celle de la commande placée au premier
plan ou un échec si le contrôle des tâches est désactivé ou, lorsque le
contrôle des tâches est activé, si la tâche n'indique pas une tâche
correcte ou si la tâche indique une tâche lancée sans contrôle des
tâches.
- getopts chaîne_d_options nom [arguments ...]
-
getopts est utilisé par les scripts d'interpréteur pour analyser les
paramètres positionnels. La chaîne_d_options contient l'ensemble des
caractères d'options à reconnaître ; si un caractère est suivi par un
deux-points, l'option est censée avoir un argument, qui devrait en être
séparé par une espace. Les caractères deux-points et le point
d'interrogation ne peuvent pas être utilisés comme caractères d'option. À
chaque appel, getopts place l'option suivante dans la variable de
l'interpréteur dont le nom est fourni, en la créant si elle n'existe pas
et l'indice de l'argument suivant à traiter dans la variable
OPTIND.
OPTIND est initialisée à 1 à chaque appel d'un
interpréteur ou d'un script. Quand une option nécessite un argument,
getopts place cet argument dans la variable
OPTARG. L'interpréteur ne réinitialise pas
OPTIND
automatiquement, il faut le faire manuellement entre des appels multiples à
getopts au sein du même appel d'interpréteur si un nouveau jeu de
paramètres doit être utilisé.
Lorsque la fin des options est atteinte, getopts termine avec une valeur
renvoyée strictement supérieure à zéro.
OPTIND est positionné à
l'indice du premier argument obligatoire et un point d'interrogation
(?) est placé dans la variable nom.
getopts analyse en principe les paramètres positionnels, mais si plus
d'arguments sont indiqués comme valeur d'arguments, getopts analysera
ces derniers à la place.
getopts peut signaler des erreurs de deux façons. Si le premier caractère
de la chaîne_d_options est un deux-points, les erreurs sont signalées de
façon silencieuse. Lors d'un fonctionnement normal, des messages de
diagnostic sont affichés si une option est incorrecte ou s'il manque un
argument d'option. Si la variable
OPTERR est configurée à 0,
aucun message d'erreur ne sera affiché, même si le premier caractère de la
chaîne_d_options n'est pas un deux-points.
Si une option incorrecte est rencontrée, getopts place un point
d'interrogation (?) dans la variable nom, affiche un message
d'erreur (s'il n'est pas en mode silencieux) et détruit la variable
OPTARG. Si getopts fonctionne en mode silencieux, le caractère
d'option est placé dans
OPTARG et aucun message de diagnostic
n'est affiché.
Lorsqu'un argument d'option nécessaire est absent et si getopts n'est pas
silencieux, un point d'interrogation (?) est placé dans la variable
nom,
OPTARG est détruite et un message de diagnostic est
affiché. Si getopts est silencieux, un deux-points (:) est placé
dans la variable nom et
OPTARG est positionné à l'option
monocaractère trouvée.
getopts renvoie vrai si une option, indiquée ou non, est trouvée. Il
renvoie faux si la fin des options est atteinte ou si une erreur se produit.
- hash [-lr] [-p fichier] [-dt] [nom]
-
Chaque fois que hash est invoquée, le chemin d'accès complet de la
commande nom est déterminé en examinant les répertoires de $PATH, et
mémorisé. Tous les chemins précédemment mémorisés sont supprimés. Si
l'option -p est fournie, aucune recherche de chemin d'accès n'est
effectuée et le fichier est utilisé comme chemin d'accès complet pour la
commande. L'option -r conduit l'interpréteur à oublier tous les
emplacements mémorisés. L'option -d conduit l'interpréteur à oublier tous
les emplacements mémorisés de chaque nom. Si l'option -t est fournie,
le chemin d'accès complet de chaque nom correspondant est affiché. Si
plusieurs arguments nom sont fournis avec -t, le nom est affiché
avant chaque chemin d'accès complet associé. L'option -l conduit à
afficher la sortie dans un format réutilisable en entrée. Si aucun argument
n'est indiqué ou si seulement -l est fournie, des informations sur les
commandes mémorisées sont affichées. La valeur renvoyée est vrai, sauf si
nom n'est pas trouvé ou si une option incorrecte est fournie.
- help [-dms] [motif]
-
Afficher des informations d'aide au sujet des commandes internes. Si un
motif est indiqué, help fournit de l'aide sur toutes les commandes
internes correspondant à ce motif, sinon, une liste des commandes
internes et des structures de contrôle de l'interpréteur est affichée.
-
- -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'état renvoyé est 0, sauf si aucune commande ne correspond au motif.
- history [n]
-
- history -c
-
- history -d nombre
-
- history -d début-fin
-
- history -anrw [fichier]
-
- history -p argument [argument ...]
-
- history -s argument [argument ...]
-
Sans options, afficher la liste des commandes de la file d'historique, avec
les numéros de ligne. Les lignes marquées avec un * ont été modifiées. Un
argument n permet de n'afficher que les n dernières lignes. Si la
variable de l'interpréteur
HISTTIMEFORMAT existe et n'est pas
NULL, elle est utilisée comme chaîne de format pour strftime(3) afin
d'afficher l'horodatage associé à chaque élément de l'historique. Aucun
blanc ne sépare l'horodatage ainsi mis en forme de la ligne d'historique. Si
un argument fichier est fourni, il est utilisé comme nom de fichier
d'historique ; sinon la valeur de
HISTFILE est utilisée. Les
options, si fournies, ont les significations suivantes :
-
- -c
-
Effacer la file de l'historique en supprimant tous les éléments.
- -d nombre
-
Supprimer l'entrée d'historique à la position nombre. Si nombre
estnégatif, il est interprété comme relatif à un nombre plus grand que celui
de la dernière position de l'historique, ainsi les indices négatifs comptent
à rebours depuis la fin de l'historique et un indice -1 fait référence à
la commande history -d actuelle.
- -d début-fin
-
Supprimer la plage d'entrées d'historique entre les positions début et
fin incluses. Les valeurs positives et négatives pour début et fin
sont interprétées comme décrites ci-dessus.
- -a
-
Ajouter les « nouvelles » lignes d'historique. Ce sont celles créées depuis
le début de la session actuelle de bash, mais pas déjà ajoutées dans le
fichier d'historique.
- -n
-
Lire dans le fichier d'historique les lignes non encore lues et les ajouter
à la file d'historique actuelle. Il s'agit des lignes qui ont été ajoutées
dans le fichier d'historique depuis le début de la session bash.
- -r
-
Lire le contenu du fichier et l'ajouter à l’historique actuel.
- -w
-
Écrire la liste actuelle d’historique dans le fichier d’historique, en
écrasant le contenu précédent.
- -p
-
Effectuer la substitution d'historique sur les arguments suivants et
afficher le résultat sur la sortie standard. Ne pas mémoriser les résultats
dans la file d'historique. Chaque argument doit être protégé pour
désactiver le développement normal de l'historique.
- -s
-
Conserver les arguments dans la file d'historique comme un unique
élément. La dernière commande de la file d'historique est supprimée avant
que les arguments ne soient ajoutés.
Si la variable
HISTTIMEFORMAT existe, les informations
d'horodatage associées à chaque élément de l'historique sont écrites dans le
fichier d'historique, repérées par le caractère de commentaire
d'historique. Quand le fichier d'historique est lu, les lignes commençant
par le caractère de commentaire d'historique suivi immédiatement par un
chiffre sont considérés comme des horodatages de la ligne d'historique
précédente. La valeur renvoyée est 0, sauf si une option incorrecte est
fournie, si une erreur se produit durant la lecture ou l'écriture du
fichier, si une plageou un nombre incorrects sont fournis comme argument
à -d ou si le développement de l'historique fourni en argument à -p
échoue.
- jobs [-lnprs] [ tâche ... ]
-
- jobs -x commande [ arguments ... ]
-
La première forme affiche la liste des tâches actives. Les options ont les
significations suivantes :
-
- -l
-
Afficher les PID, en plus des informations normales.
- -n
-
Afficher uniquement des informations sur les tâches dont l'état a changé
depuis la dernière notification de leur état à l'utilisateur.
- -p
-
Afficher uniquement le PID du meneur du groupe de processus de la tâche.
- -r
-
N’afficher que les tâches en cours d'exécution.
- -s
-
N’afficher que les tâches suspendues.
Si une tâche est indiquée, l'affichage est restreint aux informations
relatives à cette tâche. L'état renvoyé est 0, sauf si une option
incorrecte est rencontrée ou si une tâche incorrecte est fournie.
Si l'option -x est fournie, jobs remplace toute tâche trouvée dans
la commande ou dans ses arguments avec les Process Group ID
correspondant, puis il exécute la commande en lui transmettant les
arguments et en renvoyant son état final.
- kill [-s signal | -n num-signal | -signal] [pid | tâche] ...
-
- kill -l|-L [signal | état_final]
-
Envoyer le signal indiqué par signal ou num-signal aux processus
indiqués par pid ou par tâche. signal est soit sous la forme de nom
de signal (indifférent à la casse), comme
SIGKILL (avec ou sans le
préfixe
SIG), soit sous forme numérique ; num-signal est un
numéro de signal. Si signal est absent,
SIGTERM est supposé par
défaut. Un argument -l provoque l'affichage de la liste des noms de
signaux. Si des arguments sont fournis quand -l est indiqué, les noms des
signaux correspondant aux arguments sont affichés et l'état renvoyé est
0. L'argument état_final de l'option -l est un nombre indiquant
soit un numéro de signal, soit l'état final d'un processus terminé par un
signal. L'option -L est équivalente de -l. kill renvoie vrai si au
moins un signal a été envoyé avec succès ou faux si une erreur s'est
produite ou si une option incorrecte a été rencontrée.
- let argument [argument ...]
-
Chaque argument est une expression arithmétique à évaluer (consultez
ÉVALUATION ARITHMÉTIQUE ci-dessus).
above).
Si l'évaluation du dernier argument donne 0, let renvoie 1 ;
sinon 0 est renvoyé.
- local [option] [nom[=valeur] ...] - ]
-
Pour chaque argument, une variable locale nom est créée et la valeur
lui est affectée. L'option peut être n'importe quelle option acceptée par
declare. Quand local est utilisé dans une fonction, la variable nom
possède une portée visible restreinte à cette fonction et ses enfants. Si
nom est -, les options de l'interpréteur sont réglées à locales pour
la fonction dans laquelle local est invoquée : les options de
l'interpréteur, modifiées en utilisant la commande interne set dans la
fonction, sont restaurées à leur valeur originale quand la fonction redonne
la main. La restauration est effectuée comme si une série de commandes
set avaient été exécutées pour restaurer les valeurs qui étaient en place
avant la fonction. Sans opérandes, local affiche la liste des variables
locales sur la sortie standard. Une utilisation de local hors des
fonctions est erronée. La valeur renvoyée est 0, sauf si local est
utilisé hors d'une fonction, si un nom incorrect est fourni ou si nom
est une variable en lecture seule.
- logout
-
Terminer un interpréteur de connexion.
- mapfile [-d délimiteur] [-n nombre] [-O origine] [-s nombre] [-t] [-u df] [-C rappel] [-c quantum] [tableau]
-
- readarray [-d délimiteur] [-n nombre] [-O origine] [-s nombre] [-t] [-u df] [-C rappel] [-c quantum] [tableau]
-
Lire les lignes depuis l'entrée standard dans la variable de type tableau
indicé tableau, ou depuis le descripteur de fichier df si l'option
-u est fournie. La variable
MAPFILE est le tableau par
défaut. Les options, si fournies, ont les significations suivantes :
-
- -d
-
Le premier caractère de délimiteur est utilisé pour terminer la ligne de
saisie, plutôt qu'un changement de ligne. Si délimiteur est une chaîne
vide, mapfile termine une ligne quand il lit un caractère NUL.
- -n
-
Copier au plus nombre lignes. Si nombre est 0, toutes les lignes sont
copiées.
- -O
-
Commencer l'affectation de tableau à l'indice origine. L'indice par
défaut est 0.
- -s
-
Supprimer les nombre premières lignes lues.
- -t
-
Éliminer un délimiteur final (par défaut changement de ligne ) de chaque
ligne lue.
- -u
-
Lire les lignes à partir du descripteur de fichier df plutôt que depuis
l'entrée standard.
- -C
-
Évaluer rappel à chaque fois que quantum lignes sont lues. L'option
-c précise le quantum.
- -c
-
Préciser le nombre de lignes entre chaque appel à rappel.
Si -C est précisé sans -c, le quantum par défaut est 5000. Quand
rappel est évalué, l'indice du prochain élément de tableau à affecter et
la ligne à affecter à cet élément sont fournis en arguments
supplémentaires. rappel est évalué après la lecture de la ligne, mais
avant l'affectation de l'élément de tableau.
Si aucune origine explicite n'est fournie, mapfile effacera tableau
avant de lui affecter des valeurs.
mapfile termine avec succès 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
indicé ou si son affectation est impossible.
- popd [-n] [+n] [-n]
-
Enlever des éléments de la pile des répertoires. Les éléments sont numérotés
à partir de 0 avec le premier répertoire listé par dirs. Sans argument
popd supprime le répertoire du sommet de la pile et un cd est effectué
en direction du nouveau répertoire au sommet. Les arguments, si fournis, ont
les significations suivantes :
-
- -n
-
Empêcher le changement normal de répertoire lors de la suppression d'un
répertoire de la pile. Seule la pile est manipulée.
- +n
-
Supprimer de la pile le n-ième élément de la liste affichée par dirs,
en comptant depuis la gauche à partir de zéro. Par exemple :
``popd +0''
enlève le premier répertoire,
``popd +1''
le second.
- -n
-
Supprimer le n-ième élément de la liste affichée par dirs, en comptant
depuis la droite à partir de zéro. Par exemple :
``popd -0''
supprime le dernier répertoire et
``popd -1''
l'avant-dernier.
Si l'élément au sommet de la pile de répertoires est modifié et si l'option
n n'est pas fournie, popd utilise la commande interne cd pour
changer vers le répertoire au sommet de la pile. Si cd échoue, popd
renvoie une valeur différente de zéro.
Autrement, popd renvoie faux si une option incorrecte est trouvée, si la
pile de répertoires est vide ou si une pile de répertoires absente est
indiquée.
Si la commande popd réussit, bash effectue un dirs pour afficher le
contenu final de la pile de répertoires et l'état renvoyé est 0.
- printf [-v var] format [arguments]
-
Écrire les arguments mis en forme sur la sortie standard sous le contrôle
du format. L'option -v conduit à affecter la sortie à la variable
var plutôt que de l'afficher sur la sortie standard.
Ce format est une chaîne de caractères contenant trois types d'objets :
les caractères normaux, qui sont simplement copiés sur la sortie standard,
les caractères de protection qui sont convertis puis copiés sur la sortie
standard et les spécifications de format, qui conduisent chacun à
l'affichage des arguments successifs. En plus des spécifications de
format standard de printf(1), printf interprète les extensions
suivantes :
-
- %b
-
conduit printf à développer les suites de caractères de protection dans
l'argument correspondant de la même manière que echo -e.
- %q
-
conduit printf à afficher l'argument correspondant dans un format
réutilisable en entrée de l'interpréteur ;
- %Q
-
comme %q, mais applique toute précision fournie à l'argument avant de
le protéger.
- %(formatdate)T
-
conduit printf à afficher la chaîne date-heure résultant de l'utilisation
de formatdate en tant que chaîne de format pour
strftime(3). L'argument correspondant est un entier représentant le
temps en seconde écoulé depuis epoch. Deux valeurs particulières d'argument
peuvent être utilisées : -1 représente l'heure actuelle et -2 l'heure
à laquelle l'interpréteur a été invoqué. Si aucun argument n’est indiqué, la
conversion se comporte comme si -1 avait été fourni. C’est une exception
au comportement habituel de printf.
Les directives %b, %q et %T utilisent toutes les arguments de largeur et de
précision de champ à partir de la spécification de format et écrivent autant
d'octets que l'argument développé (ou utilisent autant d'espace qu'un champ
pour cet argument) qui contient habituellement plus de caractères que
l'original.
Les arguments des spécificateurs de format qui ne sont pas des chaînes sont
traités comme des constantes C, sauf qu'un signe plus ou moins est permis au
début, et que, si le premier caractère est un guillemet simple ou double, la
valeur est la valeur ASCII du caractère suivant.
Le format est réutilisé si nécessaire pour englober tous les
arguments. Si le format demande plus d'arguments que fournis, les
spécifications supplémentaires se comportent comme si une valeur zéro ou une
chaîne NULL, suivant le besoin, avaient été fournies. La valeur renvoyée est
zéro en cas de succès, différente de zéro en cas d'échec.
- pushd [-n] [+n] [-n]
-
- pushd [-n] [rép]
-
Ajouter un répertoire au sommet de la pile des répertoires ou effectuer une
rotation dans la pile, en ramenant le répertoire actuel au sommet. Sans
argument, la commande pushd échange les deux éléments au sommet de la
pile des répertoires. Les arguments, si fournis, ont les significations
suivantes :
-
- -n
-
Empêcher le changement normal de répertoire lors d'une rotation ou d'un
ajout de répertoires dans la pile. Ainsi, seule la pile est manipulée.
- +n
-
Effectuer une rotation dans la pile, de façon à amener au sommet le
n-ième répertoire (de la liste affichée par dirs, en comptant depuis
la gauche à partir de zéro).
- -n
-
Effectuer une rotation dans la pile, de façon à amener au sommet le
n-ième répertoire (de la liste affichée par dirs, en comptant depuis
la gauche à partir de zéro).
- rép
-
Ajouter répertoire au sommet de la pile des répertoires
Après que la pile a été modifiée, si l'option -n n'a pas été fournie,
pushd utilise la commande interne cd pour changer vers le répertoire
au sommet de la pile. Si cd échoue, pushd renvoie une valeur
différente de zéro.
Autrement, si aucun argument n'est fourni, pushd renvoie 0 sauf si la
pile des répertoires est vide. Lors d'une rotation de la pile des
répertoires, pushd renvoie 0 sauf si la pile est vide ou si un élément
inexistant dans la pile est indiqué.
Si la commande pushd réussit, bash effectue un dirs pour montrer le
contenu final de la pile du répertoire.
- pwd [-LP]
-
Afficher le chemin d'accès absolu au répertoire 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 activée. Si
l'option -L est utilisée, le chemin affiché peut contenir des liens
symboliques. L'état renvoyé est 0, sauf si une erreur s'est produite lors
de la lecture du nom du répertoire actuel ou si une option incorrecte est
fournie.
- read [-ers] [-a tableau] [-d délimiteur] [-i texte] [-n nb_car] [-N nb_car] [-p invite] [-t délai] [-u df] [nom ...]
-
Une ligne est lue depuis l'entrée standard ou à partir du descripteur de
fichier df fourni en argument à l'option -u, découpée en mots comme
décrit
above
dans Découpage en mots, puis le premier mot de cette ligne est affecté au
premier nom, le second mot au second nom, et ainsi de suite. S'il y a
plus de mots que de noms, les mots restants et leurs séparateurs
intercalaires sont affectés au dernier nom. S'il y a moins de mots lus
dans le flux d'entrée que de variables, des valeurs vides sont affectées à
celles restantes. Les caractères contenus dans la variable
IFS
sont utilisés pour découper la ligne en mots en utilisant les mêmes règles
que celles utilisées par l’interpréteur pour le développement (décrites
above
dans
Découpage en mots). Le caractère contre-oblique (\)
permet de supprimer toute signification spéciale pour le caractère suivant
et autorise la continuation de ligne. Les options, si fournies, ont les
significations suivantes :
-
- -a tableau
-
Les mots sont affectés aux indices successifs d'une variable tableau de nom
tableau, en commençant à 0. tableau est détruit avant que de
nouvelles valeurs ne soient affectées. Les autres arguments nom sont
ignorés.
- -d délimiteur
-
Le premier caractère de délimiteur est utilisé pour terminer la ligne de
saisie, plutôt qu'un changement de ligne. Si délimiteur est une chaîne
vide, mapfile termine une ligne quand il lit un caractère NUL.
- -e
-
Si l'entrée standard provient d'un terminal, la bibliothèque readline
(consultez
READLINE
above)
est utilisée pour obtenir la ligne. Readline utilise les configurations
d'édition en cours (ou par défaut, si l'édition de ligne n'était pas
préalablement active), mais utilise le complètement de nom de fichier par
défaut de readline.
- -i texte
-
Si readline est utilisée pour lire la ligne, texte est placé dans le
tampon d'édition avant le début de l'édition.
- -n nb_car
-
read s'arrête après avoir lu nb_car caractères plutôt que d'attendre
une ligne complète en entrée, mais un délimiteur est respecté si moins de
nb_car caractères ont été lus avant le délimiteur.
- -N nb_car
-
read s'arrête après avoir lu exactement nb_car caractères plutôt que
d'attendre une ligne complète en entrée, sauf si une fin de fichier (EOF)
est rencontrée ou si read dépasse son délai de réponse. Les délimiteurs
rencontrés en entrée ne sont pas traités spécialement et n'entraînent pas la
fin de read avant que nb_car caractères n'aient été lus. Le résultat
pas découpé selon les caractères dans IFS ; le but est que la variable
soit exactement des caractères lus (à l'exception du caractère
contre-oblique ; consultez ci-dessous l'option -r).
- -p invite
-
Afficher invite sur la sortie d'erreur standard, sans caractère final de
changement de ligne, avant d'essayer de lire toute nouvelle saisie. L'invite
est affichée seulement si l'entrée vient d'un terminal.
- -r
-
La contre-oblique n'agit pas comme un caractère de protection. La
contre-oblique est considérée comme faisant partie de la ligne. En
particulier, une contre-oblique suivie d'un changement de ligne ne peut pas
être considérée comme une continuation de ligne.
- -s
-
Mode silencieux. Si une entrée arrive à partir d'un terminal, les caractères
ne sont pas affichés.
- -t m
-
Conduire read à expirer et renvoyer un échec si une ligne complète en
entrée (ou un nombre indiqué de caractères) n'a pas été lue dans le délai
en seconde. délai est un nombre décimal avec éventuellement des chiffres
après la virgule (NdT : point en l'occurrence). Cette option n'est effective
que si read lit l'entrée à partir d'un terminal, d'un tube, ou depuis un
autre fichier spécial ; elle n'a aucun effet lors de la lecture d'un fichier
normal. Si read expire, read sauvegarde toute entrée partielle lue
dans la variable nom indiquée. Si délai est nul, read se termine
immédiatement, sans essayer de lire des données. L’état de sortie est 0
si une entrée est disponible pour le descripteur de fichier indiqué, ou la
lecture renverra EOF, non nulle sinon. L'état final est supérieur à 128
si le délai est dépassé.
- -u df
-
Lire l'entrée à partir du descripteur de fichier df.
Si aucun nom n'est fourni, la ligne lue, sans autre modification que le
retrait du délimiteur de fin, est affectée à la variable
REPLY. Le
code renvoyé est zéro, sauf si une fin de fichier (EOF) est rencontrée, si
read dépasse son délai de réponse (auquel cas le code renvoyé est plus
grand que 128), en cas d’erreur d’affectation (comme une affectation de
variable à une variable en lecture seule) ou si un descripteur de fichier
incorrect est fourni en argument de -u.
- readonly [-aAf] [-p] [nom[=mot] ...]
-
Les noms indiqués reçoivent un attribut lecture seule ; les valeurs de
ces noms ne pourront plus être modifiées par des affectations
ultérieures. Si l'option -f est fournie, les fonctions correspondant à
ces noms sont marquées en conséquence. L'option -a restreint l'action
aux variables tableaux indicés ; l'option -A restreint l'action aux
variables tableaux associatifs. Si les deux options sont fournies, -A est
prioritaire. Si aucun argument nom n'est indiqué ou si l'option -p est
fournie, une liste de tous les noms en lecture seule est affichée. Les
autres options peuvent être utilisées pour restreindre l'affichage à un
sous-ensemble de l'ensemble des noms en lecture seule. L'option -p
conduit à afficher la sortie dans un format susceptible d'être réutilisé en
entrée. Si le nom d'une variable est suivi par =mot, la variable est
configurée à mot. L'état renvoyé est 0, sauf si une option incorrecte
a été rencontrée, si l'un des noms n'est pas un nom correct de variable
de l'interpréteur ou si l'option -f est fournie avec un nom qui n'est
pas une fonction.
- return [n]
-
Forcer une fonction à arrêter son exécution et à renvoyer la valeur indiquée
par n dans son contexte d'appel. Si n est omis, la valeur de retour
renvoyée est celle de la dernière commande exécutée dans le corps de la
fonction. Si return est exécuté par un gestionnaire de capture, la
dernière commande utilisée pour déterminer l'état est la dernière commande
exécutée avant le gestionnaire de capture. Si return est exécutée durant
une capture de DEBUG, la dernière commande utilisée pour déterminer
l'état est la dernière commande exécutée par le gestionnaire de capture
avant que return soit invoquée. Si return est utilisée hors d'une
fonction, mais pendant l'exécution d'un script par la commande .
(source), elle conduit à l'arrêt de l'exécution du script par
l'interpréteur et renvoie comme état final du script soit n, soit l'état
final de la dernière commande exécutée dans le script. Si n est fourni,
la valeur de retour est ses 8 bits de poids faible. La valeur de retour est
non nulle si un argument non numérique est fourni à return, ou si elle
est utilisée hors d'une fonction ou pas lors de l'exécution d'un script par
. ou source. Toute commande associée à la capture de RETURN est
exécutée avant la reprise de l'exécution après la fonction ou le script.
- set [-abefhkmnptuvxBCEHPT] [-o nom_d_option] [--] [-] [argument ...]
-
- set [+abefhkmnptuvxBCEHPT] [+o nom_d_option] [--] [-] [argument ...]
-
Sans options, afficher le nom et la valeur de toutes les variables de
l'interpréteur dans un format susceptible d'être réutilisé en entrée pour
créer ou réinitialiser les variables actuelles. Les variables en lecture
seule ne peuvent pas être réinitialisées. En mode POSIX, seules les
variables de l'interpréteur sont affichées. La sortie est triée en fonction
des paramètres linguistiques régionaux actuels. Lorsque des options sont
indiquées, elles créent ou détruisent des attributs de l'interpréteur. Tous
les arguments restant après traitement des options sont considérés comme
des valeurs pour les paramètres positionnels et sont affectés, dans l'ordre,
à : $1, $2, ... $n. Les options, si indiquées, ont les
significations suivantes :
-
- -a
-
Donner l'attribut export aux variables et fonctions créées ou modifiées et
les marquer pour qu'elles soient exportées dans l'environnement des
commandes exécutées ultérieurement.
- -b
-
Signaler l'état des tâches terminées en arrière-plan immédiatement, plutôt
que d'attendre l'affichage de la prochaine invite de base. N'est effectif
que si le contrôle des tâches est activé.
- -e
-
Se terminer immédiatement si un pipeline (qui peut être réduit à une
unique commande simple), une liste ou une commande composée
(consultez
GRAMMAIRE DE L'INTERPRÉTEUR
above),
se termine avec un état différent de zéro. L'interpréteur ne se termine pas
si la commande qui échoue fait partie d'une liste de commandes suivant
immédiatement un mot clef while ou until, d'un test suivant les mots
réservés if ou elif, d'une commande exécutée dans une liste && ou
|| sauf si la commande est située après le dernier && ou ||, d'une
commande de pipeline à l'exception de la dernière, ou si la valeur renvoyée
par la commande est inversée par !. Si une commande composée autre qu’un
sous-interpréteur renvoie un état non nul parce qu’une commande échoue alors
que -e était ignoré, l’interpréteur ne se termine pas. Une capture sur
ERR, si existante, est exécutée avant que l'interpréteur ne se
termine. Cette option s'applique à l'environnement de l'interpréteur ainsi
qu'à l'environnement de chaque sous-interpréteur individuellement (consultez
ENVIRONNEMENT D'EXÉCUTION DES COMMANDES
above),
et peut conduire des sous-interpréteurs à se terminer avant d'y avoir
exécuté toutes les commandes.
Si une commande composée ou une fonction de l’interpréteur s’exécutent dans
un contexte où -e est ignoré, aucune des commandes exécutées dans une
commande composée ou dans un corps de fonction ne sera affectée par le
réglage -e, même si -e est défini et qu’une commande renvoie un état
d’échec. Si une commande composée ou une fonction de l’interpréteur
définissent -e pendant son exécution dans un contexte où -e est
ignoré, ce réglage n’aura aucun effet avant la fin de la commande composée
ou de la commande contenant l’appel de fonction.
- -f
-
Désactiver le développement des chemins.
- -h
-
Mémoriser l'emplacement des commandes lors de leur exécution. Activée par
défaut.
- -k
-
Tous les arguments sous la forme d'affectations sont placés dans
l'environnement d'une commande, et non pas seulement ceux qui précèdent le
nom de la commande.
- -m
-
Mode supervision. Le contrôle des tâches est activé. Cette option est
activée par défaut pour les interpréteurs interactifs sur les systèmes qui
le permettent (consultez
CONTRÔLE DES TÂCHES
above).
Tous les processus sont exécutés dans un groupe de processus séparé. Quand
une tâche en arrière-plan se termine, l’interpréteur affiche une ligne
contenant son état final.
- -n
-
Lecture de commandes sans exécution. Cela peut être utilisé pour rechercher
les erreurs de syntaxe dans un script. Cette option est ignorée par les
interpréteurs interactifs.
- -o nom_d_option
-
Le nom_d_option est l'un des suivants :
-
- allexport
-
Identique à -a.
- braceexpand
-
Identique à -B.
- emacs
-
Utiliser une interface d'édition des lignes de commande « à la
Emacs ». C'est le comportement activé par défaut quand l'interpréteur est
interactif, sauf si l'interpréteur est démarré avec l'option
--noediting. L'interface d'édition utilisée par read -e est modifiée
également.
- errexit
-
Identique à -e.
- errtrace
-
Identique à -E.
- functrace
-
Identique à -T.
- hashall
-
Identique à -h.
- histexpand
-
Identique à -H.
- history
-
Activer l'historique des commandes, comme décrit
above
dans
HISTORY. Cette option est activée par défaut dans les
interpréteurs interactifs.
- ignoreeof
-
Identique à l'exécution de la commande d'interpréteur
``IGNOREEOF=10''
a été exécutée (consultez Variables de l'interpréteur
above).
- keyword
-
Identique à -k.
- monitor
-
Identique à -m.
- noclobber
-
Identique à -C.
- noexec
-
Identique à -n.
- noglob
-
Identique à -f.
- nolog
-
Actuellement ignorée.
- notify
-
Identique à -b.
- nounset
-
Identique à -u.
- onecmd
-
Identique à -t.
- physical
-
Identique à -P.
- pipefail
-
Si existante, la valeur renvoyée par un pipeline est la valeur de la
dernière commande (la plus à droite) à terminer avec un état final différent
de zéro ou zéro si toutes les commandes du pipeline terminent avec
succès. Désactivée par défaut.
- posix
-
Aligner le comportement de bash sur la norme (mode POSIX), en ce qui
concerne les options dont l'action par défaut diffère de la norme POSIX. La
section
VOIR AUSSI
below
ci-dessous référence un document précisant la façon dont le mode POSIX
affecte le comportement de bash.
- privileged
-
Identique à -p.
- verbose
-
Identique à -v.
- vi
-
Utiliser une interface d'édition des lignes de commande « à la
vi ». L'interface d'édition utilisée par read -e est modifiée également.
- xtrace
-
Identique à -x.
Si -o est fournie sans nom_d_option, les valeurs actuelles des options
sont affichées. Si +o est fournie sans nom_d_option, la série de
commandes set permettant de recréer la configuration actuelle d'options
est affichée sur la sortie standard.
- -p
-
Basculer en mode privilégié. Dans ce mode, les fichiers $ENV et
$BASH_ENV ne sont pas traités, les fonctions de l'interpréteur ne sont
pas héritées de l'environnement, et les variables
SHELLOPTS,
BASHOPTS,
CDPATH, et
GLOBIGNORE, si présentes
dans l'environnement, sont ignorées. Si l'interpréteur démarre avec un UID
(ou respectivement un GID) effectif différent de son UID (GID) réel et si
l'option -p n'est pas fournie, ce comportement est appliqué et l'UID
(GID) effectif est positionné à l'UID (GID) réel. Si l'option -p est
fournie au démarrage, l'UID (GID) effectif n'est pas modifié. Désactiver
cette option conduit à la configuration des UID et GID effectifs à la valeur
des UID et GID réels.
- -r
-
Activer le mode interpréteur restreint. Cette option ne peut être annulée
une fois qu'elle a été définie.'
- -t
-
Terminer après lecture et exécution d'une commande.
- -u
-
Considérer les variables inexistantes et les paramètres différents des
paramètres spéciaux « @ » et « * », ou les variables tableau indicées par
@ ou *, comme des erreurs lors du développement des paramètres. Si un
développement de variable inexistante ou de paramètre est tenté,
l'interpréteur affiche un message d'erreur et, s'il n'est pas interactif,
termine avec un état différent de zéro.
- -v
-
Afficher les lignes en entrée de l'interpréteur lorsqu'elles sont lues.
- -x
-
Après le développement de chaque commande simple, commande for,
commande case, commande select ou commande for arithmétique,
afficher la valeur développée de
PS4, suivie de la commande et ses
arguments développés ou la liste de mots associés.
- -B
-
L'interpréteur effectue le développement des accolades (consultez
Développement des accolades
above).
Activée par défaut.
- -C
-
Si configurée, bash n'écrasera pas un fichier existant avec les
opérateurs >, >& et <>. Ce comportement peut être
surpassé lors de la création d'un fichier de sortie en utilisant l'opérateur
de redirection >| à la place de >.
- -E
-
Si configurée, toute capture sur ERR est héritée par les fonctions
d'interpréteur, les substitutions de commandes et les commandes exécutées
dans un sous-interpréteur. La capture de ERR n'est normalement pas
héritée dans de tels cas.
- -H
-
Activer le style ! de substitution d'historique. C'est le comportement
par défaut lorsque l'interpréteur est interactif.
- -P
-
Si configurée, l'interpréteur ne résout pas les liens symboliques en
exécutant des commandes comme cd qui modifient le répertoire de
travail. Il utilise à la place le répertoire physique. Par défaut bash
suit la chaîne logique des répertoires lors des commandes qui modifient le
répertoire actuel.
- -T
-
Si configurée, toutes les captures de DEBUG et RETURN sont héritées
par les fonctions de l'interpréteur, les substitutions de commande et les
commandes exécutées dans un sous-interpréteur. Les captures de DEBUG et
RETURN ne sont normalement pas héritées dans de tels cas.
- --
-
Si aucun argument ne suit cette option, alors les paramètres positionnels
sont détruits. Sinon, les paramètres positionnels sont configurés aux
arguments, même si certains d'entre eux commencent par un -.
- -
-
Marquer la fin des options, tous les arguments restants sont alors
affectés aux paramètres positionnels. Les options -x et -v sont
désactivées. S'il n'y a pas d'arguments, les paramètres positionnels ne
sont pas modifiés.
Par défaut les attributs sont désactivés, sauf indication contraire. En
utilisant « + » à la place de « - », les options sont désactivées. Les
options peuvent également être fournies en argument lors de l'appel de
l'interpréteur. Le jeu actuel des options peut être trouvé dans $-. La
valeur renvoyée est toujours vrai, sauf si une option incorrecte est
rencontrée.
- shift [n]
-
Les paramètres positionnels à partir de n+1 ... sont renommés en $1
.... Les paramètres représentés par les nombres $# jusqu'à
$#-n+1 sont détruits. n doit être un entier positif inférieur ou
égal à $#. Si n vaut 0, aucun paramètre n'est modifié. Si n est
omis, on suppose qu'il vaut 1. Si n est supérieur à $#, les paramètres
positionnels ne sont pas modifiés. L'état renvoyé est strictement positif si
n est supérieur à $# ou strictement négatif, sinon 0 est renvoyé.
- shopt [-pqsu] [-o] [nom_opt ...]
-
Basculer la valeur des réglages contrôlant le comportement de gestion des
options de l'interpréteur. Les réglages peuvent soit être ceux ci-dessous,
soit, si l’option -o est utilisée, ceux disponibles avec l’option -o
de la commande interne set. Sans option ou avec l'option -p, une liste
de toutes les options configurables est affichée, avec l'indication de
l'état de chacune d'entre elles ; si des nom_opt sont fournis, la sortie
est limitée à ces options. L'option -p conduit à un affichage de la
sortie sous une forme susceptible d'être réutilisée en entrée. Les autres
options ont les significations suivantes :
-
- -s
-
Activer (créer) chaque nom_opt.
- -u
-
Désactiver (détruire) chaque nom_opt.
- -q
-
Supprimer la sortie normale (mode silencieux) ; l'état renvoyé indique si
nom_opt est existante ou non. Si plusieurs arguments nom_opt sont
indiqués avec -q, l'état renvoyé est zéro si tous les nom_opt sont
activés ; différent de zéro sinon.
- -o
-
Restreindre les valeurs de nom_opt à celles définies pour l'option -o
de la commande interne set.
Si l'option -s ou -u est utilisée sans argument nom_opt, shopt
affiche respectivement les options existantes ou non existantes. Sauf
indication contraire, les options shopt sont désactivées (détruites) par
défaut.
L'état renvoyé lors d'un affichage des options est zéro si tous les
nom_opt sont activés, différent de zéro sinon. Lors de la création ou de
la destruction d'options, l'état renvoyé est zéro, à moins que nom_opt ne
soit pas une option correcte d'interpréteur.
La liste des options shopt est :
- assoc_expand_once
-
Si existante, l'interpréteur supprime les évaluation multiples des indices
de tableaux associatifs pendant l'évaluation d'expressions arithmétiques,
lors de l'exécution de commandes internes qui peuvent affecter des variables
et lors de l'exécution de commandes internes qui réalisent un
déréférencement de tableau.
- autocd
-
Si existante, un nom de commande qui est le nom d'un répertoire est exécuté
comme s'il était l'argument de la commande interne cd. Cette option n'est
utilisée que par les interpréteurs interactifs.
- cdable_vars
-
Si existante, un argument de la commande interne cd qui n'est pas un
répertoire est supposé être un nom de variable dont la valeur est le
répertoire visé.
- cdspell
-
Si existante, les erreurs minimes de frappe dans un composant du répertoire
en argument de la commande cd seront corrigées. Les erreurs corrigées
sont les inversions d'un caractère, un caractère manquant et un caractère en
trop. Si une correction est possible, le nom de répertoire corrigé est
affiché et la commande est exécuté. Cette option n'est utilisée que par les
interpréteurs interactifs.
- checkhash
-
Si existante, bash vérifie si une commande trouvée dans la table de
hachage existe avant d'essayer de l'exécuter. Si une commande hachée
n'existe plus, une recherche normale de chemin est effectuée.
- checkjobs
-
Si existante, bash affiche la liste des états de toutes les tâches en
cours et arrêtées avant de terminer un interpréteur interactif. Si des
tâches sont en cours, la sortie est différée jusqu'à ce qu'une nouvelle
sortie soit tentée sans commande intermédiaire (consultez
CONTRÔLE DES TÂCHES
above).
L'interpréteur repousse toujours la sortie si des tâches sont arrêtées.
- checkwinsize
-
Si existante, bash vérifie la taille de la fenêtre après chaque commande
externe et, au besoin, met à jour les valeurs des variables
LINES
et
COLUMNS.
- cmdhist
-
Si existante, bash essaie de sauvegarder les commandes s'étendant sur
plusieurs lignes en un seul élément d'historique. Cela facilite l'édition
ultérieure de commandes multilignes. Cette option est activée par défaut,
mais n'a un effet que si l'historique des commandes est activé, comme décrit
above
dans
HISTORY.
- compat31
-
- compat32
-
- compat40
-
- compat41
-
- compat42
-
- compat43
-
- compat44
-
- compat50
-
Ces directives contrôlent les aspects du mode de compatibilité de
l'interpréteur (consultez
MODE DE COMPATIBILITÉ DE L'INTERPRÉTEUR
below).
- complete_fullquote
-
Si existante, bash protège tous les métacaractères de l’interpréteur dans
les noms de fichier et de répertoire lors du complètement. Si non existante,
bash supprime les métacaractères comme les signes dollar du jeu de
caractères qui sera protégé dans les noms de fichiers complétés quand ces
métacaractères apparaissent dans des références de variable d’interpréteur
dans des mots à compléter. Cela signifie que les signes dollar dans les noms
de variables qui se développent en répertoires ne seront pas protégés ;
cependant, tous les signes dollar apparaissant dans les noms de fichier ne
seront pas protégés non plus. Ce n’est actif que si bash utilise des
contre-obliques pour protéger des noms de fichier complétés. Cette variable
est définie par défaut, ce qui est le comportement de bash par défaut
jusqu’à la version 4.2.
- direxpand
-
Si existante, bash remplace les noms de répertoire par les résultats de
développement de mots lors du complètement des noms de fichier. Cela modifie
le contenu du tampon d'édition de readline. Sinon, bash essaye de
conserver ce que l'utilisateur a tapé.
- dirspell
-
Si existante, bash essaie de corriger les erreurs de frappe sur les noms
de répertoire lors du complètement de mot si le nom de répertoire
initialement fourni n'existe pas.
- dotglob
-
Si existante, bash inclut les noms de fichiers commençant par un « . »
dans les résultats des développements de chemins. Les noms de fichier
« . » et « .. » doivent toujours être toujours être mis en
correspondance explicitement, même si dotglob existe.
- execfail
-
Si existante, un interpréteur non interactif ne terminera pas s'il ne peut
exécuter un fichier indiqué en argument de la commande interne exec. Un
interpréteur interactif ne termine pas si exec échoue.
- expand_aliases
-
Si existante, les alias sont développés comme décrit
above
dans
ALIAS. Cette option est activée par défaut pour les
interpréteurs interactifs.
- extdebug
-
Si elle existe à l'appel de l'interpréteur ou dans un fichier de lancement
de l'interpréteur, prend les dispositions pour que le paramétrage du traçage
soit exécuté avant que l'interpréteur démarre, identique à l'option
--debugger. Si elle est posée après l'appel, le comportement prévu pour
l'utilisation du traçage est activé :
-
- 1.
-
L'option -F de la commande interne declare affiche le nom du fichier
source et le numéro de ligne correspondant à chaque nom de fonction fourni
comme argument.
- 2.
-
Si la commande lancée par la capture de DEBUG renvoie une valeur
différente de zéro, la commande suivante est sautée et n'est pas exécutée.
- 3.
-
Si la commande lancée par la capture de DEBUG renvoie la valeur 2 et
si l'interpréteur s'exécute dans un sous-programme (une fonction de
l'interpréteur ou un script exécuté par les commandes internes . ou
source), l'interpréteur simule un appel à return.
- 4.
-
BASH_ARGC et
BASH_ARGV sont mises à jour comme expliqué
dans leurs descriptions.
above).
- 5.
-
Le traçage des fonctions est activé : la substitution de commande, les
fonctions de l'interpréteur et les sous-interpréteurs appelés avec (
command ) héritent des captures de DEBUG et RETURN.
- 6.
-
Le traçage d'erreur est activé : la substitution de commande, les fonctions
de l'interpréteur et les sous-interpréteurs appelés avec ( command
) héritent de la capture de ERR.
- extglob
-
Si existante, les fonctionnalités étendues de mise en correspondance
décrites
above
dans Développement des chemins sont activées.
- extquote
-
Si existante, la protection par $'chaîne' et $"chaîne" est
effectuée à l'intérieur des développements de ${paramètres} entre
guillemets doubles. Cette option est activée par défaut.
- failglob
-
Si existante, les motifs qui échouent à faire correspondre les noms de
fichiers pendant le développement des chemins font qu'ils provoqueront une
erreur de développement.
- force_fignore
-
Si existante, les suffixes indiqués par la variable de l'interpréteur
FIGNORE conduiront des mots à être ignorés lors du complètement de mot,
même si les mots ignorés sont les seuls complètements possibles. Consultez
VARIABLES DE L'INTERPRÉTEUR
above
pour une description de
FIGNORE. Cette option est activée par
défaut.
- globasciiranges
-
Si existante, les expressions d’intervalle utilisées dans les motifs de
correspondance des expressions entre crochets (consultez
Motifs génériques
above)
se comportent comme avec les paramètres régionaux traditionnels de C lors
des comparaisons. Cela signifie que l’ordre de collation des paramètres
régionaux actuels n’est pas pris en compte, donc b ne sera pas ordonné
entre A et B, et les caractères ASCII en majuscule et minuscule seront
fusionnés.
- globskipdots
-
Si existante, le développement des chemins ne sera jamais mis en
correspondance avec les noms de fichier « . » et « .. », même si le
motif débute par un « . ». Cette option est activée par défaut.
- globstar
-
Si existante, le motif ** utilisé dans un contexte de développement des
chemins correspondra à tous les fichiers et zéro ou plusieurs répertoires et
sous-répertoires. Si le motif est suivi de /, seuls les répertoires et
sous-répertoires correspondent.
- gnu_errfmt
-
Si existante, les messages d'erreur de l'interpréteur seront écrits dans le
format standard GNU des messages d'erreurs.
- histappend
-
Si existante, la file d'historique est ajoutée au fichier désigné par la
valeur de la variable
HISTFILE lorsque l'interpréteur termine,
plutôt que d'écraser ce fichier.
- histreedit
-
Si existante et si readline est utilisée, un utilisateur peut rééditer
une substitution d'historique qui a échoué.
- histverify
-
Si existante et si readline est utilisée, le résultat de la substitution
d'historique n'est pas transmise immédiatement à l'analyseur de
l'interpréteur. À la place, la ligne résultante est chargée dans le tampon
d'édition de readline, permettant des modifications ultérieures.
- hostcomplete
-
Si existante et si readline est utilisée, bash essayera d'effectuer le
complètement des noms de machines lorsqu'un mot contient un @ (consultez
Complètement dans
READLINE
above).
Cette option est activée par défaut.
- huponexit
-
Si existante, bash enverra un signal
SIGHUP à toutes les tâches
lorsqu'un interpréteur de connexion interactif termine.
- inherit_errexit
-
Si existante, la substitution de commande hérite de la valeur de l'option
errexit, plutôt que de la détruire dans l'environnement du
sous-interpréteur. Cette option est activée quand le mode POSIX est
activé.
- interactive_comments
-
Si existante, un mot commençant par un # conduira ce mot et tous les
autres caractères restants de la ligne à être ignorés dans un interpréteur
interactif (consultez
COMMENTAIRES
above).
Cette option est activée par défaut.
- lastpipe
-
Si existante, et que le contrôle des tâches n'est pas activé, l'interpréteur
exécute la dernière commande d'un pipeline non exécutée en arrière-plan dans
l'environnement d'interpréteur actuel.
- lithist
-
Si existante et si l'option cmdhist est activée, les commandes
multilignes sont sauvegardées dans l'historique avec des changements de
ligne incorporés comme séparateurs plutôt que des points-virgules là où
c'est possible.
- localvar_inherit
-
Si existante, les variables locales héritent de la valeur et des attributs
d'une variable du même nom qui existe avec une portée antérieure avant
qu'une nouvelle valeur soit assignée. L'attribut -nameref n'est pas
hérité.
- localvar_unset
-
Si existante, appeler unset sur des variables locales dans des portées de
fonction antérieures les marque de telle manière que des recherches
ultérieures les trouve désactivées jusqu'à ce la fonction renvoie. Ce
comportement est le même que de détruire les variables locales avec la
portée de la fonction actuelle.
- login_shell
-
L'interpréteur crée cette option s'il est démarré en tant qu'interpréteur de
connexion (consultez
APPEL
above).
La valeur ne peut être modifiée.
- mailwarn
-
Si existante et s'il a été accédé à un fichier que bash surveille pour
les courriers depuis sa dernière vérification, le message « Le courrier dans
fichier_de_courrier a été lu. » est affiché.
- no_empty_cmd_completion
-
Si existante et si readline est utilisée, bash n'essaiera pas
d'utiliser le
PATH pour de possibles complètements quand le
complètement est tenté sur une ligne vide.
- nocaseglob
-
Si existante, bash fait correspondre les noms de fichiers d'une façon
insensible à la casse lors du développement des chemins (consultez
Développement des chemins
above).
- nocasematch
-
Si existante, bash fait correspondre les motifs d'une façon insensible à
la casse lors de la mise en correspondance pendant l'exécution des commandes
conditionnelles case ou [[, lorsqu'il procède à des développements de
motif de substitution de mot ou qu'il filtre des complètement possibles dans
le cadre d'un complètement programmable.
- noexpand_translation
-
Si existante, bash entoure les résultats de la traduction de la
protection de $"..." par des guillemets simples au lieu de guillemets
doubles. Si la chaîne n'est pas traduite, cela n'a aucun effet.
- nullglob
-
Si existante, bash autorise les motifs ne correspondant à aucun fichier
(consultez Développement des chemins
above)
à se développer en une chaîne NULL plutôt qu'en une valeur littérale.
- patsub_replacement
-
Si existante, bash développe les occurrences de & dans la chaîne de
remplacement de la substitution de motif vers le texte mis en correspondance
par le motif, comme décrit dans Développement des paramètres
above.
Cette option est activée par défaut.
- progcomp
-
Si existante, les outils de complètement programmables (consultez
Complètement programmable
above)
sont activés. Cette option est activée par défaut.
- progcomp_alias
-
Si existante et si le complètement programmable est activé, bash traite
un nom de commande qui n'a pas de complètement comme un possible alias et
tente un développement d'alias. S'il possède un alias, bash tente un
complètement programmable en utilisant le nom de commande résultant du
développement d'alias.
- promptvars
-
Si existante, les chaînes d'invite sont sujettes au développement des
paramètres, à la substitution de commande, au développement arithmétique et
à la suppression des protections après avoir été développées comme décrit
dans
INVITES.
above.
Cette option est activée par défaut.
- restricted_shell
-
L'interpréteur définit cet option s'il démarre en mode restreint (consultez
INTERPRÉTEUR RESTREINT
below).
Cette valeur ne peut pas être changée. Elle n'est pas réinitialisée lorsque
les fichiers d’initialisation sont exécutés, ce qui permet à ces fichiers de
découvrir si un interpréteur est restreint ou non.
- shift_verbose
-
Si existante, la commande interne shift affiche un message d'erreur
lorsque le nombre de décalages dépasse le nombre de paramètres positionnels.
- sourcepath
-
Si existante, la commande interne source (.) utilise la valeur de la
variable
PATH pour trouver le répertoire contenant le fichier
fourni en argument. Cette option est activée par défaut.
- varredir_close
-
Si existante, l'interpréteur ferme automatiquement les descripteurs de
fichier affectés en utilisant la syntaxe de redirection {nom_de_variable}
(consultez
REDIRECTION
above)
au lieu de les laisser ouverts quand la commande se termine.
- xpg_echo
-
Si existante, la commande interne echo développe par défaut les suites de
caractères de protection par contre-oblique.
- suspend [-f]
-
Suspendre l'exécution de l'interpréteur jusqu'à la réception d'un signal
SIGCONT. Un interpréteur de connexion, ou un interpréteur dont le
contrôle des tâches n'est pas activé, ne peut pas être suspendu ; l'option
-f permet de surpasser ce comportement et force sa suspension. L'état
renvoyé est 0, sauf si l'interpréteur est un interpréteur de connexion,
ou si le contrôle des tâches n'est pas activé et que l'option -f est
absente.
- test expr
-
- [ expr ]
-
Renvoyer un état 0 (vrai) ou 1 (faux) suivant l'évaluation de la
condition expr. Chaque opérateur et opérande doit être représenté par un
argument distinct. Les expressions sont composées des primitives décrites
above
dans
CONDITIONS. test n'accepte aucune option, n'accepte pas
non plus et ignore un argument de -- pour signifier la fin des options.
Les conditions peuvent être combinées avec les opérateurs suivant, décrits
par ordre de priorité décroissante. L'évaluation dépend du nombre
d'arguments, voir ci-dessous. La priorité des opérateurs est utilisée quand
il y a au moins cinq arguments.
-
- ! expr
-
Vrai si expr est fausse.
- ( expr )
-
Renvoie la valeur de expr. Peut servir à surpasser la priorité normale
des opérateurs.
- expr1 -a expr2
-
Vrai si expr1 et expr2 sont toutes deux vraies.
- expr1 -o expr2
-
Vrai si expr1 ou expr2 est vraie.
test et [ évaluent les conditions en fonction d'un jeu de règles
dépendant 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 NULL.
- 2 arguments
-
Si le premier argument est !, la condition est vraie si et seulement si
le second argument est NULL. Si le premier argument est l'un des opérateurs
conditionnels unaires décrits
above
dans
CONDITIONS la condition est vraie si le test unaire est
vrai. Si le premier argument n'est pas un opérateur conditionnel unaire
correct, la condition est fausse.
- 3 arguments
-
Les conditions suivantes sont appliquées dans l'ordre de la liste. Si le
second argument est l'un des opérateurs conditionnels binaires décrits
above
dans
CONDITIONS, le résultat de la condition est le résultat du
test binaire utilisant le premier et le troisième argument en tant
qu'opérandes. Les opérateurs -a et -o sont considérés comme des
opérateurs binaires quand il y a trois arguments. Si le premier argument est
!, la valeur est la négation du test binaire utilisant les deuxième et
troisième arguments. Si le premier argument est exactement ( et le
troisième argument est exactement ), le résultat est le test unaire du
second argument. Sinon la condition est fausse.
- 4 arguments
-
Les conditions suivantes sont appliquées dans l'ordre de la liste. Si le
premier argument est !, le résultat est la négation de l'expression
ternaire composée des arguments restants, le test binaire utilisant les
deuxième et troisième arguments. Si le premier argument est exactement (
et le quatrième argument est exactement ), le résultat est le test
binaire des deuxième et troisième arguments. Sinon la condition est analysée
et évaluée suivant la priorité utilisant les règles listées ci-dessus.
- 5 arguments ou plus
-
La condition est analysée et évaluée selon les règles de priorité décrites
ci-dessus.
Lorsqu'ils sont utilisés avec test ou [, les opérateurs < et
> ordonnent d'un point de vue lexicographique en utilisant l'ordre
ASCII.
- times
-
Afficher les durées cumulées utilisateur et système pour l'interpréteur et
les processus lancés par cet interpréteur. L'état renvoyé est 0.
- trap [-lp] [[argument] signal ...]
-
La commande argument doit être lue et exécutée quand l'interpréteur
reçoit au moins un signal. Si argument est absent (et qu'un seul
signal est fourni) ou -, chaque signal indiqué est réinitialisé à sa
position d'origine (la valeur qu'il avait lors de l'entrée dans
l'interpréteur). Si argument est la chaîne NULL, chaque signal indiqué
est ignoré par l'interpréteur et par les commandes qu'il appelle. Si
argument n'est pas présent et que -p est fourni, les commandes
capturées associées à chaque signal sont affichées. Si aucun argument
n'est fourni, ou si seul -p est donné, trap affiche la liste des
commandes associées à chaque signal. L'option -l conduit l'interpréteur à
afficher une liste des noms de signal et leur numéro correspondant. Chaque
signal est soit un nom de signal défini dans <signal.h>, soit
un numéro de signal. Les noms de signal sont insensibles à la casse et le
préfixe
SIG est optionnel.
Si un signal est
EXIT (0), la commande argument est exécutée
lors de la sortie de l'interpréteur. Si un signal est
DEBUG, la
commande argument est exécutée avant toute commande simple, commande
for, commande case, commande select, toute commande for
arithmétique, et avant que la première commande n'exécute une fonction de
l'interpréteur (consultez
GRAMMAIRE DE L'INTERPRÉTEUR.
above).
Reportez-vous à 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 exécutée à chaque fois qu'une fonction de l'interpréteur, ou
un script exécuté avec les commandes internes . ou source, termine son
exécution.
Si un signal est
ERR, la commande argument est exécutée
chaque fois qu'un pipeline (qui peut être réduit à une unique commande
simple), une liste ou une commande composée, renvoie un état final différent
de zéro, soumis aux conditions suivantes. La capture
ERR n'est pas
exécutée si la commande échouant fait partie d'une liste de commandes
suivant immédiatement un mot clef while ou until, d'un test dans une
construction if, d'une commande exécutée au sein d'une liste de && ou
de || exceptée la commande suivant le dernier && ou ||, n’importe
quelle commande d’un pipeline sauf la dernière, ou si la valeur renvoyée par
la commande est inversée par !. Ce sont les mêmes conditions que celles
observées par l'option errexit (-e).
Les signaux ignorés en entrant dans l'interpréteur ne peuvent être capturés
ou réinitialisés. Les signaux capturés qui ne sont pas ignorés sont
réinitialisés à leur valeur d'origine dans un sous-interpréteur ou un
environnement de sous-interpréteur quand il est créé. L'état renvoyé est
faux si un signal n'est pas valable, sinon trap renvoie vrai.
- type [-aftpP] nom [nom ...]
-
Sans option, indiquer la façon d’interpréter chaque nom s’il est utilisé
en nom de commande. Si l'attribut -t est utilisé, type affiche une des
chaînes alias, keyword, function, builtin ou file selon que
le nom est un alias, un mot clef réservé de l'interpréteur, une fonction,
une commande interne ou un fichier sur le disque. Si le nom n'est pas
trouvé, rien n'est affiché et un état final à faux est renvoyé. Si l'option
-p est utilisée, type renvoie le nom du fichier qui sera exécuté 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, même 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
nécessairement le fichier apparaissant en premier dans
PATH. Si
l'option -a est appelée, type affiche tous les emplacements contenant
un exécutable du nom indiqué. Cela inclut les alias et les fonctions,
sauf si l'option -p est également présente. La table de hachage des
commandes n'est pas consultée avec l'option -a. L'option -f supprime
la fonction de l'interpréteur de consultation de table, comme avec la
commande interne command. type renvoie vrai si tous les arguments sont
trouvés et faux si aucun n'a été trouvé.
- ulimit [-HS] -a
-
- ulimit -HS] [-bcdefiklmnpqrstuvxPRT [limitation]]
-
Fournir, sur les systèmes qui le permettent, un mécanisme de contrôle des
ressources disponibles pour l'interpréteur 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 indiquée. Une limitation
stricte ne peut pas être augmentée par un utilisateur non privilégié une
fois qu'elle a été configurée ; une limitation flexible peut être augmentée
jusqu'à la valeur de la limitation stricte correspondante. Si ni -H ni
-S n'est indiqué, les limitations stricte et flexible sont toutes deux
configurées. La valeur de la limitation peut être un nombre (utilisant
les unités particulières de la ressource) ou l'une des valeurs spéciales
hard, soft ou unlimited, qui signifient, respectivement, la
limitation stricte actuelle, la limitation flexible actuelle et l'absence de
limitation. Si la limitation est omise, la valeur actuelle de la
limitation flexible pour la ressource est affichée, à moins que l'option
-H soit indiquée. Quand plusieurs ressources sont indiquées, les noms des
limitations et leurs unités, le cas échéant, sont affichés avant les
valeurs. Les autres options sont interprétées comme suit :
-
- -a
-
Toutes les limitations actuelles sont signalées ; aucune limitation n'est
fixée
- -b
-
La taille maximale du tampon de socket
- -c
-
La taille maximale des fichiers core créés
- -d
-
La taille maximale du segment de données d'un processus
- -e
-
La priorité maximale d’ordonnancement (« nice »)
- -f
-
La taille maximale d'un fichier écrit par l'interpréteur et ses enfants
- -i
-
Le nombre maximal de signaux en attente
- -k
-
Le nombre maximal de kqueue qui peuvent être alloués
- -l
-
La taille maximale qui peut être verrouillée en mémoire
- -m
-
La taille maximale de la partie résidente d'un processus (« resident set
size » ou RSS, la plupart des systèmes ne respectent pas cette limite)
- -n
-
Le nombre maximal de descripteurs de fichiers ouverts (la plupart des
systèmes ne permettent pas de modifier cette valeur)
- -p
-
La taille d'un tube en blocs de 512 octets (parfois inexistante)
- -q
-
Le nombre maximal d'octets dans les files de messages POSIX
- -r
-
La priorité maximale d'ordonnancement temps-réel
- -s
-
La taille maximale de la pile
- -t
-
La durée maximale, en seconde, de temps processeur accordé à un processus
- -u
-
Le nombre maximal de processus autorisés pour un seul utilisateur
- -v
-
La quantité maximale de mémoire virtuelle disponible pour l'interpréteur et,
sur certains systèmes, pour ses enfants
- -x
-
Le nombre maximal de verrous de fichiers
- -P
-
Le nombre maximal de pseudo-terminaux
- -R
-
La durée maximale pendant laquelle un processus en temps réel peut
s'exécuter avant de bloquer, en microsecondes.
- -T
-
Le nombre maximal de processus légers (« threads »)
Si une limitation est indiquée, et que l'option -a n’est pas donnée,
limitation sera la nouvelle valeur pour la ressource indiquée. Si aucune
option n'est indiquée alors -f est supposée. Les valeurs s'expriment par
pas de 1024 octets, sauf pour -t qui est en secondes, -R qui est en
microsecondes, -p qui utilise comme unité le bloc de 512 octets ; pour
-P, -T, -b, -k, -n et -u qui n'ont pas d'unité ; enfin, en
mode POSIX, la valeur pour -c et -f s'exprime par pas de
512 octets. Le code de retour est 0, sauf si une option ou un argument
incorrect ont été fournis ou si une erreur se produit en configurant une
nouvelle limitation.
- umask [-p] [-S] [mode]
-
Le masque de création de fichier de l'utilisateur est configuré à
mode. Si mode commence par un chiffre, il est interprété comme un
nombre octal, sinon il est considéré comme un masque symbolique, semblable à
ceux acceptés par chmod(1). Si mode est omis ou si l'option -S est
fournie, la valeur actuelle du masque est affichée. L'option -S conduit à
l'affichage du masque sous forme symbolique, l'affichage par défaut étant en
octal. Si l'option -p est fournie et si le mode est omis, la sortie a
lieu dans un format réutilisable en entrée. L'état renvoyé est 0 si le
mode a pu être changé correctement ou si aucun argument mode n'a été
fourni, et faux sinon.
- unalias [-a] [nom ...]
-
Supprimer le nom de la liste des alias définis. Si l'option -a est
fournie, toutes les définitions d'alias sont supprimées. La valeur renvoyée
est vrai, sauf si un nom fourni n'est pas un alias défini.
- unset [-fv] [-n] [nom ...]
-
Pour chaque nom indiqué, supprimer la variable ou la fonction
correspondante. Si l'option -v est indiquée, chaque nom se rapporte à
une variable de l'interpréteur, et cette variable est supprimée. Les
variables en lecture seule ne peuvent pas être détruites. Si l'option -f
est indiquée, chaque nom se rapporte à une fonction de l'interpréteur et
la définition de la fonction est supprimée. Si l’option -n est fournie,
et que nom est une variable avec l’attribut nameref, nom sera
détruite plutôt que la variable qu’elle référence. -n n’a pas d’effet si
l’option -f est fournie. Si aucune option n’est fournie, chaque nom
fait référence à une variable ; si aucune variable de ce nom n’existe,
toutes les fonctions de ce nom sont détruites. Toutes les variables et
fonctions détruites sont supprimées de l'environnement transmis aux
commandes ultérieures. Si l'une des variables
BASH_ALIASES,
BASH_ARGV0,
BASH_CMDS,
BASH_COMMAND,
BASH_SUBSHELL,
BASHPID,
COMP_WORDBREAKS,
DIRSTACK,
EPOCHREALTIME,
EPOCHSECONDS,
FUNCNAME,
GROUPS,
HISTCMD,
LINENO,
RANDOM,
SECONDS, ou
SRANDOM est détruite, elle perd
ses propriétés particulières, même si elle est recréée
ultérieurement. L'état final est vrai sauf si un des noms est en lecture
seule ou ne peut pas être détruit.
- wait [-fn] [-p nom_de_variable] [id ...]
-
Attendre que tous les processus enfants indiqués s’exécutent et renvoient
leur état final. Chaque id peut être un PID ou une spécification de
tâche ; si une spécification de tâche est indiquée, la fin de tous les
processus du pipeline de cette tâche sera attendue. Si id est omis,
wait attend la fin de toutes les tâches exécutées en arrière-plan et la
substitution du dernier processus exécuté, si l'id du processus est le
même que $!, et le code de retour est zéro. Si l’option -n est
fournie, wait attend qu'une seule tâche de la liste d'id ou, si aucun
id n'est fourni, que toutes les tâches se terminent et renvoient leur
état final. Si aucun des arguments fournis n'est un enfant de
l'interpréteur, l'état renvoyé est 127. Si l'option -p est fournie,
l'identificateur de processus ou de tâche de la tâche pour laquelle l'état
final est renvoyé est affecté à la variable nom_de_variable nommée par
l'argument de l'option. La variable sera détruite initialement, avant toute
affectation. C'est utile seulement lorsque l'option -n est
fournie. Fournir l'option -f, quand le contrôle des tâches est activé,
force wait à attendre que id se termine avant de renvoyer son état,
plutôt que de renvoyer son état quand il change. Si id indique un
processus ou une tâche inexistants, l'état renvoyé est 127. Si wait est
interrompu par un signal, l'état renvoyé sera supérieur à 128 comme décrit
dans
SIGNAUX.
above.
Sinon, l'état renvoyé est l'état final du dernier processus, ou tâche,
attendu.
MODE DE COMPATIBILITÉ DE L'INTERPRÉTEUR
Bash-4.0 a introduit le concept de niveau de compatibilité de l'interpréteur spécifié comme un ensemble d'options de la commande interne
shopt (compat31, compat32, compat40, compat41, etc.). Il ne
peut y avoir qu'un seul niveau de compatibilité en cours – les options
s'excluent mutuellement. Le niveau de compatibilité est destiné à permettre
aux utilisateurs de choisir un comportement d'une version antérieure qui est
incompatible avec les versions plus récentes lors des migrations de scripts
pour utiliser les fonctionnalités et les comportements actuels. C'est censé
être une solution temporaire.
Cette section ne mentionne pas les comportements standards d'une version
particulière (par exemple, la configuration à compat32 signifie que la
protection de la partie droite de l'opérateur de correspondance d'une
expression rationnelle protège les caractères spéciaux d'expression
rationnelle dans le mot, ce qui est le comportement par défaut dans bash-3.2
et les versions suivantes).
Si l'utilisateur active, par exemple, compat32, cela peut affecter le
comportement des autres niveaux de compatibilité jusqu'à, et y compris, le
niveau de compatibilité en cours. L'idée est que chaque niveau de
compatibilité contrôle les comportements qui ont changé dans cette version
de bash, mais ces comportements peuvent avoir été présents dans des
versions précédentes. Par exemple, la modification pour utiliser les
comparaisons basées sur les paramètres linguistiques régionaux avec la
commande [[ a été introduite dans bash-4.1 et les versions précédentes
utilisaient des comparaisons basées sur ASCII, aussi, activer compat32
activera également les comparaisons basées sur ASCII. Cette granularité peut
ne pas être suffisante pour tous les usages, et, de ce fait, les
utilisateurs devraient employer prudemment les niveaux de
compatibilité. Lisez la documentation d'une fonctionnalité particulière pour
découvrir le comportement actuel.
Bash-4.3 a introduit une nouvelle variable de l'interpréteur :
BASH_COMPAT. La valeur affectée à cette variable (un numéro de version
décimal, comme 4.2, ou un nombre entier correspondant à l'option
compatNN, comme 42) détermine le niveau de compatibilité.
À partir de bash-4.4, bash a commencé à rendre obsolètes les niveaux de
compatibilité plus anciens. Les options finiront par être retirées au profit
de
BASH_COMPAT.
Bash-5.0 est la dernière version pour laquelle il y aura une option de
shopt particulière pour la version précédente. Les utilisateurs devraient
utiliser
BASH_COMPAT avec bash-5.0 et les versions ultérieures.
Le tableau suivant décrit les changements de comportement contrôlés par
chaque configuration de niveau de compatibilité. L'étiquette compatNN
est un raccourci utilisé pour configurer le niveau de compatibilité à NN
en utilisant un des mécanismes suivants. Pour les versions antérieures à
bash-5.0, le niveau de compatibilité peut être fixé avec l'option de
compatNN de shopt correspondante. Pour bash-4.3 et les versions
ultérieures, la variable
BASH_COMPAT est privilégiée et devient
obligatoire pour bash-5.1 et les versions ultérieures.
- compat31
-
-
- -
-
La protection de la partie droite de l'opérateur de correspondance (=~)
d'une expression rationnelle de la commande [[ n'a aucun effet
particulier.
- compat32
-
-
- -
-
L'interruption d'une liste de commandes comme « a ; b ; c » provoque
l'exécution de la commande suivante dans la liste (avec bash-4.0 et les
versions ultérieures, l'interpréteur se comporte comme s'il recevait
l'interruption, aussi l'interruption d'une commande dans une liste termine
l'exécution de toute la liste).
- compat40
-
-
- -
-
Les opérateurs < et > de la commande [[ ne tiennent pas
compte des paramètres linguistiques régionaux actuels lors des comparaisons
de chaînes. Ils utilisent l'ordre ASCII. Les versions de bash antérieures
à 4.1 utilisent la collation ASCII et strcmp(3). bash à partir de la
version 4.1 utilise la suite de collation des paramètres linguistiques
régionaux et strcoll(3).
- compat41
-
-
- -
-
En mode POSIX, time peut être suivi par des options tout en continuant
à être reconnu comme un mot réservé (c'est l'interprétation POSIX 267).
- -
-
En mode POSIX, l'analyseur exige qu'il existe un nombre pair de
guillemets simples dans la partie mot d'un développement de paramètres
protégé par des guillemets doubles et les traite de façon particulière,
ainsi les caractères entre les guillemets simples sont considérés comme
protégés (c'est l'interprétation POSIX 221).
- compat42
-
-
- -
-
La chaîne de remplacement dans le motif de substitution entre guillemets
doubles n'est pas sujette à la suppression des guillemets, comme dans les
versions postérieures à bash-4.2.
- -
-
En mode POSIX, les guillemets simples sont considérés particuliers lors
du développement de la partie mot d'un développement de paramètres
protégée par des guillemets doubles et peuvent être utilisés pour protéger
une accolade fermante ou un autre caractère spécial (cela fait partie de
l'interprétation POSIX 221) ; dans les versions ultérieures, les guillemets
simples ne sont pas traités particulièrement dans les développements de mots
entre guillemets doubles.
- compat43
-
-
- -
-
L'interpréteur n'affiche pas de message d'avertissement si une tentative est
faite d'utiliser une affectation composée protégée comme un argument à
déclarer (par exemple, déclarer -a toto='(1 2)'). Les versions
ultérieures avertissent que cette utilisation est obsolète.
- -
-
Les erreurs de développement de mots ne sont pas considérées comme des
erreurs fatales qui provoquent l'échec de la commande en cours, même en
mode POSIX (le comportement par défaut est de les traiter comme des
erreurs fatales, ce qui fait que l'interpréteur termine).
- -
-
Lors de l'exécution d'une fonction de l'interpréteur, l'état de la boucle
(while/until/ etc.) n'est pas réinitialisé, aussi break ou continue
dans cette fonction interrompt ou poursuit la boucle dans le contexte de
l'appel. Bash-4.4 et les versions ultérieures réinitialisent l'état de la
boucle pour éviter cela.
- compat44
-
-
- -
-
L'interpréteur configure les valeurs utilisées par
BASH_ARGV et
BASH_ARGC de telle manière qu'elles peuvent se développer en
paramètres positionnels de l'interpréteur même si le mode de traçage étendu
n'est pas activé.
- -
-
Un sous-interpréteur hérite des boucles du contexte de son parent, aussi
break ou continue provoqueront la terminaison du
sous-interpréteur. Bash-5.0 et les versions ultérieures réinitialisent
l'état de la boucle pour éviter la terminaison.
- -
-
Les affectations de variables précédant des commandes internes comme
export et readonly qui configurent des attributs, continuent à
affecter des variables ayant le même nom dans l'environnement d'appel même
si l'interpréteur n'est pas en mode POSIX.
- compat50
-
-
- -
-
Bash-5.1 a modifié la manière dont
$RANDOM est généré pour
introduire un peu plus d'aléa. Si le niveau de compatibilité de
l'interpréteur est fixé à 50 ou moins, bash retourne à la méthode de
bash-5.0 et des versions antérieures, aussi l'ensemencement du générateur de
nombres aléatoires en affectant une valeur à
RANDOM produira la
même séquence qu'avec bash-5.0.
- -
-
Si la table de hachage des commandes est vide, les versions de bash
antérieures à bash-5.1 affichaient un message d’information à cet effet même
quand elles produisaient une sortie qui pouvait être réutilisée en
entrée. Bash-5.1 supprime ce message quand l'option -l est fournie.
- compat51
-
-
- -
-
La commande interne unset traite les tentatives pour détruire les
tableaux indicés par @ et * différemment selon que le tableau est un
tableau indicé ou associatif, et autrement que dans les versions
précédentes.
INTERPRÉTEUR RESTREINT
Si bash démarre sous le nom rbash ou si l'option -r est fournie
lors de son appel, l'interpréteur devient restreint. Un interpréteur
restreint permet de créer un environnement plus contrôlé qu'un interpréteur
standard. Il se comporte de même façon que bash à la différence des
actions suivantes qui sont interdites ou non effectuées :
- -
-
changer de répertoire avec cd ;
- -
-
créer ou détruire les valeurs de
SHELL,
PATH,
HISTFILE,
ENV ou
BASH_ENV ;
- -
-
indiquer des noms de commandes contenant un / ;
- -
-
indiquer un nom de fichier contenant un / comme argument de la commande
interne . ;
- -
-
indiquer un nom de fichier contenant une barre oblique (/) comme argument
de la commande interne history ;
- -
-
indiquer un nom de fichier contenant une barre oblique comme argument de
l'option -p de la commande interne hash ;
- -
-
importer une définition de fonction dans l'environnement au démarrage ;
- -
-
analyser les valeurs de
SHELLOPTS de l'environnement
d'interpréteur au démarrage ;
- -
-
rediriger la sortie en utilisant les opérateurs de redirection >,
>|, <>, >&, &> et >> ;
- -
-
utiliser la commande interne exec pour remplacer l'interpréteur par une
autre commande ;
- -
-
ajouter ou supprimer des commandes internes avec les options -f et -d
de la commande interne enable ;
- -
-
utiliser la commande interne enable pour activer les commandes internes
de l'interpréteur désactivées ;
- -
-
indiquer l'option -p à la commande interne commande ;
- -
-
supprimer le mode restreint avec set +r ou shopt -u restricted_shell.
Ces restrictions sont mises en place après la lecture de tous les fichiers
d’initialisation.
When a command that is found to be a shell script is executed
(see
COMMAND EXECUTION
above),
rbash supprime toute restriction dans l'interpréteur créé pour exécuter
le script.
VOIR AUSSI
- Manuel de référence 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 –
-
http://pubs.opengroup.org/onlinepubs/9699919799/
- http://tiswww.case.edu/~chet/bash/POSIX – une description du mode POSIX
-
- sh(1), ksh(1), csh(1)
-
- emacs(1), vi(1)
-
- readline(3)
-
FICHIERS
-
/bin/bash
-
L'exécutable bash
-
/etc/profile
-
Le fichier d'initialisation commun à tout le système, exécuté pour les
interpréteurs de commandes de connexion
-
/etc/bash.bashrc
-
Le fichier d’initialisation commun à tout le système pour les interpréteurs
interactifs
-
/etc/bash.bash.logout
-
Le fichier de nettoyage des interpréteurs de connexion commun à tout le
système, exécuté lorsqu'un interpréteur de connexion termine
-
~/.bash_profile
-
Le fichier d'initialisation personnel exécuté pour les interpréteurs de
commandes de connexion
-
~/.bashrc
-
Le fichier d’initialisation personnel pour les interpréteurs interactifs
-
~/.bash_logout
-
Le fichier de nettoyage personnel des interpréteurs de commandes de
connexion, exécuté lorsqu'un interpréteur de commandes de connexion termine
-
~/.bash_history
-
La valeur par défaut de HISTFILE, le fichier dans lequel bash
sauvegarde l'historique des commandes
-
~/.inputrc
-
Le fichier d'initialisation personnel de readline
AUTEURS
Brian Fox, Free Software Foundation
bfox@gnu.org
Chet Ramey, Case Western Reserve University
chet.ramey@case.edu
SIGNALEMENTS DE BOGUES
Si vous trouvez une anomalie dans bash, vous devriez la signaler. Tout
d'abord vous devez vous assurer qu'il s'agit réellement d'une anomalie et
qu'elle apparaît bien dans la dernière version disponible de bash. La
dernière version est toujours disponible à partir de
ftp://ftp.gnu.org/pub/gnu/bash/.
Une fois que vous avez déterminé qu'une anomalie existe effectivement,
utilisez la commande bashbug pour envoyer un signalement d'anomalie. Si
vous avez un correctif, vous êtes encouragé à l'envoyer en même temps ! Les
suggestions ou les signalements d'anomalies de nature « philosophique »
peuvent être envoyés (en anglais) à bug-bash@gnu.org ou postés dans le
groupe Usenet gnu.bash.bug.
TOUS les signalements d'anomalie doivent contenir :
- Le numéro de version de bash
-
- Le matériel et le système d'exploitation utilisés
-
- Le compilateur utilisé pour compiler
-
- Une description (en anglais) de l'anomalie
-
- Un petit script ou une « recette » qui démontre l'anomalie
-
bashbug insère automatiquement les trois premiers éléments 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 être transmis à
chet.ramey@case.edu. Ceux concernant cette version française peuvent être
envoyés à debian-l10n-french@lists.debian.org.
BOGUES
Cet interpréteur de commandes est trop gros et trop lent.
Il y a quelques différences subtiles de comportement entre bash et les
versions traditionnelles de sh, principalement à cause des spécifications
POSIX.
L'utilisation des alias peut avoir des conséquences inattendues.
Les commandes internes et les fonctions de l'interpréteur ne peuvent pas
être suspendues/relancées.
Les commandes composées et les suites de commandes de la forme « a ; b ; c »
ne sont pas gérées élégamment lors d'une interruption de processus. En cas
de suspension d'un processus, l'interpréteur exécute immédiatement la
commande suivante. Il suffit de placer cette suite de commandes entre
parenthèses pour la forcer à créer un sous-interpréteur, qui, lui, pourra
être suspendu en bloc.
Les variables de type tableau ne peuvent pas (encore) être exportées.
Il ne peut exister qu'un seul coprocessus actif à la fois.
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <ccb@club-internet.fr>,
Thierry Vignaud <tvignaud@mandriva.com>,
Amand Tihon <amand@alrj.org>,
Alain Portal <aportal@univ-montp2.fr>,
Frederic Daniel Luc Lehobey <Frederic@Lehobey.net>,
David Prévot <david@tilapin.org>
et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- SYNOPSIS
-
- COPYRIGHT
-
- DESCRIPTION
-
- OPTIONS
-
- ARGUMENTS
-
- APPEL
-
- DÉFINITIONS
-
- MOTS RÉSERVÉS
-
- GRAMMAIRE DE L'INTERPRÉTEUR
-
- Commandes simples
-
- Pipelines
-
- Listes
-
- Commandes composées
-
- Coprocessus
-
- Définitions des fonctions de l'interpréteur
-
- COMMENTAIRES
-
- PROTECTIONS
-
- PARAMÈTRES
-
- Paramètres positionnels
-
- Paramètres spéciaux
-
- Variables de l'interpréteur
-
- Tableaux
-
- DÉVELOPPEMENTS
-
- Développement des accolades
-
- Développement du tilde
-
- Développement des paramètres
-
- Substitution de commande
-
- Développement arithmétique
-
- Substitution de processus
-
- Découpage en mots
-
- Développement des chemins
-
- Suppression des protections
-
- REDIRECTIONS
-
- Redirection d'entrée
-
- Redirection de sortie
-
- Ajout d'une sortie redirigée
-
- Redirection de la sortie standard et de la sortie d'erreur standard
-
- Ajout de la sortie standard et de la sortie d'erreur standard
-
- Document en ligne
-
- Chaînes en ligne
-
- Dédoublement de descripteurs de fichier
-
- Déplacement de descripteurs de fichier
-
- Ouverture en Lecture/Écriture d'un descripteur de fichier
-
- ALIAS
-
- FONCTIONS
-
- ÉVALUATION ARITHMÉTIQUE
-
- CONDITIONS
-
- DÉVELOPPEMENT DES COMMANDES SIMPLES
-
- EXÉCUTION DES COMMANDES
-
- ENVIRONNEMENT D'EXÉCUTION DES COMMANDES
-
- ENVIRONNEMENT
-
- CODE DE RETOUR
-
- SIGNAUX
-
- CONTRÔLE DES TÂCHES
-
- INVITES
-
- READLINE
-
- Notation readline
-
- Initialisation de readline
-
- Raccourcis clavier readline
-
- Variables de readline
-
- Constructions conditionnelles de readline
-
- Recherche
-
- Noms des commandes readline
-
- Commandes de déplacement
-
- Commandes de manipulation de l'historique
-
- Commande d'édition de texte
-
- Effacement et récupération
-
- Arguments numériques
-
- Complètement
-
- Macros clavier
-
- Divers
-
- Complètement programmable
-
- HISTORIQUE
-
- DÉVELOPPEMENT DE L'HISTORIQUE
-
- Indicateur d'événement
-
- Indicateurs de mots
-
- Modificateurs
-
- COMMANDES INTERNES DE L'INTERPRÉTEUR
-
- MODE DE COMPATIBILITÉ DE L'INTERPRÉTEUR
-
- INTERPRÉTEUR RESTREINT
-
- VOIR AUSSI
-
- FICHIERS
-
- AUTEURS
-
- SIGNALEMENTS DE BOGUES
-
- BOGUES
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:05:57 GMT, September 19, 2025