# End of Options

The options of UNIX® utilities usually are introduced with a dash (`-`) character.

This is problematic when a non-option argument has to be specified that begins with a dash. A common example for this are filenames.

Many utilities use the convention to specify two consecutive dashes (`--`) to signal "end of options at this point". Beyond this tag, no options are are processed anymore, even if an argument begins with a dash.

Example: You want to list (`ls`) the file with the name `-hello`. With common option processing, this could end up in the ls-options `-h`, `-e`, `-l` and `-o` and probably in an error message about invalid options. You use this to avoid the wrong option processing:

`ls -- -hello`

POSIX® specifies that every utility should follow this rule ("utility syntax guidelines"), except

• `echo` (historical reasons)
• `test` (obvious parsing reasons)