Como cd em um diretório com espaços em branco?

0

Eu tenho um diretório chamado "foo bar baz blob". Como posso

$ cd "foo bar baz blob"

Eu tentei com o quoting ("e ') e com o escape dos espaços em branco (\). Ele não funciona. A conclusão de tabulação também não funciona.

Eu também tenho que emitir comandos com argumentos de nome de arquivo que contenham espaços. Como faço isso? Mesmo MidnightCommander (mc) falha ao fazer isso.

EDITAR

Mais de um ano depois, finalmente encontrei a fonte do meu problema. Eu sobrecarreguei o cd embutido com uma função que lista automaticamente os arquivos do diretório alterado:


$ type cd
cd ist eine Funktion.
cd () 
{ 
    if builtin cd $1; then
        ls;
    fi
}

$ cd Interner\ Speicher/
bash: cd: Interner: Datei oder Verzeichnis nicht gefunden

$ builtin cd Interner\ Speicher/

$ pwd
/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C018%5D/Interner Speicher

$ ls
Alarms   DCIM      Movies  Notifications  Podcasts   SmsContactsBackup
Android  Download  Music   Pictures   Ringtones

A solução é fácil: eu só tenho que colocar aspas duplas em torno do $ 1:

if builtin cd "$1"; then

Ooof. Obrigado.

    
por ubuplex 11.01.2014 / 20:45

3 respostas

2

Você tem três opções:

  • Escape dos espaços usando um caractere de barra invertida
  • Quebra o nome do diretório entre aspas duplas ( "" )
  • Use a conclusão TAB

Criando o diretório:

user@pc:~/testfolder$ ls -l
total 0
user@pc:~/testfolder$ mkdir "foo bar baz blob"
user@pc:~/testfolder$ ls
foo bar baz blob

Método 1:

user@pc:~/testfolder$ cd foo\ bar\ baz\ blob/
user@pc:~/testfolder/foo bar baz blob$ echo "This works"
This works

Método 2:

user@pc:~/testfolder$ cd "foo bar baz blob"/
user@pc:~/testfolder/foo bar baz blob$ echo "This works, too"
This works, too

Método 3:

user@pc:~/testfolder$ cd foo<TAB><ENTER>

Com base no seu comentário sobre a outra resposta: para acessar o arquivo chamado, o escape precisa ser feito da seguinte forma:

Eric\ Burdon\ -\ Starportrait\ -\ CD\ 1\ \(flac\).cue foo\ bar\ baz\ blob/

No entanto, usando a conclusão do TAB torna este processo mais fácil e evita que você tenha que escapar dos espaços manualmente.

    
por Amal Murali 11.01.2014 / 21:55
1

Acabei de criar a mesma pasta, em / home / abed, a conclusão da tabulação usada e funcionou. Veja a imagem abaixo. Se a pasta foi criada em um local diferente, você terá que navegar para esse local antes de poder colocar o CD em sua pasta.

IssotambéméOK.Vejaimagem

    
por Mitch 11.01.2014 / 21:07
1

Cite seu nome de arquivo entre aspas simples.

cd 'foo bar baz literal string'

No shell, nada é interpretado dentro de aspas simples, então você deve estar seguro de ter caracteres incomuns.

    
por kiri 11.01.2014 / 22:14