26

Recently I got to know of -- that is double-hyphen which is used to tell a command that the option list has ended and what follows should not be considered as a option. So,

grep --  'search_word' *

would search for the given search_word. But you could see a unexpected behavior if you remove -- and if there is a single file that start with -, which would switch on the option that match with the chars in filename.

What is this -- called ? Is there any technical term to this ?

mtk
  • 26,802
  • 35
  • 91
  • 130
  • 3
    See the debate on [Why do unix-heads say “minus”?](http://unix.stackexchange.com/questions/2212/why-do-unix-heads-say-minus) then double it. – manatwork Nov 22 '12 at 14:25
  • @manatwork No, square it! Should we say “minus dash” or “dash minus”? – Gilles 'SO- stop being evil' Nov 22 '12 at 23:12
  • I just pronounce it "--". – dubiousjim Jan 11 '13 at 13:40
  • I encounter regularity the `cd --` and `cd -` phenomena. while `cd --` means essentially just `cd` and thus change into your `$HOME`, `cd -` means put your self into previous directory. This becomes handy when you wanted to `cd ..` but as with german keyboard layout I mix it often up with `cd --`. `cd -` will then put you back. :D – math Sep 24 '13 at 07:33

2 Answers2

18

The -- is working for tools which use getopt(3) to process command line arguments and many API that parse POSIX style options.

From the manual page of getopt(3):

The interpretation of options in the argument list may be cancelled by the option `--' (double dash) which causes getopt() to signal the end of argument processing and return -1.

I would then say it is called double dash

Matteo
  • 9,676
  • 4
  • 49
  • 66
5

The only two names which I've head in practise are "double dash" for referring to it aesthetically, and "end of options" for referring to it functionally.

Chris Down
  • 122,090
  • 24
  • 265
  • 262