J'ai vu --
utilisé dans la commande compgen
.
Par exemple:
compgen -W "foo bar baz" -- b
Quelle est la signification du --
là-dedans?
Plus précisément, un double tiret (--
) est utilisé dans la plupart des commandes bash intégrées et dans de nombreuses autres commandes pour signifier la fin des options de commande, après quoi seuls les paramètres de position sont acceptés.
Exemple d'utilisation: disons que vous voulez grep un fichier pour la chaîne -v
- normalement -v
sera considéré comme l'option pour inverser la signification correspondante (afficher uniquement les lignes qui ne correspondent pas), mais avec --
vous pouvez grep pour la chaîne -v
comme ça:
grep -- -v file
Dans man bash
nous pouvons lire dans la section Commandes intégrées du shell :
Sauf indication contraire, chaque commande intégrée documentée dans cette section comme acceptant les options précédées de
-
accepte--
pour signifier la fin des options.Le
:
,true
,false
ettest
les commandes internes n'acceptent pas les options et ne traitent pas--
spécialement. Les commandes internesexit
,logout
,break
,continue
,let
etshift
acceptent et traitent les arguments commençant par-
sans exiger--
. Les autres commandes internes qui acceptent des arguments mais ne sont pas spécifiées comme acceptant des options interprètent des arguments commençant par-
comme options invalides et nécessitent--
pour empêcher cette interprétation.Notez que
echo
n'interprète pas--
pour signifier la fin des options.
Cela marque la fin de la liste des paramètres (option).
POSIX.1-2017
12.2 Consignes de syntaxe de l'utilitaire
Directive 10:
La première
--
l'argument qui n'est pas un argument-option doit être accepté comme délimiteur indiquant la fin des options. Tous les arguments suivants doivent être traités comme des opérandes, même s'ils commencent par '-
' personnage.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02