tl; dr : per citare un carattere speciale o evitarlo con una barra rovesciata \
o racchiuderlo tra " "
virgolette doppie o singole ' '
. Tab ↹Il completamento si occupa della corretta quotazione.
Quello che stai chiedendo si chiama Citando :
La citazione viene utilizzata per rimuovere il significato speciale di determinati caratteri o parole dalla shell. (...) Esistono tre meccanismi di quotazione: il carattere di escape , virgolette singole e virgolette doppie .
[citazioni tratte da man bash
]
Citando con il carattere di fuga \
Una barra rovesciata non quotata ( \
) è il carattere di escape. Conserva il valore letterale del personaggio successivo che segue, ad eccezione di <newline>
.
Quindi, per inserire una directory o un file con un carattere speciale, sfuggire a quest'ultimo con \
, ad esempio:
cd space\ dir # change into directory called “space dir”
cat space\ file # print the content of file “space file”
echo content > \\ # print “content” into file “\”
cat \( # print the content of file “(”
ls -l \? # list file “?”
bash
Il Completamento programmabile (noto anche come Tab ↹Completamento) sfugge automaticamente ai caratteri speciali con il carattere di escape \
.
Citando con virgolette doppie " "
Racchiudere caratteri tra virgolette conserva il valore letterale di tutti i caratteri all'interno delle virgolette, ad eccezione di $
, `
, \
e, quando l'espansione della cronologia è abilitata, !
.
Quindi, per inserire una directory o un file con un carattere speciale, evita almeno quest'ultimo o una parte maggiore del tuo nome file o percorso con virgolette doppie, ad esempio:
cd space" "dir # change into directory called “space dir”
cd spac"e di"r # equally
cd "space dir" # equally
cat "space file" # print the content of file “space file”
cat "(" # print the content of file “(”
ls -l "?" # list file “?”
Come $
, `
e !
mantengono il loro significato speciale tra virgolette doppie, Espansione parametri , Sostituzione comandi , Espansione aritmetica ed Espansione cronologia vengono eseguite su stringhe tra virgolette doppie.
Citando con virgolette singole ' '
Racchiudere i caratteri tra virgolette singole conserva il valore letterale di ciascun carattere tra virgolette. Tra virgolette singole non può verificarsi una virgoletta, anche se preceduta da una barra rovesciata.
Quindi, per inserire una directory o un file con un carattere speciale, evita almeno quest'ultimo o una parte maggiore del tuo nome file o percorso con virgolette doppie, ad esempio:
cd space' 'dir # change into directory called “space dir”
cd spac'e di'r # equal
cd 'space dir' # equal
cat 'space file' # print the content of file “space file”
cat '(' # print the content of file “(”
ls -l '?' # list file “?”
echo content > '\' # print “content” into file “\”
Puoi trovare ulteriori informazioni su Citando in man bash
/ QUOTING , su wiki.bash-hackers.org e su tldp.org .