What does "--" (double-dash) mean?
More precisely, a double dash (--
) is used in most bash built-in commands and many other commands to signify the end of command options, after which only positional arguments are accepted.
Example use: lets say you want to grep a file for the string -v
- normally -v
will be considered the option to reverse the matching meaning (only show lines that do not match), but with --
you can grep for string -v
like this:
grep -- -v file
In man bash
we can read in Shell Builtin Commands section:
Unless otherwise noted, each builtin command documented in this section as accepting options preceded by
-
accepts--
to signify the end of the options.The
:
,true
,false
, andtest
builtins do not accept options and do not treat--
specially. Theexit
,logout
,break
,continue
,let
, andshift
builtins accept and process arguments beginning with-
without requiring--
. Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with-
as invalid options and require--
to prevent this interpretation.Note that
echo
does not interpret--
to mean the end of options.
This marks end of parameter (option) list.