Neexistuje žádný rozšířený standard. Je tam určitá konzistence, např. v programech GNU, ale musíte zkontrolovat dokumentaci každého programu.
Cituji Wikipedii, zdůrazněte můj:
V systémech podobných Unixu se aSCII pomlčka–minus běžně používá k určení možností. Za znakem obvykle následuje jedno nebo více písmen . Argument, který je sám o sobě jedinou pomlčkou – mínus bez jakýchkoli písmen, obvykle určuje, že program by měl zpracovávat data přicházející ze standardního vstupu nebo odesílat data na standardní výstup. Dva pomlčky – mínus ( -- ) se v některých programech používají k určení „dlouhých možností“, kde se používají popisnější názvy možností . Toto je běžná vlastnost softwaru GNU.
Pomlčky obvykle označují předdefinovaný argument. Myslím, že se používá k jejich odlišení např. názvy souborů nebo jiné štítky, které můžete použít jako argumenty. To však není vždy případ (viz níže).
Často najdete stejný argument jako short i long option, jako např. v ls.
Některé programy používají jednu pomlčku pro jednoznakové možnosti a dvě pomlčky pro víceznakové možnosti, ale ne všechny (GNU find
přijde na mysl). Některé programy mají volitelné pomlčky nebo je úplně přeskakují (tar
nebo BSD ps
mě napadá).
Někdy dlouhé možnosti (--foo
) vyžadují argumenty, zatímco krátké možnosti (-f
) ne (nebo alespoň naznačují konkrétní výchozí argument).
Krátké možnosti (např. cut -d ' '
) může mít argumenty , zatímco dlouhé možnosti (např. ls --all
) nemusí nutně mít.
Chcete-li nastavit konkrétní chování programu, musíte někdy použít krátkou volbu, pro jiné musíte použít dlouhou volbu a u některých máte na výběr.
Související poznámka:některé programy nedokážou zpracovat žádné mezery mezi možností a jejím argumentem, zatímco jiné ne.
Jak jsem psal na začátku, prostě neexistuje žádné běžné chování nebo standard. Často můžete vysledovat podobné chování ve stejné knihovně používané pro analýzu argumentů, ale pravděpodobně nebudete chtít číst zdroje, abyste to zjistili.
Opravdu nemůžete odvodit syntaxi argumentů jednoho programu ze syntaxe jiného.
Pokud vezmete v úvahu také Windows, bude to ještě horší:Zatímco volání příkazového řádku Windows tradičně používají /f
(alespoň většinou jednotlivé znaky) pro volby s :
jako oddělovač mezi opcemi a jejich hodnotou (viz např. zde); multiplatformní nástroje jsou rozšířené (jako ty, které zmiňujete) a přinášejí běžnější syntaxi spojovníku pro argumenty se všemi výše zmíněnými nekonzistencemi.
Stačí udělat ls --help
a podívejte se na možnosti; mělo by vám to být jasné.
Nemá to vůbec nic společného s parametry. Mnoho možností má krátký a dlouhý tvar a mnohé mají jeden a ne druhý.
A co se týče parametrů, je to prostě tak, že v dlouhém tvaru, když berou parametr, vypadá to, že je to vždy stejné. Ale očividně krátké mohou mít parametry stejně hodně; jen nepoužívají rovná se.
Zde je výňatek z ls --help
(man ls
poskytuje ekvivalentní informace). Všimněte si, že některé mají dlouhý tvar bez krátkého tvaru (--author
, --block-size
), některé mají krátký tvar bez dlouhého tvaru (-c
, -f
, -g
) a některé mají jak dlouhý, tak krátký tvar (-A
/--almost-all
, -b
/--escape
).
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print octal escapes for nongraphic characters
--block-size=SIZE use SIZE-byte blocks
-B, --ignore-backups do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last
modification of file status information)
with -l: show ctime and sort by name
otherwise: sort by ctime
-C list entries by columns
--color[=WHEN] control whether color is used to distinguish file
types. WHEN may be `never', `always', or `auto'
Toto je konvence pocházející z *nix. Pokud jsou možnosti úplné, předchází se dvojitá pomlčka , , zatímco jedna pomlčka předchází možnosti, pokud jsou napsány ve zkrácené podobě . Například ls --all --l
, lze zkrátit na ls -al
. Jak je vidět, ne všechny možnosti mají své jednopísmenné ekvivalenty, ačkoli více používané obvykle mají.
To, zda opce převezme argument, ve skutečnosti nehraje roli – buď je může vzít, nebo ne, bez ohledu na způsob zadání opce.
Při jejich zápisu pro jednorázové použití je to celkem jedno, ale při psaní příkazů např. do .alias souborů je zvykem používat plnou formu. Čistě pro usnadnění čtení pro další osobu.