Como posso visualizar uma referência ou folha de dicas da sintaxe básica do bash, no terminal linux?

8

Toda vez que eu preciso fazer um pouco de script bash envolvendo instruções if, verificando variáveis ​​vazias e arquivos inexistentes etc. Encontro-me acessando o google por algum manual ou guia simples do bash.

Freqüentemente, essas são muito longas e complicadas para responder rapidamente à pergunta que tenho em mãos.

Então, eu estava pensando que deve haver algum comando ou página de manual que cubra a sintaxe básica do bash (para coisas como instruções if, verifica se há variáveis ​​vazias, arquivos inexistentes etc.) de maneira curta e acessível. Tenho certeza de que não encontrei o comando (o man bash não parece ser esse).

Onde posso encontrar isso?

Samuel Lampa
fonte
2
em que bashvocê pode tentarhelp
mikeserv
github.com/cirosantilli/bash-cheat
Ciro Santilli escreveu:

Respostas:

13
  • man bash é a referência canônica do Bash.
  • help helpfornece ajuda sobre o helpbuilt-in do Bash e como fornece breves mensagens de ajuda sobre outros built-ins do Bash, como help for.
  • A Wiki de Greg é o melhor lugar para encontrar material de referência direto, conciso e às vezes até divertido para praticamente todos os aspectos do Bash.
  • Se você deseja uma maneira rápida de procurar a sintaxe, pode controlar a versão.bash_history . Existem muitos comandos, diferentes sintaxes de parâmetros sede awkruído de linha e outras coisas para lembrar de tudo, então é bom ter uma referência pessoal "bem cuidada" com tags para procurar.
l0b0
fonte
+1 por mencionar help.
Goldilocks
1
Obrigado! Como mencionado na resposta do @ polym, eu obviamente tinha usado os termos de pesquisa incorretos no man bash ("if statement", "[-n" etc) sem sucesso, e por isso pensei que a informação não estava lá. A busca por "expressões condicionais" foi o termo de pesquisa correto.
Samuel Lampa 23/06
2
Eu tenho quantidades iguais de amor e ódio por este momento ... 10 anos ... não sabia que helpestava lá. Tanta man bashleitura desnecessária não é necessária!
Matt
13

Como existem muitas dessas coisas online , aqui está uma sugestão para você; Eu uso isso para todos os tipos de coisas.

Crie um diretório $HOME/notes. Adicione uma subpasta bash,. Se você não tiver um $HOME/bin, crie um, adicione-o ao seu caminho usando o método que você preferir ( por exemplo: in~/.bashrc ). Em seguida, coloque um script simples lá cmdref.sh:

#!/bin/bash

if [ -z "$CMREF_DIR" ]; then
        CMREF_DIR="$HOME/notes"
fi

cat "$CMREF_DIR/${1}/${2}.txt"

Vincule-o por conveniência ln -s ~/bin/cmdref.sh ~/bin/cmdref; Eu gosto de fazer isso para que você possa editar a cmdref.shfonte e um editor ainda reconheça o tipo de arquivo pelo sufixo.

Copie e cole o que quiser em vários arquivos ~/notes/bash- por exemplo, você pode ter um arquivo arrays.txt, loops.txtetc. Desde que seja apenas para seu uso pessoal, você não está violando os direitos autorais.

Agora você pode usar isso na linha de comando, por exemplo: cmdref bash arrayse essa folha de dicas será impressa no console. Observe que, embora os arquivos sejam .txt(novamente, o uso de sufixos apropriados é útil para editores, navegadores de arquivos etc.), você não deve usá- cmdref bash arrays.txtlo, pois ele está anexado cmdref.sh(a única coisa que o script faz é converter caminhos e adicionar o sufixo).

Cachinhos Dourados
fonte
Linda! Ótima idéia, e me ensinou algumas coisas que eu não tinha considerado sobre o quão flexível e personalizável o Linux é.
Mightypile
@goldilocks Eu não entendi o motivo que você mencionou para desvincular o arquivo de script, particularmente "Eu gosto de fazer isso para que você possa editar a fonte cmdref.sh e um editor ainda reconhecerá o tipo de arquivo pelo sufixo". Você pode explicar, por favor? Isso significa que eu posso fazer vi cmdrefe o vim abrirá o "cmdref.sh" e então eu posso editá-lo ou estou perdendo algo óbvio aqui?
4144 Geek
@Geek AFAIK todos os editores usam principalmente o sufixo do arquivo para determinar o realce da sintaxe do tipo de arquivo WRT (fazê-lo de outra maneira seria superficial, na melhor das hipóteses, mas pode ser um substituto para algumas ferramentas, se não reconhecerem o sufixo). Portanto, se você vi ~/bin/cmdref, o vim realmente não sabe que tipo de arquivo é esse, e usará um padrão para destacar (eu acho que é .txt). Mas se você vi ~/bin/cmref.sh, o vim sabe que o arquivo é um script de shell e o realce fará sentido. Mas WRT um comando, você deseja digitar cmdref, não cmdref.sh. É por isso que eu uso o link simbólico.
precisa saber é o seguinte
Como barra lateral para isso: vigeralmente é um link simbólico para vim, e é por isso que você obtém destaque de sintaxe (o "vi" original não tinha esse recurso, eu acho). E: o vim é realmente inteligente o suficiente para reconhecer esse script como um shell script se o arquivo não tiver sufixo, mas o princípio permanecer;) Em raras ocasiões, talvez eu precise / queira usar algo menos inteligente.
Goldilocks
... se você quiser ver a diferença, carregue um .sharquivo no vim e set filetype=txt- eek!
Goldilocks
3

man bashabrange todos os aspectos da sintaxe bash, por exemplo, para if statements, string is zeroe non-existent files, basta procurar (bater a /chave e digite o seguinte) para CONDITIONAL EXPRESSIONS.

polym
fonte
1
Ah, de fato. Meu cérebro deve estar desligado ou faltando, pois eu não inventei esse termo de pesquisa (tentei pesquisar "declarações if", "\ '[-n" etc. sem sucesso). Obrigado!
Samuel Lampa 23/06
1
@SamuelLampa, se você usar a página de manual do bash o suficiente (não é preciso muito), você terá uma ideia de sua estrutura, para poder dizer o que está lá e sobre onde está antes de realmente procurá-la.
David Z