Para o &
(ou quase qualquer outro personagem, você tem duas possibilidades simples.
- Coloque aspas simples em torno da coisa toda:
' -3ab_&_-3dc.img'
- Coloque uma barra invertida antes de cada caractere problemático:
-3ab_\&_-3dc.img
Existem duas exceções:
- O método de aspas simples não funciona para uma aspas simples. A barra invertida não é especial entre aspas simples, então você também não pode usá-lo diretamente. O que você pode fazer é encerrar a sequência de aspas simples, usar imediatamente barra invertida mais aspas simples e reiniciar a aspas simples. Assim, por exemplo, se o nome do diretório é
foo'bar\qux
: cd 'foo'\''bar\qux'
. Você pode se lembrar dessa maneira: dentro de aspas simples, '\''
você recebe uma aspas simples.
- O método de barra invertida não funciona para novas linhas: barra invertida-nova linha é apenas ignorada. Você precisa colocar aspas simples em torno de uma nova linha.
Você também pode usar aspas duplas, mas precisará colocar uma barra invertida antes de alguns caracteres. Aspas simples são mais diretas.
Há uma dificuldade adicional aqui, que é que o nome do diretório comece com um traço. Esse personagem diz ao cd
comando (como quase todos os comandos) que uma opção segue. O traço não é especial para o shell, apenas para o comando, portanto, as aspas não o afetam. Você tem duas maneiras de passar um argumento que começa com um traço para um comando sem que ele seja interpretado como uma opção:
- Encontre outra maneira de expressar esse argumento. Para um nome de arquivo, adicionar
./
na frente ainda designa o mesmo arquivo.
- Coloque o argumento
--
antes. Isso diz ao comando para parar de procurar opções.
Então, aqui estão algumas maneiras de mudar para esse subdiretório:
cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'