O "padrão" é dado pela gramática do shell. Em casos simples, é um comando (ou melhor, um utilitário ), seguido por argumentos . Os argumentos podem ser opções , e as opções podem ter argumentos da opção . Após as opções, pode haver outros operandos .
Exemplo:
ls -l dir
ls
é o comando, -l
é uma opção (sem argumento de opção) e dir
é um operando. Sabemos que dir
não é um argumento de opção para a opção -l
, pois lemos o manual ls
no qual a seção de sinopses descreve a sequência de chamada do utilitário.
Exemplo:
git commit -p
git
é o comando e, como não há opções imediatamente após o nome do comando, o restante é tratado como operandos. Cabe ao comando git
interpretar isso. Você pode querer chamar o operando commit
de um "subcomando" se desejar e -p
uma "opção" para este subcomando.
Exemplo:
cc -o code.o -Wall code.c
Aqui, cc
é o comando e as opções -o
e -Wall
são opções. A opção -o
usa code.o
como um argumento de opção. Dependendo do comando cc
, a opção -Wall
pode, de fato, ser analisada como -W all
, ou seja, como uma opção com um argumento de opção (as opções de uma letra não exigem espaço antes de seus argumentos de opção). code.c
é um operando como ocorre depois de todas as opções.
As palavras "argumento", "opção" e "argumento de opção" são aquelas usadas por Padrão POSIX . O padrão usa a palavra "utility" em vez de "command" como um comando pode ser simples, uma lista, composto, pipeline etc. Por exemplo, ls -l dir
é um (simples) comando usando o utilitário ls
e { head -n 20 | tail -n 5; } >file
é um comando composto contendo um pipeline e dois comandos simples.
Indiscutivelmente, todas as invocações de utilitários são "ações". Dizer killall myprog
significa "iniciar o utilitário killall
com o operando myprog
". O efeito disso será que a utilidade, neste caso, envia um sinal para um processo.
Da mesma forma, service restart nginx
é a ação de invocar o utilitário service
com restart
e nginx
como os dois operandos. O efeito disso será que o serviço nginx
seja reiniciado.
Da mesma forma, nano somedoc
é a ação de invocar o editor nano
, etc. etc.