Comandos Bash com espaços neles (git config ou git-config?)

6

Por favor, me perdoe se isso parece fácil, mas eu só comecei a aprender Unix há 2 dias.

Basicamente, aprendi que, ao digitar um comando no terminal, ele precisa estar no formato:

[command name][space][-options][space][arguments]

Agora, comecei a usar o git e me deparei com o seguinte:

git config --global core.editor "notepad.exe -wl1"

Então, neste caso, é git config o comando? Como isso pode funcionar quando há um espaço no meio dele? O unix não ficaria confuso e pensaria que config seria uma opção?

Também para confundir ainda mais as coisas, muitas vezes vejo um comando chamado git-config . Isso é o mesmo que git config ?

Acho realmente confuso que em algo em que a sintaxe precisa seja muito importante, essas coisas não são claramente explicadas.

    
por Lars 20.05.2013 / 00:55

2 respostas

6

É um bom ponto de partida, mas "geralmente" precisa ser enfatizado. Para comandos utilitários, é sempre uma boa ideia ler a man utility página para saber qual é a sintaxe correta.

Existe uma diretriz no The Open Group que pode valer a pena ser lida. No entanto, há nível variável de como as implementações estão em conformidade. Algumas implementações permitem quebrar essa convenção, mas deve-se tentar dar atenção a ela, pois ela é mais segura e geralmente mais portátil (no dia em que você estiver em outro sistema com uma implementação diferente).

Quando você olha para git e algumas outras ferramentas que não fazem parte do pacote de utilitários padrão, é preciso aprender como é feito. O uso de comando não é exclusivo de git , mas também encontrado em outros como pactl / pacmd , amixer etc. Como apontado por @mouviciel Este projeto baseado em comando do git é usado pela maioria das ferramentas SCM, começando com o antigo sccs .

program [options] [command] [arguments]

Aqui, geralmente, options são direcionados para o program em si e arguments para o command .

É uma boa maneira de dividir um subconjunto estendido para um programa principal / suite / tool-kit funcionando dentro de um domínio.

domain -verbose DO_THIS -with_file filename.txt
domain -verbose DO_THAT -with_file filename.txt

Para alguns, também é dada como uma opção curta e por aderir às diretrizes como, por exemplo, fdisk -l <device> Digite vs. fdisk <device> Digite , l Digite .

Quando você executa, e. git config ... não é o shell, mas git que interpretam que config é o comando. O uso de git-config é um modo mais curto de especificar config como um comando git . Experimente, por exemplo %código%. Por si só, geralmente não é reconhecido como um comando.

Para man git-config , isso também é um pouco mais complexo . Como é um kit de ferramentas - > suite, como em muitos, muitos comandos pertencentes a git - é natural usar uma implementação baseada em comandos. Este é um projeto escolhido pelos desenvolvedores do git .

git DO_THIS

Além disso. Como ele contém muitos comandos, eles dividiram os comandos em vários grupos, onde os dois principais são classificados como Encanamento e Porcelana . Veja também: O que significa o termo porcelana no Git? . A página de manual tem um agrupamento ordenado a partir de git .

Além disso, pode-se personalizar, através de arquivos de configuração, o que alguns dos comandos fazem. Como um exemplo. Você pode ver as diferenças entre os commits por GIT COMMANDS . Este comando pode ser personalizado no seu git diff . Você pode especificar qual programa diff usar e como ele deve ser chamado.

Para facilitar a ajuda de vários comandos, também é possível dizer:

git help command

, então .gitconfig , dá-lhe ajuda para o comando git help commit git .

Acho que poderia ajudar se você vir commit como uma suíte de linha de comando ou até mesmo um ambiente de comando baseado em menu. Tal como acontece com uma aplicação gráfica onde pode clicar em git , uma suite comandada por comandos pode ter File->Open->[Some file] .

    
por 20.05.2013 / 04:13
5

git é o comando. Ele "multiplexa" para os vários outros comandos git-* com base no que o primeiro argumento é, por ex. git config ... corre git-config .

    
por 20.05.2013 / 01:04