bash-hackers-wiki/docs/dict/end_of_options.md
Hanson Char e966036f05 Fix hyperlinks of markdown pages at depth 2
find docs/ -depth 2  -name '*.md' | xargs grep '(.*/' -l | \
  xargs -I{} \
  sed -i '' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)\(.md\)\{0\})%(../\1/\2.md)%g' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)#\([0-9a-zA-Z_-][0-9a-zA-Z_-]*\))%(../\1/\2.md#\3)%g' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)\(.md\)\{0\})%(../\1/\2/\3.md)%g' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)#\([0-9a-zA-Z_-][0-9a-zA-Z_-]*\))%(../\1/\2/\3.md#\4)%g' \
  -e 's%](\([^:.>)#][^:.>)#]*\))%](../\1.md)%g' \
  -e 's%](\([^:.>)#][^:.>)#]*\)#\([^:.>)#][^:.>)#]*\))%](../\1.md#\2)%g' \
  {}

Related to https://github.com/flokoe/bash-hackers-wiki/issues/10
2024-01-28 17:26:10 -08:00

1.1 KiB

End of Options

The options of UNIX(r) 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 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(r) specifies that every utility should follow this rule (see ch. 12.2 Utility Syntax Guidelines), except

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

See also