La shell attribuisce ad alcuni caratteri dei significati speciali che sono utilizzati per fare riferimento facilmente a gruppi di file o directory. Tali caratteri sono detti metacaratteri o caratteri jolly (wildcard)9. In questo modo la shell stessa si accolla l’onere di espandere la riga di comando impartita da tastiera interpretando opportunamente tali caratteri speciali, in modo da passare al comando stesso l’elenco dei parametri ottenuto appunto dall’espansione dei metacaratteri.
I metacaratteri utilizzati da Bash son quelli di seguito riportati:
Se il primo carattere che segue ‘[’ è ‘!’ o ‘^’ allora l’insieme considerato è il complementare di quello indicato (es. !a-d è l’insieme dei caratteri diversi da a, b, c e d).
Poiché la shell può attribuire dei signficati particolari ad alcuni caratteri, essa provvede anche un meccanismo (quoting) che permette di utilizzare tali caratteri col loro significato letterale, senza che vengano interpretati in modo particolare dalla shell stessa. Ciò, in genere, avviene per mezzo di due tecniche possibili:
Bash utilizza il simbolo ‘\’ come carattere di escape. Esso annulla il significato speciale del carattere che lo segue ad eccezione del carattere ASCII CR, nel qual caso vien considerato come carattere che indica la continuazione del comando sulla riga successiva (ovvero tale sequenza di caratteri viene completamente ignorata).
Bash utilizza due tipi di delimitatori: ‘'’ (single quotes) e ‘"’ (double quotes).
Una sequenza di caratteri racchiusa tra single quotes ha il significato letterale dei caratteri in essa contenuti. Si tenga presente comunque che il carattere ‘'’ non può essere contenuto all’interno di single quotes (neache se preceduto dal carattere dal carattere di escape ‘\’).
Una sequenza di caratteri racchiusa tra double quotes ha il significato letterale dei caratteri in essa contenuti fatta eccezione per i caratteri ‘$’, ‘`’ e ‘\’. Il simbolo ‘\’ preserva il suo particolare significato se precede i caratteri ‘$’, ‘`’, ‘"’, ‘\’ o CR.
Il carattere ‘"’ può essere visualizzato all’interno di una sequenza racchiusa tra double quotes con la sequenza ‘\"’;
Dal momento che venono utilizzati dei simboli per rappresentare i delimitatori ed il carattere di escape, è necessario utilizzare anche un altro simbolo per annullare il loro effetto, in modo da poter utilizzare tali simboli (delimitatori ed il carattere di escape) col loro valore letterale all’interno della riga di comando.
La shell interpreta in modo particolare anche altri simboli che assumono il significato riportato di seguito: