O shell realiza divisão de palavras nos argumentos antes de passá-los para o comando especificado. Isso significa que ele pega a linha (ou, em alguns casos, as linhas) e o separa em várias palavras, por padrão em espaços, tabulações e novas linhas.
Como Lưu Vĩnh Phúc mencionou, barras invertidas e aspas simples podem ser usadas para evitar a divisão de palavras em caracteres únicos ou tudo entre eles, respectivamente. Aspas duplas também funcionam:
cd "October Fall"
Neste caso específico, ' e " se comportam de maneira idêntica, mas eles têm diferenças .
' desativa todas as interpretações de caracteres especiais (até \ ), mas não pode conter ' . " apenas desativa a divisão de palavras ea expansão do nome do arquivo (a expansão do nome do arquivo é como ls *.mp3 para listar todos os arquivos com nomes terminados em .mp3 . O * aciona a expansão do nome do arquivo aqui). Como " permite algumas expansões de argumentos, é útil se, por exemplo, você tiver um nome de arquivo com um espaço dentro de uma variável:
$ filename=October\ Fall
$ # ^-- Still need a backslash or quoting to prevent word
$ # splitting here, but the backslash/quotes will not be stored
$ cd $filename
bash: cd: October: No such file or directory
$ cd '$filename'
bash: cd: $filename: No such file or directory
$ cd "$filename"
$ pwd
/path/to/October Fall
Observe que ' e " não (por padrão) fazem com que a palavra seja dividida, por isso, apesar de ser confuso, funcionaria para você:
cd "Oct"'ober F'"all"
Isso é útil se você tiver algo como um diretório chamado Octobers' $HOME . O ' dividiria um único par de ' , e dentro de " quotes, $HOME será expandido para seu diretório inicial. Mas qualquer uma dessas combinações (e muitas outras) funcionará com segurança:
cd Octobers\'\ \$HOME
cd "Octobers' "'$HOME'
cd "Octobers' "\$HOME
cd "Octobers' \$HOME"
Outra coisa a ter em mente é que muitos shells modernos oferecem conclusão de tabulação. Bash e Zsh (provavelmente também o Ksh, mas eu não testei) podem expandir parte do nome de um diretório para o seu nome completo, completo com escape seguro através de \ s. Então, cd Octobers<tab> se torna cd Octobers\'\ \$HOME . Você pode ter que pressionar a guia várias vezes se houver várias correspondências. Além disso, seu shell pode não ter a conclusão da tabulação ativada por padrão, verifique a documentação do seu shell.