Especificação geral para interface de linha de comando

3
  1. Eu queria saber onde posso encontrar e aprender alguma idéia geral sobre o interface de linha de comando usada no Linux e bash?
  2. Por enquanto, encontrei pedaços de essas informações apenas de experiência, como

    1. Para gato, sem mais argumentos, aceita entrada de stdin. Mas você pode especificar explicitamente STDIN usando o nome especial - e ambos maneiras são equivalentes. cat também pode aceite um nome de arquivo como cat filename . Então, é - significa preencher um argumento suposto para o nome do arquivo? É esse uso de - também é comum para outros comandos?
    2. Em chardet <<<somestring , <<< significa que uma string é usada como stdin, o mesmo que echo somestring | chardet . Esse uso de <<< também é comum?
    3. Em cut -c 1-3,20,25- employees , é o caminho 1-3,20,25- para especificar um intervalo de números para um argumento também é comum em outros comandos?
  3. Por último, mas não menos importante, são esses idéias gerais comuns a apenas dentro bash, ou dentro do Linux e Unix, ou dentro do software usando getopt como analisador de linha de comando?
por Tim 09.07.2011 / 18:17

3 respostas

11

Eu recomendo ler um livro sobre shell Unix ou Linux e uso de linha de comando, a fim de aprender o uso básico e ter uma idéia de alguns recursos avançados. Então você pode recorrer à documentação de referência.

O uso de comandos específicos é descrito em seu manual. man cat mostrará o manual do comando cat em seu sistema. Páginas de manual geralmente são referências, não tutoriais, embora geralmente contenham exemplos. No Linux, cat --help mostra uma mensagem de uso concisa (destinada a leitura rápida quando você já conhece os fundamentos e deseja encontrar uma opção para uma tarefa específica).

O padrão POSIX especifica um conjunto mínimo de comandos, opções e recursos de shell que todo sistema unix deve suportar. A maioria dos sistemas atuais suporta em grande parte POSIX: 2004 (também conhecido como Single UNIX versão 3 e o problema de especificações de base de grupo aberto 6). O software GNU (os utilitários encontrados no Linux) muitas vezes têm muitas extensões para este conjunto mínimo.

Existem convenções comuns para argumentos de linha de comando. POSIX especifica convenções de utilitários que a maioria dos utilitários segue, em particular:

  • As opções consistem em - seguido por uma única letra; -ab é uma abreviação de -a -b .
  • -- significa o final das opções. Por exemplo, em rm -- -a , -a não é uma opção, mas um operando, ou seja, um arquivo para atuar, portanto, esses comandos removem o arquivo chamado -a .
  • Um - representa entrada padrão, em que um arquivo de entrada é esperado. Significa saída padrão onde um arquivo de saída é esperado.

Os utilitários GNU e outros também suportam "opções longas" do formulário --name . Alguns utilitários vão contra a convenção geral e aceitam opções de várias letras com um único traço principal: -name .

Redirecionamento é um recurso de shell, então você vai encontrá-lo no manual do seu shell. <<< para usar uma string como entrada padrão é uma extensão ksh, também suportada por bash e zsh. Contanto que o shell suporte, ele pode ser usado em qualquer comando.

    
por 09.07.2011 / 18:40
6

Eu gostaria de sugerir uma olhada no Unix in a Nutshell do O'rielly ou simplesmente pesquisar um tutorial sobre o bash.

Bash é também conhecido como Bourne Again SHell.

Os outros shells eram SH, CSH e KSH, se bem me lembro. CSH é baseado em C.

Eu também recomendo aprender C e Perl ou Python, eles ajudam a acelerar substancialmente as coisas.

    
por 09.07.2011 / 18:43
2

So is - meant to fill in an argument supposed for filename?

Sim.

Is this usage of - also common for other commands?

Eu não tenho certeza se existe algum padrão para isso, mas algumas ferramentas GNU (exemplo: tar) usam - para este propósito.

In cut -c 1-3,20,25- employees, is the way 1-3,20,25- to specify a range of numbers for an argument also common in other commands?

Parece ser natural. Eu tenho certeza que você pode usar isso na maioria das ferramentas GNU - eles estão seguindo as mesmas convenções, mas eu checo o manual para qualquer ferramenta que não seja GNU.

    
por 09.07.2011 / 20:32