I'm new to working in the shell and the usage of these commands seems arbitrary. Is there a reason one flag has a single dash and another might have a double dash?
A single hyphen can be followed by multiple single-character flags. A double hyphen prefixes a single, multicharacter option.
Consider this example:
In this example,
-czf specifies three single-character flags:
Now consider another example:
In this case,
--exclude specifies a single, multicharacter option named
exclude. The double hyphen disambiguates the command-line argument, ensuring that
tar interprets it as
exclude rather than a combination of
It all depends on the program. Usually "-" is used for 'short' options (one-letter, -h), and "--" is used for "long"(er) options (--help).
Short options can usually be combined (so "-h -a" is same as "-ha")
In Unix-like systems, the ASCII hyphen–minus is commonly used to specify options. The character is usually followed by one or more letters. An argument that is a single hyphen–minus by itself without any letters usually specifies that a program should handle data coming from the standard input or send data to the standard output. Two hyphen–minus characters ( -- ) are used on some programs to specify "long options" where more descriptive option names are used. This is a common feature of GNU software.
It's really a convention. However, it can aid parsers to know more efficiently about options passed to the program.
Besides, there are neat utilities that can help parsing these commands, such as
getopt(3) or the non-standard
getopt_long(3) to help parse the arguments of a program.
It is nice, for we can have multiple short options combined, as other answers say, like
tar -xzf myfile.tar.gz.
If there was a "lisa" argument for
ls, there would probably have a different meaning to type
ls -lisa than
ls --lisa. The former are the
a parameters, not the word.
In fact, you could write
ls -l -i -s -a, meaning exactly the same as
ls -lisa, but that would depend on the program.
There are also programs that don't obey this convention. Most notably for my sight,