Nie ma powszechnego standardu. Istnieje pewna spójność, np. W programach GNU, ale musisz sprawdzić dokumentację każdego programu.
Cytując Wikipedię , moje podkreślenie:
W systemach uniksopodobnych do określania opcji powszechnie stosuje się łącznik minus ASCII. Po znaku zwykle występuje jedna lub więcej liter . Argument, który jest pojedynczym łącznikiem minus sam w sobie bez liter, zwykle określa, że program powinien obsługiwać dane pochodzące ze standardowego wejścia lub wysyłać dane na standardowe wyjście. W niektórych programach używane są dwa znaki łącznika minus (-) w celu określenia „długich opcji”, w których używane są bardziej opisowe nazwy opcji . Jest to wspólna cecha oprogramowania GNU.
Zazwyczaj łączniki wskazują predefiniowany argument. Myślę, że służy do odróżnienia ich od np. Nazw plików lub innych etykiet, których możesz użyć jako argumentów. Jednak nie zawsze tak jest (patrz poniżej).
Często ten sam argument jest dostępny zarówno jako opcja krótka, jak i długa, jak np. W ls .
Niektóre programy używają jednego łącznika dla opcji jednoznakowych i dwóch łączników dla opcji wieloznakowych, ale nie wszystkie ( find
przychodzi na myśl GNU ). Niektóre programy mają opcjonalne łączniki lub całkowicie je pomijają ( tar
lub ps
przychodzi na myśl BSD ).
Czasami długie opcje ( --foo
) wymagają argumentów, podczas gdy krótkie opcje ( -f
) nie (lub przynajmniej sugerują określony domyślny argument).
Krótkie opcje (np. cut -d ' '
) Mogą mieć argumenty, podczas gdy długie opcje (np. ls --all
) Niekoniecznie je mają.
Aby ustawić określone zachowanie programu, czasami trzeba użyć krótkiej opcji, dla innych trzeba użyć długiej opcji, a dla niektórych masz wybór.
W pokrewnej uwadze niektóre programy nie potrafią obsłużyć spacji między opcją a jej argumentem , podczas gdy inne nie.
Jak napisałem na początku, po prostu nie ma wspólnego zachowania ani standardu. Często można prześledzić podobne zachowanie do tej samej biblioteki używanej do analizy argumentów, ale prawdopodobnie nie chcesz czytać źródeł, aby się tego dowiedzieć.
Naprawdę nie można wywnioskować składni argumentów jednego programu z innej.
Jeśli weźmiesz również pod uwagę Windows, staje się jeszcze gorzej: podczas gdy wywołania wiersza poleceń Windows tradycyjnie używają /f
(przynajmniej przez większość czasu, pojedynczych znaków) dla opcji, :
jako separator między opcjami a ich wartością (patrz np. Tutaj ); narzędzia wieloplatformowe są szeroko rozpowszechnione (takie jak te, o których wspominasz) i przynoszą bardziej powszechną składnię łączników dla argumentów, ze wszystkimi niespójnościami wymienionymi powyżej.
-i
Vs.--input
lub-n
--dry-run
.