xclip
usa a biblioteca X Toolkit, que faz a análise de opções. Todas as opções podem ser abreviadas. A biblioteca só apresenta um erro se houver uma ambiguidade.
Opções, é claro, são coisas como -select
, que pode ser abreviado como -sel
(possivelmente até -s
).
xterm
usa a mesma biblioteca, o mesmo comportamento. Ele usa casos especiais (fora da biblioteca) para tornar o comando -v
uma abreviação exclusiva para -version
, etc.
O X Toolkit usa um único traço -
para opções e não distingue entre "curto" e "longo" porque não é uma extensão de getopt
. Como eu apontei em Único traço -
para opções de caractere único, mas traços duplos --
para palavras? , foi introduzido mais ou menos na mesma época que o GNU getopt, que fez estender getopt
. Isso foi antes do POSIX aparecer, mas AT&T
getopt
teve vários anos de uso, estabelecendo sua função para opções de caracteres únicos. O GNU getopt
usa um traço duplo--
para indicar opções longas .
Observando uma longa digressão, você pode ler o código-fonte para o GNU getopt (que não está relacionado com xclip
) do seu repositório git , por exemplo,
369 Long-named options begin with '--' instead of '-'.
370 Their names may be abbreviated as long as the abbreviation is unique
371 or is an exact match for some defined option. If they have an
372 argument, it follows the option name in the same ARGV-element, separated
373 from the option name by a '=', or else the in next ARGV-element.
374 When 'getopt' finds a long-named option, it returns 0 if that option's
375 'flag' field is nonzero, the value of the option's 'val' field
376 if the 'flag' field is zero.