terminologia da linha de comando: quais são essas partes de um comando chamado?

21

Na linha de comando, eu geralmente uso comandos "simples" como

mv foo/bar baz/bar

mas não sei como chamar todas as partes disso:

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

Eu (acho que) sei que 1 é um comando e 2 é um argumento, e eu provavelmente ligaria para 3 um lista de argumentos (está correto?).

No entanto, não sei como chamar 4 .

Como os "comandos" mais complexos são rotulados?

find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2' {} {/}

Eu gostaria de receber uma resposta que descreva o que chamar de 1,2,3,4 e como chamar cada parte de, e. este "comando" acima.

Seria ótimo aprender também sobre outras coisas que são únicas / surpreendentes que eu não incluí aqui.

    
por theonlygusti 14.01.2018 / 02:22

2 respostas

34

Os nomes comuns para cada parte são os seguintes:

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘
  1. Nome do comando (primeira palavra ou token da linha de comando que não é um redirecionamento ou atribuição de variável e depois que aliases foram expandidos).

  2. Token, palavra ou argumento para o comando. Do homem bash:

    word: A sequence of characters considered as a single unit by the shell. Also known as a token.

  3. Geralmente: Argumentos

  4. Linha de comando.

A concatenação de dois comandos simples com | é uma sequência de tubos ou pipeline:

┌─1┐ ┌──────2──────┐ ┌─2─┐ ┌──2──┐   ┌──1───┐ ┌2┐┌2┐┌2┐┌────2─────┐ ┌2┐ ┌2┐
find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2'  {} {/}
│    └────────────3──────────────┘            └────────────3──────────────┘
└───────────────────────────────────4─────────────────────────────────────┘

Lembre-se de que há redirecionamentos e atribuições de variáveis também:

┌──5──┐ ┌1┐ ┌─2─┐ ┌─2─┐   ┌───6──┐ ┌1┐ ┌─5─┐
<infile tee file1 file2 | LC_ALL=C cat >file
└─────────7───────────┘   └───────7────────┘
└─────────────────────4────────────────────┘

Onde (ao lado dos números acima):

  1. redirecionamento.
  2. Atribuição variável.
  3. Comando simples.

Esta não é uma lista exaustiva de todos os elementos que uma linha de comando pode ter. Essa lista é muito complexa para essa resposta curta.

    
por 14.01.2018 / 03:12
15

A resposta do @ isaac acima parece boa.

Eu quero estender isso com algumas fontes.

Eu acho que o padrão POSIX pode, de alguma forma, ser considerado canonical . Outras fontes podem ser man bash e man proc .

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

POSIX sugere que:

  1. É o nome do comando (em vez do comando, embora até mesmo este documento use o comando em locais)
  2. Argumento
  3. Argumentos
  4. Comando (embora man proc use a linha de comando )

Também tem terminologia para muitos comandos mais complicados.

Eu acho que o comando é bastante ambíguo, então talvez o termo nome do comando e a linha de comando sejam bons para o clarity.j

    
por 14.01.2018 / 03:34