Come posso visualizzare un riferimento o un cheat sheet della sintassi bash di base nel terminale Linux?


8

Ogni volta che devo fare un po 'di script bash che coinvolge istruzioni if, controllo di variabili vuote e file inesistenti ecc. Mi ritrovo a colpire google per qualche semplice manuale o guida bash.

Spesso questi sono troppo lunghi e complicati per rispondere rapidamente alla domanda che ho a portata di mano.

Quindi, stavo pensando che ci deve essere un comando o una pagina man che copra la sintassi bash di base (per cose come istruzioni if, controlli di variabili vuote, file inesistenti ecc.) In un modo breve e accessibile. Sono sicuro di non aver appena scoperto il comando (man bash non sembra esserlo).

Dove posso trovarlo?


2
in bashte puoi provarehelp
mikeserv il

Risposte:


13
  • man bash è il riferimento canonico di Bash.
  • help helpti dà aiuto sul helpbuilt-in di Bash e come ti dà brevi messaggi di aiuto su altri built-in di Bash, come help for.
  • Greg's Wiki è il posto migliore per trovare materiale di riferimento puntuale, conciso e talvolta persino divertente per praticamente ogni aspetto di Bash.
  • Se si desidera un modo rapido per cercare la sintassi, è possibile controllare la versione.bash_history . Ci sono semplicemente troppo molti comandi, differenti sintassi dei parametri, sede awkrumori di linea e altre cose da ricordare sempre tutto, quindi è bello avere un "curato" di riferimento personale con i tag per cercare in.

+1 per la menzione help.
Riccioli d'oro,

1
Grazie! Come menzionato nella risposta di @ polym, avevo ovviamente usato i termini di ricerca sbagliati in man bash ("istruzioni if", "[-n" ecc.) Senza alcun risultato, e quindi ho pensato che le informazioni non fossero lì. Cercare "espressioni condizionali" era il termine di ricerca giusto lì.
Samuel Lampa,

2
Ho uguale quantità di amore e odio per questo momento ... 10 anni ... non sapevo che helpci fosse. Tanta man bashlettura inutile non richiesta!
Matt,

13

Dal momento che ci sono molte cose del genere online , ecco un suggerimento per te; Lo uso per ogni genere di cose.

Crea una directory $HOME/notes. Aggiungere una sottocartella, bash. Se non ne hai uno $HOME/bin, creane uno, aggiungilo al tuo percorso usando il metodo che preferisci ( ad esempio: in~/.bashrc ). Quindi inserisci un semplice script cmdref.sh:

#!/bin/bash

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

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

Symlink per comodità ln -s ~/bin/cmdref.sh ~/bin/cmdref,; Mi piace farlo in modo da poter modificare la cmdref.shfonte e un editor riconoscerà ancora il tipo di file dal suffisso.

Copia incolla qualunque cosa in vari file in ~/notes/bash- ad esempio, potresti avere un file arrays.txt, loops.txtecc. Fintanto che questo è solo per uso personale, non stai violando il copyright.

Ora puoi usarlo dalla riga di comando, ad esempio: cmdref bash arrayse quel foglietto verrà stampato sulla console. Nota anche se i file sono .txt(di nuovo, usare suffissi appropriati è utile per editor, browser di file, ecc.) Che non dovresti usare cmdref bash arrays.txtpoiché è stato aggiunto cmdref.sh(l'unica cosa che lo script fa è convertire i percorsi e aggiungere il suffisso).


Bellissima! Ottima idea, e mi ha insegnato alcune cose che non avevo considerato su quanto sia flessibile e personalizzabile Linux.
mightypile,

@goldilocks Non ho capito il motivo che hai citato per il collegamento simbolico del file di script, in particolare "Mi piace farlo in modo da poter modificare il sorgente cmdref.sh e un editor riconoscerà ancora il tipo di file dal suffisso." Puoi spiegare per favore? vi cmdrefCiò significa che posso fare e vim aprirà il "cmdref.sh" e quindi posso modificarlo o mi sto perdendo qualcosa di ovvio qui?
Geek,

@Geek AFAIK tutti gli editor utilizzano principalmente il suffisso del file per determinare l'evidenziazione della sintassi del tipo di file WRT (farlo in qualche altro modo sarebbe alquanto abbozzato, ma potrebbe essere un fallback per alcuni strumenti se non riconoscono il suffisso). Quindi, se tu vi ~/bin/cmdref, vim non sa davvero che tipo di file sia, e utilizzerà un valore predefinito per l'evidenziazione (penso che lo sia .txt). Ma se tu vi ~/bin/cmref.sh, vim sa che il file è uno script di shell e l'evidenziazione avrà senso. Ma WRT un comando, si desidera digitare cmdref, non è cmdref.sh. Ecco perché uso il link simbolico.
Riccioli d'oro

Come barra laterale di questo: di visolito è un link simbolico a vim, motivo per cui si ottiene l'evidenziazione della sintassi (l'originale "vi" non aveva una tale funzione, penso). E: vim in realtà è abbastanza intelligente da riconoscere quello script come script di shell se il file non ha suffisso, ma il principio è valido;) In rare occasioni forse ho bisogno / voglio usare qualcosa di meno intelligente.
Riccioli d'oro

... se vuoi vedere la differenza, carica un .shfile in vim e set filetype=txt- eek!
Riccioli d'oro

3

man bashcopre tutti gli aspetti della sintassi di bash, ad esempio per if statements, string is zeroe non-existent files, basta cercare (premere il /tasto e inserire il seguente) per CONDITIONAL EXPRESSIONS.


1
Ah, davvero. Il mio cervello deve essere spento o essere in mancanza perché non ho trovato quel termine di ricerca (ho provato a cercare "if statement", "\ '[-n" ecc. Senza alcun risultato). Grazie!
Samuel Lampa,

1
@SamuelLampa se usi abbastanza la pagina man di bash (non ci vuole molto) avrai un'idea della sua struttura, così puoi dire cosa c'è dentro e su dove si trova prima di cercarla.
David Z,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.