tl; dr : para citar um caractere especial, escape com uma barra invertida \
ou coloque-o em dobro " "
ou aspas simples ' '
. Tab ↹ A conclusão cuida da cotação correta.
O que você está pedindo é chamado Citando :
As citações são usadas para remover o significado especial de certos caracteres ou palavras para o shell. (…) Existem três mecanismos de cotação: o caractere de escape , aspas simples e aspas duplas . [citações tiradas de
man bash
]
Citando com o caractere de escape \
Uma barra invertida sem aspas (
\
) é o caractere de escape. Ele preserva o valor literal do próximo caractere que segue, com exceção de<newline>
.
Para inserir um diretório ou um arquivo com um caractere especial, escape do último com \
, por exemplo:
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 “?”
Conclusão programável do bash
.
Citando com aspas duplas \
A inclusão de caracteres entre aspas duplas preserva o valor literal de todos os caracteres entre aspas, com exceção de
" "
,$
,'
e, quando a expansão de histórico está ativada,\
.
Portanto, para inserir um diretório ou um arquivo com um caractere especial, escape pelo menos o último ou uma parte maior do seu nome de arquivo ou caminho com aspas duplas, por exemplo:
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 “?”
Como !
, $
e '
mantêm seu significado especial entre aspas duplas, Expansão do parâmetro , Substituição de Comando , Expansão aritmética e Expansão do histórico são executados em strings de aspas duplas.
Citando com aspas simples !
A inclusão de caracteres entre aspas simples preserva o valor literal de cada caractere entre aspas. Uma aspa simples pode não ocorrer entre aspas simples, mesmo quando precedidas por uma barra invertida.
Portanto, para inserir um diretório ou um arquivo com um caractere especial, escape pelo menos o último ou uma parte maior do seu nome de arquivo ou caminho com aspas duplas, por exemplo:
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 “\”
Você pode encontrar mais informações sobre citações em ' '
/ QUOTING , em wiki.bash-hackers.org e em tldp.org .