Comment puis-je afficher une référence ou une feuille de triche de la syntaxe bash basique, dans le terminal Linux?

8

Chaque fois que je dois faire un petit script bash impliquant des instructions if, en vérifiant les variables vides et les fichiers inexistants, etc. Je me retrouve à frapper google pour un manuel ou un guide bash simple.

Souvent, elles sont beaucoup trop longues et compliquées pour répondre rapidement à la question que j'ai sous la main.

Donc, je pensais qu'il devait y avoir une commande ou une page de manuel qui couvre la syntaxe bash basique (pour des choses comme les instructions if, vérifie les variables vides, les fichiers inexistants, etc.) de manière courte et accessible. Je suis sûr que je n'ai pas découvert la commande (man bash ne semble pas l'être).

Où puis-je trouver ça?

Samuel Lampa
la source
2
en bashvous pouvez essayerhelp
mikeserv
github.com/cirosantilli/bash-cheat
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Réponses:

13
  • man bash est la référence canonique Bash.
  • help helpvous donne de l'aide sur le helpBash intégré, et comment il vous donne de courts messages d'aide sur les autres Bash intégrés, tels que help for.
  • Le wiki de Greg est le meilleur endroit pour trouver du matériel de référence pertinent, concis et parfois même divertissant pour à peu près tous les aspects de Bash.
  • Si vous voulez un moyen rapide de rechercher la syntaxe, vous pouvez contrôler la version.bash_history . Il y a trop de commandes, différentes syntaxes de paramètres, sedet le awkbruit de ligne et d' autres choses à se rappeler jamais tout cela, il est agréable d'avoir une référence personnelle « bien soigné » avec des balises pour consulter.
l0b0
la source
+1 pour mentionner help.
goldilocks
1
Merci! Comme mentionné dans la réponse de @ polym, j'avais manifestement utilisé les mauvais termes de recherche dans man bash ("if déclarations", "[-n" etc) en vain, et j'ai donc pensé que les informations n'étaient pas là. La recherche d '"expressions conditionnelles" était le bon terme de recherche.
Samuel Lampa
2
J'ai autant d'amour et de haine pour ce moment ... 10 ans ... je ne savais pas helpqu'il était là. Tant de man bashlecture inutile inutile !
Matt
13

Puisqu'il y en a beaucoup en ligne , voici une suggestion pour vous; Je l'utilise pour toutes sortes de choses.

Créez un répertoire $HOME/notes. Ajouter un sous - dossier, bash. Si vous n'en avez pas $HOME/bin, créez-en un, ajoutez-le à votre chemin d'accès en utilisant la méthode que vous préférez ( par exemple: dans~/.bashrc ). Ensuite, mettez un script simple là-dedans cmdref.sh,:

#!/bin/bash

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

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

Un lien symbolique pour la commodité, ln -s ~/bin/cmdref.sh ~/bin/cmdref; J'aime le faire pour que vous puissiez éditer la cmdref.shsource et un éditeur reconnaîtra toujours le type de fichier par le suffixe.

Copiez-collez ce que ~/notes/bashvous voulez dans divers fichiers - par exemple, vous pourriez avoir un fichier arrays.txt, loops.txtetc. Tant que cela est juste pour votre usage personnel, vous ne violez pas le droit d'auteur.

Vous pouvez maintenant l'utiliser à partir de la ligne de commande, par exemple: cmdref bash arrayset cette feuille de triche sera imprimée sur la console. Notez bien que les fichiers sont .txt(encore une fois, l'utilisation de suffixes appropriés est utile pour les éditeurs, les navigateurs de fichiers, etc.), vous ne devez pas l'utiliser cmdref bash arrays.txtcar il est ajouté cmdref.sh(la seule chose que le script fait est de convertir les chemins et d'ajouter le suffixe).

boucle d'or
la source
Magnifique! Excellente idée et m'a appris quelques choses que je n'avais pas envisagées sur la flexibilité et la personnalisation de Linux.
mightypile
@goldilocks Je n'ai pas compris la raison pour laquelle vous avez mentionné la liaison symbolique du fichier de script, en particulier "J'aime le faire pour que vous puissiez modifier la source cmdref.sh et un éditeur reconnaîtra toujours le type de fichier par le suffixe." Pouvez-vous s'il vous plaît expliquer? Est-ce que cela signifie que je peux le faire vi cmdrefet que vim ouvrira le "cmdref.sh" et ensuite je pourrai le modifier ou est-ce que je manque quelque chose d'évident ici?
Geek
@Geek AFAIK tous les éditeurs utilisent principalement le suffixe de fichier pour déterminer la coloration syntaxique WRT du type de fichier (le faire d'une autre manière serait au mieux sommaire, mais pourrait être un remède pour certains outils s'ils ne reconnaissent pas le suffixe). Donc, si vous vi ~/bin/cmdref, vim ne sait pas vraiment de quel type de fichier il s'agit, et utilisera une valeur par défaut pour la mise en évidence (je pense que oui .txt). Mais si vous vi ~/bin/cmref.sh, vim sait que le fichier est un script shell et que la mise en évidence aura un sens. Mais WRT une commande, vous voulez taper cmdref, non cmdref.sh. C'est pourquoi j'utilise le lien symbolique.
goldilocks
En tant que barre latérale à cela: viest lui-même généralement un lien symbolique vers vim, c'est pourquoi vous obtenez une coloration syntaxique du tout (le "vi" d'origine n'avait pas une telle fonctionnalité, je pense). Et: vim est en fait assez intelligent pour reconnaître ce script comme un script shell si le fichier n'a pas de suffixe, mais le principe est valable;) En de rares occasions, j'ai peut-être besoin / envie d'utiliser quelque chose de moins intelligent.
goldilocks
... si vous voulez voir la différence, chargez un .shfichier dans vim et set filetype=txt- eek!
goldilocks
3

man bashcouvre tous les aspects de la syntaxe bash, par exemple pour if statements, string is zeroet non-existent files, il suffit de rechercher (appuyez sur la /touche et entrez ce qui suit) pour CONDITIONAL EXPRESSIONS.

polym
la source
1
Ah, en effet. Mon cerveau doit être éteint, ou être en manque car je n'ai pas trouvé ce terme de recherche (j'ai essayé de rechercher les "instructions if", "\ '[-n" etc. en vain). Merci!
Samuel Lampa
1
@SamuelLampa si vous utilisez suffisamment la page de manuel bash (cela ne prend pas beaucoup), vous aurez une idée de sa structure, afin que vous puissiez dire ce qu'il y a dedans et où il se trouve avant de le rechercher.
David Z