Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
.de }1 .ds ]X &*(]B .nr )E 0 .if !"$1"" .nr )I $1n .}f .ll (LLu .in ()Ru+ (INu+ ()Iu .ti (INu .ie ! ()Iu+ ()Ru-w*(]Xu-3p {*(]X [b]}[/b] .el *(]Xh| ()Iu+ ()Ruc .}f .. .de FN [i][/i]$1 .. [size=18] [b]Nom[/b] [/size] bash - Interpréteur de commandes GNU Bourne-Again SHell. [size=18] [b]Résumé[/b] [/size] [b]bash[/b] [options] [fichier] [size=18] [b]Copyright[/b] [/size] .if n Bash est sous Copyright (C) 1989, 1999 de la Free Software Foundation, Inc. .if t Bash est sous Copyright (co 1989, 1999 de la Free Software Foundation, Inc. [size=18] [b]Description[/b] [/size] [b]Bash[/b] est un interpréteur ([i]Shell[/i]) compatible [b]sh[/b] qui exécute les commandes lues depuis l'entrée standard, ou depuis un fichier. [b]Bash[/b] incorpore également des fonctionnalités provenant des interpréteurs [i]Korn[/i] et [i]C[/i]-shell ([b]ksh[/b] et [b]csh[/b]). [b]Bash[/b] est conçu pour être conforme aux spécifications IEEE concernant les shells et les outils Posix (Groupe de travail de l'IEEE 1003.2). [size=18] [b]Options[/b] [/size] En plus des caractères d'options documentés dans la description de la commande interne [b]set[/b], [b]bash[/b] accepte les arguments suivants lorsqu'on l'invoque : [b][i]-c chaîne^[/i][/b] [table][row][col] [/col][col]Si l'argument [b]-c[/b] est présent, les commandes sont interprétées depuis la [i]chaîne[/i] fournie. S'il existe d'autres arguments après la [b]chaîne ,[/b] ils sont transmis comme paramètres positionnels, en commençant par [b]$0 .[/b][/col][/row][/table] [b]-r[/b] [table][row][col] [/col][col]Si l'option [b]-r[/b] est présente, l'interpréteur est [b]restreint[/b] (voir [size=6][/size] [b]SHELLS RESTREINTS[/b] plus bas). [/col][/row][/table] [b]-i[/b] [table][row][col] [/col][col]Si l'option [b]-i[/b] est présente, l'interpréteur est [b]interactif .[/b][/col][/row][/table] [b]-s[/b] [table][row][col] [/col][col]Si l'option [b]-s[/b] est présente, ou s'il n'y a plus d'arguments sur la ligne de commande, après le traitement des options, l'interprétation se fera depuis l'entrée standard. Cette option permet de remplir les paramètres positionnels tout en invoquant un shell interactif.[/col][/row][/table] [b]-D[/b] [table][row][col] [/col][col]Une liste de toutes les chaînes entre '"' et précédées de [b]$[/b] est affichée sur la sortie standard. Ce sont les chaînes qui sont sujettes à une traduction quand la localisation n'est ni celle du C, ni celle du standard POSIX. Cela nécessite l'option [b]-n[/b] ; aucune commande ne sera exécutée.[/col][/row][/table] [b]--[/b] [table][row][col] [/col][col]Deux caractères [b]--[/b] permettent d'indiquer la fin des options, et empêchent le traitement des arguments restants. Ces derniers sont alors traités comme des noms de fichiers et des paramètres. [b]-[/b] est équivalent à [b][/b]--.[/col][/row][/table] [b]Bash[/b] reconnaît également plusieurs options multi-caractères. Ces options doivent, pour être reconnues, apparaître sur la ligne de commande avant les options mono-caractère. [b]--dump-po-strings[/b] [table][row][col] [/col][col]Équivalent à -D, mais la sortie est dans le format des fichiers [b]po[/b] (objets portables) de l'outil Gnu [i]gettext[/i].[/col][/row][/table] [b]--dump-strings[/b] [table][row][col] [/col][col]Équivalent à [b]-D[/b].[/col][/row][/table] [b]--help[/b] [table][row][col] [/col][col]Affiche un message d'aide sur la sortie standard et se termine avec succès.[/col][/row][/table] [b]--login[/b] [table][row][col] [/col][col]Demande que [b]bash[/b] Se comporte comme un shell de login. (Voir [size=6][/size] [b]INVOCATION[/b] plus bas).[/col][/row][/table] [b]--noediting[/b] [table][row][col] [/col][col]Ne pas utiliser la bibliothèque GNU [i]readline[/i] pour la lecture des lignes de commande, lorsque le shell est interactif.[/col][/row][/table] [b]--noprofile[/b] [table][row][col] [/col][col]Ne lire ni le fichier de configuration générale[i] /etc/profile[/i][/col][/row][/table] ni les fichiers personnalisés [b]~/.bash_profile ,[/b] [b]~/.bash_login ,[/b] ou [b]~/.profile .[/b] Par défaut [b]bash[/b] lit ces fichiers lorsqu'il est invoqué comme shell de login (voir le paragraphe [size=6][/size] [b]INVOCATION[/b] plus bas). [b]-norc[/b] [table][row][col] [/col][col]Ne pas lire le fichier de configuration personnalisée [i]~/.bashrc[/i] lorsque le shell est interactif. Cette option est activée par défaut lorsque [b]bash[/b] est invoqué sous le nom [b]sh .[/b][/col][/row][/table] [b]--posix[/b] [table][row][col] [/col][col]Aligner le comportement de [b]bash[/b] sur le standard Posix 1003.2, en ce qui concerne les options dont l'action par défaut diffère de ce standard.[/col][/row][/table] [table][row][col] [/col][col][b][/b]--rcfile [i]fichier[/i] Exécuter les commandes contenues dans le [i]fichier[/i] mentionne, plutôt que celles du fichier de configuration personnelle [b]~/.bashrc ,[/b] si le shell est interactif (voir le paragraphe [size=6][/size] [b]INVOCATION[/b] plus bas).[/col][/row][/table] [b]--restricted[/b] [table][row][col] [/col][col]Le shell devient restreint (voir le paragraphe [size=6][/size] [b]SHELLS RESTREINTS[/b] plus bas).[/col][/row][/table] [b]--rpm-requires[/b] [table][row][col] [/col][col]Affiche une liste des fichiers qui sont nécessaires pour le lancement d'un script shell. Ceci nécessite l'option '-n' et est soumis aux mêmes limites que les vérifications d'erreurs à la compilation ; les back-quotes, les tests [] et les évalutations ne sont pas analysés, et certaines erreurs peuvent être oubliées.[/col][/row][/table] [b]--verbose[/b] [table][row][col] [/col][col]Équivalent à [b]-v[/b][/col][/row][/table] [b]--version[/b] [table][row][col] [/col][col]Afficher le numéro de version de [b]bash[/b] sur la sortie standard et terminer avec succès.[/col][/row][/table] [size=18] [b]Arguments[/b] [/size] S'il reste des arguments sur la ligne de commande après l'analyse des options, et si ni l'option [b]-c ,[/b] ni l'option [b]-s [/b] ne sont présentes, le premier argument est supposé être le nom du fichier dans lequel lire les commandes. Lorsque [b]bash[/b] est invoqué de cette manière, [b]$0[/b] contient le nom du fichier, et les autres paramètres positionnels contiennent les arguments restants. [b]Bash[/b] lit, et exécute, les commandes depuis ce fichier, puis se termine. Le code de retour de [b]bash[/b] est celui de la dernière commande exécutée dans le fichier script. Si aucune commande n'a été exécutée, le code de retour est 0. [size=18] [b]Invocation[/b] [/size] Un shell est dit [i]de[/i] login si le premier caractère de son argument numéro zéro est un [b]- ,[/b] ou s'il est invoqué avec l'option [b]-login .[/b] Un shell est [i]interactif[/i] si son entrée standard et sa sortie standard sont toutes deux connectées à un terminal (déterminé par la fonction [b]isatty (3)),[/b] ou s'il est invoqué avec l'option [b]-i .[/b] Le paramètre [size=6][/size] [b]PS1[/b] est positionné, et le paramètre [b]$-[/b] contient la lettre [b]i[/b] si [b]bash[/b] est interactif, ce qui permet à un script ou à un fichier de démarrage de vérifier l'état du shell. Le paragraphe suivant décrit comment [b]bash[/b] exécute ses fichiers d'initialisation. Si l'un de ces fichiers existe mais n'est pas accessible en lecture, [b]bash[/b] signale une erreur. Les tildes sont remplacées par des noms de fichiers comme décrit dans le paragraphe [b]Développement du Tilde[/b] de la section [size=6][/size] [b]Développement.[/b] Lorsque [b]bash[/b] est lancé comme shell de login interactif, ou comme shell non-interactif avec l'option [b][/b]--login, il lit et exécute tout d'abord les commandes se trouvant dans le fichier [i]/etc/profile[/i] s'il existe. Après lecture de ce fichier, il recherche [i]~/.bash_profile[/i], [i]~/.bash_login[/i], et [i]~/.profile[/i], dans cet ordre, et exécute les commande se trouvant dans le premier fichier existant et accessible en lecture. L'option [b]--noprofile[/b] peut être utilisée au démarrage du shell pour empêcher ce comportement. Lorsqu'un shell de login se termine, [b]bash[/b] lit et exécute les commandes du fichier [i]~/.bash_logout[/i], s'il existe. Quand un shell interactif démarre sans être un shell de login, [b]bash[/b] lit et exécute les commandes se trouvant dans [i]~/.bashrc[/i] s'il existe. Ce comportement peut être inhibé à l'aide de l'option [b]--norc .[/b] L'option [b][/b]--rcfile [i]fichier[/i] forcera [b]bash[/b] à exécuter les commandes dans [i]fichier[/i] plutôt que dans [i]~/.bashrc[/i]. Quand [b]bash[/b] est démarré de manière non-interactive, pour lancer un script shell par exemple, il recherche la variable [size=6][/size] [b]BASH_ENV[/b] 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. [b]Bash[/b] se comporte comme si la commande suivante se trouvait en début de script : .5[table][row][col] [/col][col] f(CWif [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi[/col][/row][/table] .5 mais la valeur de la variable [size=6][/size] [b]PATH[/b] n'est pas utilisée pour rechercher le fichier. Si [b]bash[/b] est invoqué sous le nom [b]sh ,[/b] il essaye d'imiter le comportement de démarrage des versions historiques de [b]sh[/b] autant que possible, tout en restant conforme au standard Posix. Lorsqu'il est invoqué comme shell de login interactif (ou non-interactif avec l'option [b][/b]--login), il essaye d'abord d'exécuter les commandes se trouvant dans [i]/etc/profile[/i] et [b]~/.profile ,[/b] dans cet ordre. L'option [b]-noprofile[/b] peut toujours être utilisée pour désactiver ce comportement. Quand il est invoqué en tant que shell interactif sous le nom [b]sh ,[/b] [b]bash[/b] consulte la variable [size=6][/size] [b]ENV ,[/b] 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 shell invoqué sous le nom [b]sh[/b] n'essaye pas d'exécuter d'autre fichier de démarrage, l'option [b]--rcfile[/b] n'a aucun effet. Un shell non interactif invoqué sous le nom [b]sh[/b] ne lit aucun autre fichier d'initialisation. Quand il est invoqué sous le nom [b]sh ,[/b] [b]bash[/b] entre en mode [i]posix[/i] après avoir lu les fichiers d'initialisation. Quand [b]bash [/b] est invoqué en mode [b]posix ,[/b] avec l'option [b]-posix[/b] sur la ligne de commande, il suit ce standard en ce qui concerne les fichiers de démarrage. Dans ce cas, la variable [size=6][/size] [b]ENV[/b] est développée, et le fichier qui en résulte est exécuté. On n'exécute pas d'autre fichier d'initialisation. [b]Bash[/b] tente de déterminer s'il est exécuté par le démon lançant les shells distants (généralement appelé [i]rshd[/i] ). Si [b]bash[/b] se rend compte qu'il est exécuté par [i]rshd[/i], il lit et exécute les commandes de [i]~/.bashrc[/i] si ce fichier existe et est lisible. Il n'a pas ce comportement lorsqu'il est invoqué sous le nom [b]sh[/b]. L'option [b]--norc[/b] peut être utilisé pour interdire ce comportement, et l'option [b]--rcfile[/b] permet de forcer l'utilisation d'un autre fichier, mais [i]rshd[/i] n'utilise généralement pas ces options et ne permet pas non plus leur utilisation. Si le shell est lancé avec un identifiant effectif d'utilisateur (ou de groupe) différent de l'identifiant réel, et si l'option [b][/b]-p n'est pas utilisée, aucun fichier d'initialisation n'est lu, les fonctions du shell ne sont pas importées depuis l'environnement, la variable [b]SHELLOPTS[/b] est ignorée si elle apparaît dans l'environnement, et l'identifiant effectif de l'utilisateur (du groupe) est remplacé par l'ID réel. Si l'option [b][/b]-p est fournie, le démarrage est le même mais l'ID effectif n'est pas modifié. [size=18] [b]Définitions[/b] [/size] Les définitions suivantes sont utilisées tout au long de ce document. [b]blanc[/b] [table][row][col] [/col][col]Un espace ou une tabulation.[/col][/row][/table] [b]mot[/b] [table][row][col] [/col][col]une séquence de caractères considérée comme une unité élémentaire par le shell. On parle également de [b]token (jeton).[/b][/col][/row][/table] [b]nom[/b] [table][row][col] [/col][col]un [i]mot[/i] ne contenant que des caractères alphanumériques ou le soulignement (underscore), commençant par une lettre ou un soulignement. On s'y réfère également sous le terme [b]identificateur .[/b][/col][/row][/table] [b]méta-caractère[/b] [table][row][col] [/col][col]Un caractère qui, non protégé, sépare les mots. Un de ceux-ci : [b][/b][table][row][col] [/col][col][/col][/row][/table] .if t [b]|[/b] & ; ( ) < > espace tabulation .if n [b]|[/b] & ; ( ) < > espace tabulation[/col][/row][/table] [b]opérateur de contrôle[/b] [table][row][col] [/col][col]Un [i]jeton[/i] ayant une fonction de contrôle. L'un des symboles suivants :[table][row][col] [/col][col][/col][/row][/table] .if t [b][/b](bv(bv & && ; ;; ( ) |
.if n [b]||[/b] & && ; ;; ( ) |
[/col][/row][/table] [size=18] [b]Mots Réservés[/b] [/size] Les [i]mots[/i] réservés ont une signification spéciale pour le shell. Les mots suivants sont réservés et interprétés par le shell lorsqu'ils ne sont pas protégés, et s'il s'agit soit du premier mot d'une commande simple, soit du troisième mot d'une commande [b]case[/b] ou [b]for[/b] (voir le paragraphe [size=6][/size] [b]GRAMMAIRE DU SHELL[/b] ci-dessous). .if t .RS .B .if n ! case do done elif else esac fi for function if in select then until while { } time [[ ]] .if t ! case do done elif else esac fi for function if in select then until while { } time [[ ]] .if t .RE[/col][/row][/table] [size=18] [b]Grammaire du shell[/b] [/size] [b]Commandes simples[/b] Une [i]commande[/i] simple est une séquence d'affectations de variables facultative, suivie de mots séparés par des [i]blancs[/i] et des redirections, et terminée par un [i]opérateur[/i] de contrôle. Le premier mot indique la commande à exécuter. Les mots suivants sont transmis en argument à cette commande. La valeur de retour d'une [i]commande[/i] simple est son code de sortie, ou 128+[i]n[/i]^ si la commande a été interrompue par le signal [b]n .[/b] [b]Pipelines[/b] Un [i]pipeline[/i] est une séquence d'une ou plusieurs commandes séparées par le caractère [b]| .[/b] Le format d'un pipeline est :[table][row][col] [/col][col] [[b]time[/b] [[b][/b]-p]] [ ! ] [i]commande_1[/i] [ [b]|[/b] [i]commande_2[/i] ... ][/col][/row][/table] La sortie standard de la [i]commande_1[/i] est connectée à l'entrée standard de la [b]commande_2 .[/b] Cette connexion est établie avant toute redirection indiquée dans une commande elle-même (voir le paragraphe [size=6][/size] [b]REDIRECTION[/b] plus bas). Si le mot réservé [b]![/b] précède un pipeline, la valeur de sortie de celui-ci sera la NÉGATION logique de la valeur de retour de la dernière commande. Sinon, le code de retour d'un pipeline sera celui de la dernière commande. L'interpréteur attend la fin de toutes les commandes du pipeline avant de renvoyer une valeur. Si le mot réservé [b]time[/b] précède le pipeline, les temps passés par le programme en mode utilisateur et système sont indiqués quand le pipeline se termine. L'option [b][/b]-p change le format de sortie pour celui spécifié par POSIX. La variable [size=6][/size] [b]TIMEFORMAT[/b] peut être affectée avec une chaîne de format indiquant comment les informations horaires doivent être affichées; consultez la descriptions de [size=6][/size] [b]TIMEFORMAT[/b] dans [b]Variables du Shell [/b] plus bas. Chaque commande du pipeline est exécutée comme un processus indépendant (c'est à dire dans un sous-shell). [b]Listes[/b] Une [i]liste[/i] est une séquence d'un ou plusieurs pipelines séparés par l'un des opérateurs [b]; ,[/b] [b]& ,[/b] [b]&& ,[/b] ou [b](bv(bv ,[/b] et terminée éventuellement par [b]; ,[/b] [b]& ,[/b] ou [b]
.[/b] Dans cette liste d'opérateurs, [b]&&[/b] et [b](bv(bv[/b] ont une précédence identique, suivis par [b];[/b] et [b]&,[/b] qui ont également une précédence identique. Si une commande se termine par l'opérateur de contrôle [b]& ,[/b] l'interpréteur l'exécute en [i]arrière-plan[/i], dans un sous-shell. L'interpréteur n'attend pas que la commande se termine et retourne un code 0. Les commandes séparées par un [b];[/b] sont exécutées successivement, l'interpréteur attend que chaque commande se termine avant de lancer la suivante. Le code de retour est celui de la dernière commande exécutée. Les opérateurs de contrôle [b]&&[/b] et [b](bv(bv[/b] indiquent respectivement une liste liée par un ET, et une liste liée par un OU. Une liste ET a la forme[table][row][col] [/col][col] [i]commande_1[/i] [b]&&[/b] [i]commande_2[/i][/col][/row][/table] [i]commande_2[/i] est exécutée si, et seulement si, [i]commande_1[/i] renvoie un code de retour nul. Une liste OU a la forme[table][row][col] [/col][col] [i]commande_1[/i] [b][/b](bv(bv [i]commande_2[/i] [/col][/row][/table] [i]commande_2[/i] est exécutée si, et seulement si [i]commande_1[/i] renvoie un code de retour non-nul. La valeur de retour des listes ET et OU est celle de la dernière commande exécutée dans la liste. [b]Commandes composées[/b] Une [i]commande[/i] composée est l'une des constructions suivantes : [table][row][col] [/col][col]([i]liste[/i]) [i]liste[/i] est exécutée dans un sous-shell. 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. Le code de retour est celui de la [i]liste[/i].[/col][/row][/table] [table][row][col] [/col][col]{ [i]liste[/i]; } [i]liste[/i] est simplement exécutée avec l'environnement du shell en cours. [i]liste[/i] doit se terminer par un caractère fin-de-ligne ou un point-virgule. Cette construction est connue sous le nom de [i]commandes[/i] groupées. Le code de retour est celui de la [i]liste[/i].[/col][/row][/table] [table][row][col] [/col][col].(([i]expression[/i])) L'[i]expression[/i] est évaluée selon les règles décrites plus bas au paragraphe [size=6][/size] [b]ÉVALUATION ARITHMÉTIQUE .[/b] Si la valeur arithmétique de l'expression est non-nulle, le code renvoyé est zéro ; sinon 1 est renvoyé. Cela est strictement identique à [b]let[/b] "[i]expression[/i]".[/col][/row][/table] [table][row][col] [/col][col][b][[[/b] [i]expression[/i] [b]]][/b] Renvoie 1 ou 0 selon la valeur de la condition [i]expression[/i]. les expressions sont composées d'éléments primaires décrits dans [size=6][/size] [b]EXPRESSIONS CONDITIONNELLES .[/b] Le coupage des mots et l'expansion des chemins ne sont pas réalisés sur les portions entre [b][[[/b] et [b]]][/b]; l'expansion des tildes, des paramètres, des variable, des expressions arithmétiques, la substitution des commandes et des processus, ainsi que la disparition des apostrophes sont réalisés. .if t 0.5 .if n 1 Quand les opérateurs [b]==[/b] et [b]!=[/b] sont utilisés, la chaîne placée à droite de l'opérateur est considérée comme étant un motif et est recherchée selon les règles décrites dans [b]Motifs[/b] génériques. La valeur renvoyée est 0 si les chaînes correspondent (ou respectivement ne correspondent pas), et 1 sinon. Toute partie du motif peut être protégée avec des apostrophes pour forcer sa comparaison en tant que chaîne (sans développement). .if t 0.5 .if n 1 Les expressions peuvent être combinées en utilisant les opérateurs suivants, par ordre décroissant de priorité : .if t 0.5 .if n 1[table][row][col] [/col][col][/col][/row][/table] [b]( [i]expression[/i] )[/b] [table][row][col] [/col][col]Retourne la valeur de l'[i]expression[/i]. Cela peut être utilisé pour outrepasser la priorité normale des opérateurs.[/col][/row][/table] [b]! [i]expression[/i][/b] [table][row][col] [/col][col]Vraie si [i]expression[/i] est vraie.[/col][/row][/table] [table][row][col] [/col][col][i]expression1[/i] [b]&&[/b] [i]expression2[/i] Vraie si [i]expression1[/i] et [i]expression2[/i] sont toutes les deux vraies.[/col][/row][/table] [table][row][col] [/col][col].if t [i]expression1[/i] [b][/b](bv(bv [i]expression2[/i] .if n [i]expression1[/i] [b]||[/b] [i]expression2[/i] Vraie si [i]expression1[/i] ou [i]expression2[/i] est vraie.[/col][/row][/table] [/col][/row][/table] Les opérateurs [b]&&[/b] et .if t [b][/b](bv(bv .if n [b]||[/b] n'exécutent pas [i]expression2[/i] si la valeur de [i]expression1[/i] suffit à déterminer le code de retour de l'expression conditionnelle entière. [table][row][col] [/col][col][b]for[/b] [i]nom[/i] [ [b]in[/b] [i]mot[/i] ] ; [b]do[/b] [i]liste[/i] ; [b]done[/b] La liste de mots à la suite de [b]in[/b] est développée, créant une liste d'éléments. La variable [i]nom[/i] prend successivement la valeur de chacun des éléments, et [i]liste[/i] est exécutée à chaque fois. Si [b]in[/b] [i]mot[/i] est omis, la commande [b]for[/b] exécute la [i]liste[/i] une fois pour chacun des paramètres positionnels ayant une valeur (voir le paragraphe [size=6][/size] [b]PARAMÈTRES[/b] plus bas). Le code de retour est celui de la dernière commande exécutée. Si le développement de ce qui suit [b]in[/b] est une liste vide, aucune commande n'est exécutée et 0 est renvoyé.[/col][/row][/table] [table][row][col] [/col][col][b]select[/b] [i]nom[/i] [ [b]in[/b] [i]mot[/i] ] ; [b]do[/b] [i]liste[/i] ; [b]done[/b] La liste de mots à la suite de [b]in[/b] est développée, créant une liste d'éléments. L'ensemble des mots développés est imprimé sur la sortie d'erreur standard, chacun précédé par un nombre. Si [b]in[/b] [i]mot[/i] est omis, les paramètres positionnels sont imprimés (voir le paragraphe [size=6][/size] [b]PARAMÈTRES[/b] plus bas). Le symbole d'accueil [b]PS3[/b] est affiché, et une ligne est lue depuis l'entrée standard. Si la ligne est constituée d'un nombre correspondant à l'un des mots affichés, la variable [i]nom[/i] est remplie avec ce mot. Si la ligne est vide, les mots et le symbole d'accueil sont affichés à nouveau. Si une fin de fichier (EOF) est lue, la commande se termine. Pour toutes les autres valeurs, la variable [i]nom[/i] est vidée. La ligne lue est stockée dans la variable [b]REPLY .[/b] La [i]liste[/i] est exécutée après chaque sélection, jusqu'à ce qu'une commande [b]break[/b] ou [b]return[/b] soit atteinte. Le code de retour de [b]select[/b] est celui de la dernière commande exécutée dans la [b]liste ,[/b] ou zéro si aucune commande n'est exécutée.[/col][/row][/table] [table][row][col] [/col][col][b]case[/b] [i]mot[/i] [b]in[/b] [ [i]motif[/i] [ [b]|[/b] [i]motif[/i] ] ... ) [i]liste[/i] ;; ] ... [b]esac[/b] Une commande [b]case[/b] commence d'abord par développer le [i]mot[/i], puis essaye de le mettre en correspondance successivement avec chacun des [i]motifs[/i] en utilisant les mêmes règles que pour les noms de fichiers (voir le paragraphe [b]Développement des noms de fichiers[/b] plus bas). Quand une correspondance est trouvée, la [i]liste[/i] associée est exécutée. Dès qu'un motif correct a été trouvé, il n'y a plus d'autre essais. Le code retour est zéro si aucun motif ne correspond, sinon il s'agit du code de la dernière commande exécutée dans la [i]liste[/i].[/col][/row][/table] [table][row][col] [/col][col][b]if[/b] [i]liste[/i] ; [b]then[/b] [i]liste[/i] ; [ [b]elif[/b] [i]liste[/i] ; [b]then[/b] [i]liste[/i] ; ] ... [ [b]else[/b] [i]liste[/i] ; ] [b]fi[/b] La [b]liste du[/b] [b]if [/b] est exécutée. Si son code de retour est nul, la [i]liste[/i] du [b]then[/b] est exécutée. Sinon, chacune des [i]listes[/i] des [b]elif[/b] est exécutée successivement, et si un code de retour est nul, la [i]liste[/i] du [b]then[/b] associé est exécutée, et la commande se termine. En dernier ressort, la [i]liste[/i] du [b]else[/b] est exécutée. Le code de retour est celui de la dernière commande exécutée, ou zéro si aucune condition n'a été vérifiée.[/col][/row][/table] [/col][/row][/table] [table][row][col] [/col][col][b]while[/b] [i]liste[/i] ; [b]do[/b] [i]liste[/i] ; [b]done[/b] [table][row][col] [/col][col][b]until[/b] [i]liste[/i] ; [b]do[/b] [i]liste[/i] ; [b]done[/b][/col][/row][/table] La commande [b]while[/b] répète la [i]liste[/i] du [b]do[/b] tant que la dernière commande de la [i]liste[/i] du [b]while[/b] renvoie un code de retour nul. La commande [b]until[/b] agit de même manière, sauf que le test est négatif, et la [i]liste[/i] du [b]do[/b] est exécutée tant que la [i]liste[/i] du [b]until[/b] renvoie un code non-nul. Le code de retour des commandes [b]while[/b] et [b]until[/b] est celui de la dernière commande exécutée dans la liste [b]do[/b], ou zéro si aucune commande n'a été exécutée. [table][row][col] [/col][col][ [b]function[/b] ] [i]nom[/i] () { [i]liste[/i]; } Ceci définit une fonction possédant le [i]nom[/i] mentionné. Le corps de cette fonction est la [i]liste[/i] de commandes entre { et }. Cette liste est exécutée dès que le [i]nom[/i] de la fonction est invoqué en tant que commande simple. Le code de retour est celui de la dernière commande exécutée dans le corps de la fonction. (voir le paragraphe [size=6][/size] [b]FONCTIONS[/b] plus bas)[/col][/row][/table] [size=18] [b]Commentaires[/b] [/size] Dans un shell non-interactif, ou dans un shell interactif avec l'option [b]-o interactive-comments[/b] activée par la commande interne [b]shopt[/b] (voir [size=6][/size] [b]COMMANDES INTERNES DU SHELL[/b] plus bas), un mot commençant par [b]#[/b] permettra d'ignorer tous les caractères restants sur la ligne. Un shell interactif sans l'option [b]interactive-comments[/b] n'autorise pas les commentaires. L'option [b]interactive_comments[/b] est activée par défaut dans les shells interactifs. [size=18] [b]Protection[/b] [/size] Les [i]protections[/i] (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 empêcher 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 [i]méta-caractères[/i] mentionnés dans le paragraphe [size=6][/size] [b]DÉFINITIONS[/b] plus haut ont des significations spéciales pour le shell, et doivent être protégés pour garder leur propre valeur. Il y a trois mécanismes de protection : le caractère d'échappement, les apostrophes (quote) et les guillemets (double-quote). Un caractère backslash ([b][/b]e), quand il n'est pas protégé, représente le [b]caractère d'échappement .[/b] Il préserve la valeur littérale du caractère qui le suit, à l'exception du
. Si une séquence [b][/b]e
apparaît, et si le backslash n'est pas protégé, l'ensemble [b][/b]e
est considéré comme une continuation de ligne (autrement dit, il est ignoré). Encadrer des caractères entre des apostrophes simples préserve la valeur littérale de chacun des caractères. Une apostrophe ne peut pas être placée entre deux apostrophes, même si elle est précédée d'un backslash. Encadrer des caractères entre des guillemets préserve la valeur littérale de chacun des caractères sauf [b]$ ,[/b] [b]` ,[/b] et [b]e .[/b] Les caractères [b]$[/b] et [b]`[/b] conservent leurs significations spéciales, même entre guillemets. Le backslash ne conserve sa signification que lorsqu'il est suivi par [b]$ ,[/b] [b]` ,[/b] ^[b]"[/b]^, [b]e ,[/b] ou [b]
.[/b] Un guillemet peut être protégé entre deux guillemets, à condition de le faire précéder par un backslash. Les caractères spéciaux [b]*[/b] et [b]@[/b] ont des significations spéciales lorsqu'ils se trouvent entre guillemets (voir le paragraphe [size=6][/size] [b]PARAMÈTRES[/b] ci-dessous). Les mots de la forme [b]$[/b]'[i]chaîne[/i]' sont traités différemment. Le mot est développé en [i]chaîne[/i] avec les séquences d'échappement remplacées par les séquences standards du C ANSI:[table][row][col] [/col][col] [b]ea[/b] [table][row][col] [/col][col]alerte (cloche alias bip)[/col][/row][/table] [b]eb[/b] [table][row][col] [/col][col]effacement arrière[/col][/row][/table] [b]ee[/b] [table][row][col] [/col][col]un caractère escape[/col][/row][/table] [b]ef[/b] [table][row][col] [/col][col]fin de page[/col][/row][/table] [b]en[/b] [table][row][col] [/col][col]fin de ligne[/col][/row][/table] [b]er[/b] [table][row][col] [/col][col]retour chariot[/col][/row][/table] [b]et[/b] [table][row][col] [/col][col]tabulation horizontale[/col][/row][/table] [b]ev[/b] [table][row][col] [/col][col]tabulation verticale[/col][/row][/table] [b]ee[/b] [table][row][col] [/col][col]anti-slash (backslash)[/col][/row][/table] [b]e[i]nnn[/i][/b] [table][row][col] [/col][col]le caractère dont le code ASCII en octal est [i]nnn[/i] (un à trois chiffres)[/col][/row][/table] [b]ex[i]nnn[/i][/b] [table][row][col] [/col][col]le caractère dont le code ASCII en hexadécimal est [i]nnn[/i] (un à trois chiffres)[/col][/row][/table] [/col][/row][/table] Le résultat après traduction est protégé par des apostrophes comme si le symbole dollar n'avait pas été présent. Une chaîne entre guillemets précédée d'un symbole dollar ([b]$[/b]) sera traduite selon la localisation en vigueur. Si la locale courante est [b]C[/b] ou [b]POSIX[/b], le symbole dollar est ignoré. Si la chaîne a subi une traduction ou des remplacements, le résultat est protégé par des guillemets. [size=18] [b]ParamÈtres[/b] [/size] Un [i]paramètre[/i] est une entité permettant de stocker des valeurs, comme les variables dans les langages de programmation courants. Il peut se présenter sous forme d'un [b]nom ,[/b] d'un nombre, ou d'un des caractères spéciaux décrits plus bas, dans [b]Paramètres Spéciaux .[/b] Au niveau du shell, une [i]variable[/i] est un paramètre muni d'un [b]nom .[/b] Un paramètre existe dès qu'on lui attribue une valeur. Une chaîne vide est une valeur valide. Une fois qu'une variable existe, elle ne peut être détruite qu'en utilisant la commande interne [b]unset[/b] (voir [size=6][/size] [b]COMMANDES INTERNES DU SHELL[/b] plus bas). Une [i]variable[/i] peut recevoir une valeur par une affectation de la forme[table][row][col] [/col][col] [i]nom[/i]=[[i]valeur[/i]][/col][/row][/table] Si aucune [i]valeur[/i] n'est indiquée, la variable reçoit une chaîne vide. Toute [i]valeur[/i] est soumise aux principes de développement du tilde, des paramètres et des variables, de la substitution de commandes, de l'évaluation arithmétique, et de la suppression des protections (voir [size=6][/size] [b]EXPANSION[/b] plus bas). Si une variable a son attribut [b]-i[/b] activé (voir [b]declare[/b] plus bas, dans le paragraphe [size=6][/size] [b]COMMANDES INTERNES DU SHELL )[/b] alors la [i]valeur[/i] est soumise à l'évaluation arithmétique, même si la syntaxe $((...)) n'apparaît pas (voir [b]ÉVALUATION ARITHMÉTIQUE[/b] plus bas). Les mots ne sont pas tronqués, sauf avec la séquence [b]"$@"[/b] comme cela est expliqué dans le paragraphe [b]Paramètres Spéciaux[/b] ci-dessous. Le développement des noms de fichiers n'est pas effectué. [b]Paramètres positionnels[/b] Un [i]paramètre positionnel[/i] est un paramètre indiqué par un ou plusieurs chiffres (à l'exception du chiffre 0 seul). Les paramètres positionnels sont remplis avec les arguments du shell lors de son invocation. Ils peuvent être modifiés avec la commande interne [b]set .[/b] On ne peut pas utiliser d'assignation pour modifier le contenu d'un paramètre positionnel. Les paramètres positionnels sont temporairement modifiés lors de l'exécution d'une fonction du shell (voir le paragraphe [size=6][/size] [b]FONCTIONS[/b] plus bas). Un paramètre positionnel constitué de plusieurs chiffres doit être encadré par des accolades lors de son développement (voir [size=6][/size] [b]EXPANSION[/b] plus bas). [b]Paramètres spéciaux[/b] Il existe plusieurs paramètres ayant un comportement particulier. Ces paramètres peuvent uniquement être consultés, on ne peut pas les modifier. [b]*[/b] [table][row][col] [/col][col]Se développe en l'ensemble des paramètres positionnels, commençant à 1. Quand le développement se produit entre des guillemets, [b]*[/b] se transforme en un seul mot constitué de la valeur de tous les paramètres positionnels séparées par le premier caractère de la variable spéciale [size=6][/size] [b]IFS .[/b] Ceci signifie que "[b]$*[/b]" est équivalent à "[b]$1[/b][i]c[/i][b]$2[/b][i]c[/i][b]...[/b]", dans laquelle [i]c[/i] est le premier caractère de la valeur de la variable [size=6][/size] [b]IFS .[/b] Si [size=6][/size] [b]IFS[/b] est inexistante, les paramètres sont séparés par des espaces. Si [size=6][/size] [b]IFS[/b] est nulle, les paramètres sont juxtaposés sans séparation.[/col][/row][/table] [b]@[/b] [table][row][col] [/col][col]Se développe en l'ensemble des paramètres positionnels, commençant à 1. Quand le développement a lieu entre guillemets, chaque paramètre se transforme en un mot distinct. Ceci signifie que "[b]$@[/b]" est équivalent à "[b]$1[/b]" "[b]$2[/b]" ... Quand il n'y a pas de paramètres positionnels, "[b]$@[/b]" et [b]$@[/b] sont simplement éliminés.[/col][/row][/table] [b]#[/b] [table][row][col] [/col][col]Correspond au nombre de paramètres positionnels, en base décimale.[/col][/row][/table] [b]?[/b] [table][row][col] [/col][col]Fournit le code de retour du dernier pipeline exécuté à l'avant-plan.[/col][/row][/table] [b]-[/b] [table][row][col] [/col][col]Est remplacé par la liste des options du shell indiquées durant l'invocation, configurées avec la commande interne [b]set[/b] ou positionnées par le shell lui-même (comme avec l'option [b]-i[/b] ).[/col][/row][/table] [b]$[/b] [table][row][col] [/col][col]Se transforme en PID du shell. Dans un sous-shell (), il se transforme en PID du shell, et non pas du sous-shell.[/col][/row][/table] [b]![/b] [table][row][col] [/col][col]Se transforme en PID de la commande (asynchrone) exécutée en arrière-plan le plus récemment.[/col][/row][/table] [b]0[/b] [table][row][col] [/col][col]Se développe pour donner le nom du shell ou du script. Ce paramètre est rempli lors de l'initialisation de l'interpréteur. Si [b]bash[/b] est invoqué avec un fichier de commandes, [b]$0[/b] correspond au nom de ce fichier. Si [b]bash[/b] est lancé avec l'option [b]-c ,[/b] alors [b]$0[/b] 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 chemin d'accès utilisé pour invoquer [b]bash ,[/b] comme il l'a reçu en argument zéro.[/col][/row][/table] [b]_[/b] [table][row][col] [/col][col]Au lancement du shell, contient le chemin absolu du shell ou du script en cours d'exécution. Devient le dernier argument de la commande précédente, après développement. Correspond aussi au 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 vérification [Ndt: généralement [i]/var/mail/nom_de_l_utilisateur[/i]].[/col][/row][/table] [b]Variables du shell[/b] Les variables suivantes sont remplies par l'interpréteur de commandes : [b]PPID[/b] [table][row][col] [/col][col]L'ID du processus parent du shell. Cette variables est protégée en écriture.[/col][/row][/table] [b]PWD[/b] [table][row][col] [/col][col]Le répertoire de travail en cours, tel qu'il est configuré par la commande [b]cd .[/b][/col][/row][/table] [b]OLDPWD[/b] [table][row][col] [/col][col]Le répertoire de travail précédent, configuré par la commande [b]cd .[/b][/col][/row][/table] [b]REPLY[/b] [table][row][col] [/col][col]Contient la ligne d'entrée lue par la commande interne [b]read[/b] lorsqu'elle n'a pas d'argument.[/col][/row][/table] [b]UID[/b] [table][row][col] [/col][col]Contient l'ID de l'utilisateur, initialisé au démarrage du shell. C'est une variable en lecture seulement[/col][/row][/table] [b]EUID[/b] [table][row][col] [/col][col]Contient l'UID effectif de l'utilisateur, initialisé au démarrage du shell. Cette variable est en lecture seule.[/col][/row][/table] [b]GROUPS[/b] [table][row][col] [/col][col]Variable de type tableau contenant la liste des groupes dont l'utilisateur est membre. Cette variables est protégée en écriture.[/col][/row][/table] [b]BASH[/b] [table][row][col] [/col][col]Se développe en chemin d'accès complet à l'instance courrante de [b]bash .[/b][/col][/row][/table] [b]BASH_VERSION[/b] [table][row][col] [/col][col]Correspond au numéro de version de cette instance de [b]bash .[/b][/col][/row][/table] [b]BASH_VERSINFO[/b] [table][row][col] [/col][col]Une variable tableau protégée en écriture dont les membres représentent la version de cette instance de [b]bash .[/b] Cette valeur est renseignée de la manière suivante: .5[table][row][col] [/col][col][/col][/row][/table] [b]BASH_VERSINFO[0][/b] [table][row][col] [/col][col]Le numéro majeur de la version ([i]release[/i]).[/col][/row][/table] [b]BASH_VERSINFO[1][/b] [table][row][col] [/col][col]Le numéro mineur de la version ([i]version[/i]).[/col][/row][/table] [b]BASH_VERSINFO[2][/b] [table][row][col] [/col][col]Le niveau de patch.[/col][/row][/table] [b]BASH_VERSINFO[3][/b] [table][row][col] [/col][col]Le numéro de compilation.[/col][/row][/table] [b]BASH_VERSINFO[4][/b] [table][row][col] [/col][col]Le statut de cette version (e.g., [i]beta1[/i]).[/col][/row][/table] [b]BASH_VERSINFO[5][/b] [table][row][col] [/col][col]La valeur de [b]MACHTYPE[/b].[/col][/row][/table] [/col][/row][/table] [b]SHLVL[/b] [table][row][col] [/col][col](NDT : Lire SH LVL - Shell Level - Niveau d'interpréteur) Incrémenté de 1 à chaque invocation d'une instance de [b]bash .[/b][/col][/row][/table] [b]RANDOM[/b] [table][row][col] [/col][col]A chaque fois que ce paramètre est référencé, un entier aléatoire entre 0 et 32767 est engendré. Cette séquence de nombres aléatoires peut être initialisée en assignant une valeur à [size=6][/size] [b]RANDOM .[/b] Si [size=6][/size] [b]RANDOM[/b] est détruit (commande [b]unset[/b]), il perd son comportement spécial, même s'il est recréé plus tard.[/col][/row][/table] [b]SECONDS[/b] [table][row][col] [/col][col]A chaque fois que ce paramètre est lu, le nombre de secondes écoulées depuis le lancement de l'interpréteur est renvoyé. Si une valeur est affectée à [size=6][/size] [b]SECONDS ,[/b] il renverra lors des lectures ultérieures le nombre de secondes écoulées depuis l'affectation, augmenté de la valeur fournie. Si [size=6][/size] [b]SECONDS[/b] est détruit (commande [b]unset[/b]), il perd son comportement spécial, même s'il est recréé plus tard.[/col][/row][/table] [b]LINENO[/b] [table][row][col] [/col][col]Chaque fois que ce paramètre est référencé, le shell 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 [size=6][/size] [b]LINENO[/b] est détruit (commande [b]unset[/b]), il perd son comportement spécial, même s'il est recréé plus tard.[/col][/row][/table] [b]HISTCMD[/b] [table][row][col] [/col][col]Le numéro d'historique, ou le rang dans la liste d'historique, de la commande en cours. Si [size=6][/size] [b]HISTCMD[/b] est détruit (commande [b]unset[/b]), il perd son comportement spécial, même s'il est recréé plus tard.[/col][/row][/table] [b]DIRSTACK[/b] [table][row][col] [/col][col]Une variable de type tableau (voir [b]Tableaux[/b] plus bas) représentant le contenu courant de la pile de répertoires. Les répertoires apparaissent dans la pile dans l'ordre dans lequel la commande interne [b]dirs[/b] les affiche. Il est possible de modifier directement cette variables mais les commandes internes [b]pushd[/b] et [b]popd[/b] doivent être utilisées pour ajouter et enlever des répertoires. Modifier cette variable ne modifiera pas le répertoire courant. Si [size=6][/size] [b]DIRSTACK[/b] est détruite, elle perd ses propriétés spéciales, même si elle est recréée.[/col][/row][/table] [b]PIPESTATUS[/b] [table][row][col] [/col][col]Une variable de type tableau (voir [b]Tableaux[/b] plus bas) contenant une liste des codes de retour des derniers processus exécutés en avant-plan (éventuellement une seule commande).[/col][/row][/table] [b]OPTARG[/b] [table][row][col] [/col][col]La valeur du dernier argument d'option traité par la commande interne [b]getopts[/b] (voir le paragraphe [size=6][/size] [b]COMMANDES INTERNES DU SHELL[/b] plus bas).[/col][/row][/table] [b]OPTIND[/b] [table][row][col] [/col][col]Le rang du prochain argument à traiter avec la commande [b]getopts[/b] (voir le paragraphe [size=6][/size] [b]COMMANDES INTERNES DU SHELL[/b] plus bas).[/col][/row][/table] [b]HOSTNAME[/b] [table][row][col] [/col][col]Automatiquement affectée avec le nom de l'ordinateur.[/col][/row][/table] [b]HOSTTYPE[/b] [table][row][col] [/col][col]Automatiquement rempli avec une chaîne qui décrit de manière unique le type de machine sur laquelle [b]bash[/b] s'exécute. La valeur par défaut dépend du système.[/col][/row][/table] [b]OSTYPE[/b] [table][row][col] [/col][col]Automatiquement rempli avec une chaîne qui décrit le système d'exploitation sur lequel [b]bash[/b] s'exécute. La valeur par défaut dépend du système.[/col][/row][/table] [b]MACHTYPE[/b] [table][row][col] [/col][col]Automatiquement affectée avec une chaîne décrivant le type du système sur lequel [b]bash[/b] s'exécute, dans le format standard de GNU [i]processeur-compagnie-système[/i]. La valeur par défaut dépend du système.[/col][/row][/table] [b]SHELLOPTS[/b] [table][row][col] [/col][col]Liste des options activées du shell, séparées par des virgules. Chaque mot de la liste est un argument valide pour l'option [b]-o[/b] de la commande interne [b]set[/b] (voir [size=6][/size] [b]COMMANDES[/b] INTERNES DU SHELL). Les options apparaissant dans [size=6][/size] [b]SHELLOPTS[/b] sont celle indiquées comme [i]actives[/i] par [b]set[/b] -o. Si cette variable est dans l'environnement au lancement de [b]bash ,[/b] chaque option de la liste est activée avant de lire les fichiers d'initialisation. Cette variable est protégée en écriture.[/col][/row][/table] Les variables suivantes sont utilisées par l'interpréteur. Dans certains cas, [b]bash[/b] affecte des valeurs par défaut aux variables, ces cas sont décrits plus bas. [b]IFS[/b] [table][row][col] [/col][col]Le Séparateur de Champs Interne [i]Internal Field Separator[/i] qui est utilisé pour séparer les mots après les développements, et pour découper les lignes en mots avec la commande interne [b]read .[/b] La valeur par défaut est ``
''.[/col][/row][/table] [b]PATH[/b] [table][row][col] [/col][col]Le chemin de recherche des commandes à exécuter. Il s'agit d'une liste de répertoires, séparés par des deux-points (`:') que l'interpréteur consulte lorsqu'il recherche une commande (voir le paragraphe [size=6][/size] [b]EXÉCUTION DES COMMANDES[/b] plus bas). Le chemin par défaut dépend du système, et de la configuration choisie par la personne installant [b]bash .[/b] Une configuration fréquente est ``/bin:/usr/bin:/usr/local/bin:.''.[/col][/row][/table] [b]HOME[/b] [table][row][col] [/col][col]Le répertoire personnel de l'utilisateur. C'est l'argument par défaut de la commande interne [b]cd[/b]. Cette variable sert également lors du développement du tilde.[/col][/row][/table] [b]CDPATH[/b] [table][row][col] [/col][col]Le chemin de recherche de la commande interne [b]cd .[/b] 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 [b]cd .[/b] Une configuration possible serait ``.:~:/usr''.[/col][/row][/table] [b]BASH_ENV[/b] [table][row][col] [/col][col]Si ce paramètre est configuré lorsque [b]bash[/b] 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 [b].bashrc .[/b] La valeur de [size=6][/size] [b]BASH_ENV[/b] est soumise au remplacement des paramètres, substitution de commandes, et évaluation arithmétique avant d'être considérée comme nom de fichier. [size=6][/size] [b]PATH[/b] n'est pas utilisée pour rechercher le fichier obtenu.[/col][/row][/table] [b]MAIL[/b] [table][row][col] [/col][col]Si ce paramètre correspond à un nom de fichier, et si la variable [size=6][/size] [b]MAILPATH[/b] n'est pas configurée, [b]bash[/b] informera l'utilisateur si un courrier arrive dans le fichier indiqué.[/col][/row][/table] [b]MAILCHECK[/b] [table][row][col] [/col][col]Indique une période (en secondes), par défaut 60, avec laquelle [b]bash[/b] vérifiera si un nouveau courrier est arrivé. Lorsque le délai est écoulé, le shell vérifiera la présence d'un courrier avant d'afficher son symbole d'accueil. Si cette variable est détruite, le shell cessera la vérification.[/col][/row][/table] [b]MAILPATH[/b] [table][row][col] [/col][col]Il s'agit d'une liste 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 [b]$_[/b] correspond au nom du fichier. Exemple:[table][row][col] [/col][col][/col][/row][/table] [b]MAILPATH[/b]='/usr/spool/mail/bfox?"Tu as du courrier":~/shell-mail?"$_ a du courrier"' [b]Bash[/b] fournit une valeur par défaut pour cette variable, mais l'emplacement du fichier boîte à lettres dépend du système (par exemple /usr/spool/mail/[b]$USER[/b]).[/col][/row][/table] [b]PS1[/b] [table][row][col] [/col][col]La valeur de ce paramètre est développée puis utilisée comme symbole d'accueil principal (voir le paragraphe [size=6][/size] [b]SYMBOLE D'ACCUEIL[/b] ci-dessous). La valeur par défaut est ``[b][/b]es-eve$ ''.[/col][/row][/table] [b]PS2[/b] [table][row][col] [/col][col]La valeur de ce paramètre est développée comme [b]PS1[/b] puis utilisée comme symbole d'accueil secondaire. Par défaut il s'agit de ``[b]>[/b] ''.[/col][/row][/table] [b]PS3[/b] [table][row][col] [/col][col]La valeur de ce paramètre est utilisée comme symbole pour la commande [i]select[/i] (voir [size=6][/size] [b]GRAMMAIRE DU SHELL[/b] plus haut).[/col][/row][/table] [b]PS4[/b] [table][row][col] [/col][col]La valeur de ce paramètre est développée comme [b]PS1 [/b] puis affichée entre chaque commande lors d'un suivi d'exécution. Le premier caractère de [size=6][/size] [b]PS4[/b] est répété autant de fois que nécessaire pour indiquer le niveau d'imbrication. La valeur par défaut est ``[b]+[/b] ''.[/col][/row][/table] [b]TIMEFORMAT[/b] [table][row][col] [/col][col]La valeur de ce paramètre est utilisée en tant que chaîne de format pour afficher le temps consommé dans les pipelines préfixés avec le mot réservé [b]time .[/b] Le caractère [b]%[/b] introduit une séquence d'échappement qui est développée avec une valeur de temps ou une autre information. Les séquences d'échappement et leurs significations sont les suivantes; les accolades entourent les parties facultatives. .5[table][row][col] [/col][col][/col][/row][/table] [b]%%[/b] [table][row][col] [/col][col]Un [b]%[/b] seul (non interprété).[/col][/row][/table] [b]%[[i]p[/i]][l]R[/b] [table][row][col] [/col][col]Le temps écoulé en secondes.[/col][/row][/table] [b]%[[i]p[/i]][l]U[/b] [table][row][col] [/col][col]Le temps processeur écoulé en mode utilisateur en secondes.[/col][/row][/table] [b]%[[i]p[/i]][l]S[/b] [table][row][col] [/col][col]Le temps processeur écoulé en mode système en secondes.[/col][/row][/table] [b]%P[/b] [table][row][col] [/col][col]Le pourcentage de temps processeur utilisé calculé avec (%U + %S) / %R.[/col][/row][/table] [/col][/row][/table] [table][row][col] [/col][col]La séquence facultative [i]p[/i] est un chiffre indiquant la [i]précision[/i], le nombre de chiffres après la virgule. Une valeur de 0 provoque l'affichage de nombre entiers. Trois chiffres au plus peuvent être affichés après la virgule; tout chiffre supérieur à 3 sera changé en 3. Si [i]p[/i] n'est pas indiqué, 3 est utilisé.[/col][/row][/table] [table][row][col] [/col][col]La séquence optionnelle [b]l[/b] spécifie un format étendu, incluant les minutes, de la forme [i]MM[/i]m[i]SS[/i].[i]FF[/i]s. La valeur de [i]p[/i] détermine si la partie décimale est affichée ou non.[/col][/row][/table] [table][row][col] [/col][col]Si cette variable n'est pas assignée, [b]bash[/b] réagit comme si la valeur [b]$'[/b]enrealet%3lRenuseret%3lUensyst%3lS' avait été affectée. Si la variable est vide, aucune information n'est affichée. Un caractère fin-de-ligne est ajouté à la fin de l'affichage.[/col][/row][/table] [b]HISTSIZE[/b] [table][row][col] [/col][col]Le nombre de commandes à mémoriser dans l'historique (voir le paragraphe [size=6][/size] [b]HISTORIQUE[/b] plus bas). La valeur par défaut est 500.[/col][/row][/table] [b]HISTFILE[/b] [table][row][col] [/col][col]Le nom du fichier d'historique pour la mémorisation des commandes(voir [size=6][/size] [b]HISTORIQUE[/b] plus bas). Par défaut, il s'agit de [i]~/.bash_history[/i]. Si cette variable est détruite, l'historique n'est pas enregistré en fin de shell.[/col][/row][/table] [b]HISTFILESIZE[/b] [table][row][col] [/col][col]Le nombre maximal de lignes contenues dans le fichier historique. Quand cette variable contient une valeur, le fichier historique est tronqué, si besoin est, pour ne contenir que ce nombre de lignes. La valeur par défaut est 500. Ce fichier est tronqué à cette taille après écriture quand un shell interactif se termine.[/col][/row][/table] [b]OPTERR[/b] [table][row][col] [/col][col]Si cette variable contient la valeur 1, [b]bash[/b] affiche les messages d'erreurs déclenchés par la commande interne [b]getopts[/b] (voir le paragraphe [size=6][/size] [b]COMMANDES INTERNES DU SHELL[/b] plus bas). [size=6][/size] [b]OPTERR[/b] est initialisé avec la valeur 1 à chaque invocation du shell, ou au lancement d'un script.[/col][/row][/table] [b]LANG[/b] [table][row][col] [/col][col]Détermine la localisation pour toutes les catégories non spécifiquement précisées par une variable commençant par [b]LC_[/b].[/col][/row][/table] [b]LC_ALL[/b] [table][row][col] [/col][col]Cette variable surcharge [b]LANG[/b] et toute autre variable [b]LC_[/b] indiquant la localisation.[/col][/row][/table] [b]LC_COLLATE[/b] [table][row][col] [/col][col]Cette variable détermine l'ordre des lettres lors du tri des chemins ainsi que le comportement des expressions des intervalles, des classes d'équivalences, et de la comparaison de chaînes lors de la recherche de motifs et le développement des chemins.[/col][/row][/table] [b]LC_CTYPE[/b] [table][row][col] [/col][col]Cette variable détermine l'interprétation des caractères et le comportement des classes de caractères [Ndt: ex: [:alpha] ] lors du développement des chemins et de la recherche de motifs.[/col][/row][/table] [b]LC_MESSAGES[/b] [table][row][col] [/col][col]Cette variable détermine le langage des messages et celui utilisé pour traduire les chaînes entre guillemets précédés par un [b]$[/b].[/col][/row][/table] [b]PROMPT_COMMAND[/b] [table][row][col] [/col][col]Lorsque cette variable contient une valeur, celle-ci est exécutée en tant que commande, avant l'affichage du symbole d'accueil principal.[/col][/row][/table] [b]IGNOREEOF[/b] [table][row][col] [/col][col]Cette variable contrôle le comportement du shell lorsqu'il reçoit un caractère [size=6][/size] [b]EOF[/b] (fin de fichier) comme unique entrée. Si elle configurée, la valeur de cette variable correspond au nombre de caractères [size=6][/size] [b]EOF[/b] consécutifs apparaissant en début de ligne que [b]bash[/b] ignorera avant de se terminer. Si cette variable existe mais que sa valeur n'est pas numérique, ou si elle n'a pas de valeur, [b]bash[/b] accepte par défaut 10 [i]EOF[/i] consécutifs avant de se terminer. Si elle n'existe pas, [size=6][/size] [b]EOF[/b] est considéré comme un terminateur de saisie pour le shell.[/col][/row][/table] [b]TMOUT[/b] [table][row][col] [/col][col]Si cette variable contient une valeur supérieure a zéro, celle-ci est considérée comme un délai en secondes, à partir de l'affichage du symbole d'accueil principal. Lorsque ce délai sera écoulé, [b]Bash[/b] se terminera si aucune saisie n'a eu lieu.[/col][/row][/table] [b]FCEDIT[/b] [table][row][col] [/col][col]L'éditeur par défaut utilisé par la commande interne [b]fc .[/b][/col][/row][/table] [b]FIGNORE[/b] [table][row][col] [/col][col]Une liste de suffixes, séparés par des deux-points `:', que [b]bash[/b] ignorera lors de la complétion des noms de fichiers (voir le paragraphe [size=6][/size] [b]READLINE[/b] plus bas). Un nom de fichier dont le suffixe correspond à l'un de ceux mentionnés dans [size=6][/size] [b]FIGNORE[/b] est exclus de la liste des fichiers. Par exemple, cette variable peut prendre la valeur ``.o:~''.[/col][/row][/table] [b]GLOBIGNORE[/b] [table][row][col] [/col][col]Une liste de motifs séparés par des deux-points, définissant la liste des noms de fichiers à ignorer lors du développement des chemins. Si un nom de fichier correspondant à un motif d'expansion, correspond également à un motif dans [size=6][/size] [b]GLOBIGNORE ,[/b] il est supprimé de la liste des correspondances.[/col][/row][/table] [b]INPUTRC[/b] [table][row][col] [/col][col]Le nom du fichier de configuration de [b]readline[/b] prioritaire sur le fichier par défaut[i] ~/.inputrc[/i][/col][/row][/table] (voir [size=6][/size] [b]READLINE[/b] plus bas). [b]HISTCONTROL[/b] [table][row][col] [/col][col]Si cette variable contient la valeur [b]ignorespace ,[/b] les lignes commençant par un caractère d'espacement ne seront par mémorisées dans l'historique. Si elle contient la valeur [b]ignoredups ,[/b] une ligne correspondant exactement à la ligne de commande précédente ne sera pas dupliquée dans l'historique. La valeur [i]ignoreboth[/i] permet de combiner ces deux comportements. Si la variable est détruite (commande [b]unset[/b]), ou si elle contient une valeur différente des trois mentionnées ci-dessus, tous les lignes lues par l'interpréteur seront mémorisées dans la liste d'historique, sous contrôle de [b]HISTIGNORE .[/b] Le fonctionnement de cette variable est surchargé par [b]HISTIGNORE .[/b] La seconde ligne et les suivantes d'une commande multiligne ne sont pas testées, et sont ajoutées dans l'historique quelque soit la valeur de [b]HISTCONTROL .[/b][/col][/row][/table] [b]HISTIGNORE[/b] [table][row][col] [/col][col]Une liste de motifs séparés par des deux-points déterminant quelles lignes de commandes seront ajoutées à l'historique. Chaque motif est accroché au début de la ligne et doit lui correspondre en entier (il n'y a pas d'ajout de `[b]*[/b]' implicite). Chaque motif est comparé à chaque ligne après que les vérifications de [b]HISTCONTROL[/b] aient été appliquées. En plus des motifs génériques normaux du shell, `[b]&[/b]' correspond à la ligne précédente de l'historique. `[b]&[/b]' peut être protégé par un anti-slash. Ce dernier est éliminé avant de tenter une comparaison. La seconde ligne et les suivantes d'une commande multiligne ne sont pas testées, et sont ajoutées dans l'historique quelque soit la valeur de [b]HISTIGNORE .[/b][/col][/row][/table] [b]histchars[/b] [table][row][col] [/col][col]Cette variable contient deux ou trois caractères contrôlant le développement de l'historique, et le découpage en jetons (voir [size=6][/size] [b]DÉVELOPPEMENT DE L'HISTORIQUE[/b] plus bas). Le premier caractère est le [b]caractère de développement de l'historique ,[/b] c'est à dire celui qui indique le début d'un développement d'historique (normalement `[b]![/b]'). Le second caractère est celui de [b]substitution rapide ,[/b] utilisé comme raccourci pour relancer la commande précédente, en modifiant une partie de la chaîne. Par défaut il s'agit de `[b]^[/b]'. L'éventuel troisième caractère est celui qui indique, lorsqu'on le trouve en début de mot que le reste de la ligne est un commentaire. Normalement on utilise le caractère `[b]#[/b]'. Ce caractère de commentaire empêche l'expansion de l'historique pour tous les mots restants sur la ligne. En revanche, il ne s'agit pas obligatoirement du caractère de commentaire pour l'interpréteur.[/col][/row][/table] [b]HOSTFILE[/b] [table][row][col] [/col][col]Contient le nom d'un fichier ayant le même format que[i] /etc/hosts[/i][/col][/row][/table] qui sera consulté lorsque le shell devra compléter un nom d'hôte. Ce fichier peut être changé de manière interactive. Lors de la prochaine tentative pour compléter un nom d'hôte, [b]bash[/b] ajoutera le nouveau fichier à sa base de données déjà existantes. [b]auto_resume[/b] [table][row][col] [/col][col]Cette variable configure le comportement du shell interactif vis-à-vis de l'utilisateur et du contrôle de jobs. Si cette variable existe, les commandes simples constituées d'un seul mot sont considérées comme de possibles relances de travaux arrêtés. Aucune ambiguïté n'est possible, si plusieurs travaux arrêtés commencent par la chaîne saisie, [b]bash[/b] sélectionne le job manipulé le plus récemment. Le [i]nom[/i] du job arrêté correspond, dans ce contexte, à la ligne de commande utilisée pour le lancer. Si cette variable contient la valeur [b]exact ,[/b] la chaîne fournie doit correspondre exactement au nom d'un job arrêté. Si elle contient la valeur [b]substring ,[/b] la chaîne fournie doit correspondre à une sous-chaîne du nom du job arrêté. La valeur [i]substring[/i] fournit un comportement analogue au job id [b]%?[/b] (voir [size=6][/size] [b]CONTRÔLE DES JOBS[/b] plus bas). Si la variable contient n'importe quelle autre valeur, la chaîne fournie doit correspondre à un préfixe du nom d'un job arrêté. C'est analogue au fonctionnement du job id [b]% .[/b][/col][/row][/table] [b]Tableaux[/b] [b]Bash[/b] propose des variables tableaux à une dimension. N'importe quelle variable peut être utilisée comme tableau ; la commande interne [b]declare[/b] peut servir à déclarer explicitement un tableau. Il n'y a pas de limite maximale à la taille d'un tableau, ni d'obligation que les membres soient indexés ou assignés de manière contigûe. Les tableaux sont indexés par des entiers en commençant à zéro. Un tableau est créé automatiquement si une variable est remplie en utilisant la syntaxe [i]nom[/i][[i]index[/i]]=[i]valeur[/i]. [i]l' index[/i] est traîté comme une expression arithmétique, et s'évaluer en un nombre positif ou nul. Pour déclarer explicitement un tableau, on utilise [b]declare -a [i]nom[/i][/b] (voir [size=6][/size] [b]COMMANDES INTERNES DU SHELL[/b] plus bas). [b]declare -a [i]nom[/i][[i]index[/i]][/b] est aussi accepté bien que l'[i]index[/i] soit ignoré. Des attributs peuvent être spécifié pour une variable tableau en utilisant les commandes internes [b]declare[/b] et [b]readonly .[/b] Les attributs s'appliquent à tous les membres du tableau. Les tableaux sont remplis en utilisant l'affectation composée de la forme [i]nom[/i]=[b]([/b]valeur_[i]1[/i] ... valeur_[i]n[/i][b])[/b], où chaque [i]valeur[/i] est de la forme [[i]index[/i]]=[i]chaîne[/i]. Seule la [i]chaîne[/i] est obligatoire. Si les crochets et les index optionnels sont fournis, les affectations ont lieu en conséquence ; sinon le rang de l'elément rempli est le dernier rang rempli plus un. Les index commencent à zéro. Cette syntaxed est aussi acceptée par la commande interne [b]declare .[/b] Les éléments individuels du tableaux sont remplis en utilisant la syntaxe [i]nom[/i][[i]index[/i]]=[i]valeur[/i] présentée plus haut. Chaque élément d'un tableau peut référencé en utilisant la notation ${[i]nom[/i][[i]index[/i]]}. Les accolades sont indispensables pour éviter les conflits avec le développement des noms de fichiers. Si [i]index[/i] est [b]@[/b] ou [b]*[/b], le développement donne tous les membres de [i]nom[/i]. Ces deux index diffèrent lorsqu'ils sont employés entre guillemets. Dans ce cas, ${[i]nom[/i][*]} correspond à un seul mot contenant les valeurs de tous les membres séparés par le premier caractère de la variable spéciale [size=6][/size] [b]IFS ,[/b] et ${[i]nom[/i][@]} développe chaque membre de [i]nom[/i] en un mot distinct. Quant il n'y a pas de membre dans l
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?