EDYCJA: Wskazano, że ten styl jest GNU-izmem i że Uniksy oparte na GNU zwykle używają składni pojedynczego myślnika (w szczególności wariantów OS X i BSD).
Pomimo statusu GNU-ism, wiele nowo napisanych programów w stylu uniksowym używa tego stylu:
--long-option
dla długich nazw opcji,
-s
dla krótkich (jednoznakowych) opcji,
-abc
dla wielu krótkich opcji bez argumentów (jeden znak na opcję).
- Opcje z argumentami:
--long arg
lub --long=arg
dla długich opcji,
-s arg
, -sarg
I (opcjonalnie) -s=arg
do krótkich opcji. Można to połączyć z innymi krótkimi opcjami, o ile tylko ostatnia ma argument.
- Ta sama opcja „semantyczna” może mieć kilka aliasów, najczęściej krótką (szybszą do pisania) i długą (łatwiejszą do zapamiętania).
Każdy, kto używał powłoki Linuksa przez dłuższy czas, powinien znać ten styl 1 , więc ma on zasadę najmniejszego zaskoczenia po swojej stronie. Przyjemne jest również grupowanie wielu krótkich opcji bez dwuznaczności przy długich opcjach.
1 Na przykład, niektóre z programów wykorzystujących ten styl (na moim komputerze Linux): ls
, grep
, man
, sed
, bash
, itd. ( EDIT: są to widocznie gnu-izmy choć maszyny BSD i OS X nie używają tego stylu)
Istnieje kilka bibliotek, które mogą zająć parsowania to dla ciebie (najbardziej znany jest realizacja GNU z getopt ), tylko potrzebuje was, aby określić co długie i krótkie opcje istnieją, czy biorą argument, i co zrobić, gdy opcja jest znaleziona. (I, oczywiście, co zrobić z argumentami pozycyjnymi, tj. Takimi, które nie zaczynają się od -
i nie są argumentami dla poprzednich opcji)
find
to bardzo stary program (a może bardziej prawdopodobne: przerobiona wersja bardzo starego programu), którego nie można łatwo zmienić w celu użycia nowej składni wiersza poleceń. Zepsuje się zbyt wiele skryptów, a zbyt wielu użytkowników przyzwyczajonych do starej składni narzeka. javac
był prawdopodobnie pod wpływem gcc
przyjaciół i znajomych, którzy również stosują starą składnię z powodów historycznych.