Por que a "lista de entrada de dados" funciona como "xinput --list"?

1

man xinput descreve várias opções usadas com xinput . Uma opção é esta:

--list [--short || --long || --name-only || --id-only] [device]

Mas posso executar xinput --list ou xinput list e ambos fornecem a mesma saída:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ PixArt USB Optical Mouse                  id=10   [slave  pointer  (2)]
⎜   ↳ PS/2 Mouse                                id=12   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS GlidePoint                  id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Integrated_Webcam_1.3M                    id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=14   [slave  keyboard (3)]

Por que -- não é necessário antes da opção list ?

(Meu sistema operacional é Lubuntu 13.10.)

    
por a CVn 16.12.2013 / 13:03

2 respostas

4

Porque é assim que os desenvolvedores queriam.

- e - são convenções para argumentos opcionais.

nenhum traço é normalmente destinado a operações.

Neste caso --list é uma operação (comando think sub) e um argumento opcional.

Veja Estes documentos , mas perceba que os criadores de código podem implementar o que desejam. A verdade é que, embora seja tecnicamente correto, a lista e a lista provavelmente foram implementadas dessa forma, para que fosse mais fácil de usar.

    
por 16.12.2013 / 13:53
1

A mudança é totalmente do desenvolvedor do aplicativo, de como eles gostariam de implementá-lo. Mas muitas vezes eles são limitados por outras coisas fora de seu controle, como decidir usar uma biblioteca / ferramenta que os ajudará a analisar o argumento da linha de comando do seu comando.

Por exemplo, ao desenvolver um script Bash, 2 tais ferramentas / bibliotecas que facilitam isso são getopt e getopts . Este artigo faz um bom trabalho ao mostrar algumas das diferenças, intitulado: Bash getopt versus getopts .

O uso dessas bibliotecas muitas vezes força, de uma maneira boa, o desenvolvedor a implementar a comutação usando sem traços (ou seja, list ), um único traço (por exemplo, ( -l ou -list )). ou como um traço duplo, ( --list ).

Linguagens de nível superior, como Perl, Python, Ruby, C / C ++, também podem ter esses tipos de bibliotecas para escolher. Isso foi apenas para explicar por que xinput pode fazer isso.

    
por 16.12.2013 / 14:20

Tags