linux bash: cd para o diretório com espaço

2

Se tiver um nome de diretório como "meu dir". Eu posso chegar ao diretório usar isso,

~: cd my\ dir

ou

~: cd "dy dir" 

Mas eu encontrei se eu fizer isso:

~: export my_dir=my\ dir

ou

~: export my_dir="my dir"

então

~: cd $my_dir

não funciona, cd sempre pega seu parâmetro como "meu" e reporta erro.

Alguém sabe como consertar isso?

Obrigado!

    
por user59285 21.01.2011 / 14:59

4 respostas

10

O shell dividirá as variáveis no espaço em branco quando usado fora das aspas. Do cd "$my_dir" em vez disso.

    
por 21.01.2011 / 15:02
1

Fazendo

cd "$my_dir"

funciona, mas você sempre terá que lembrar que para my_dir você precisará usar "my_dir". Uma solução alternativa é que você pode fazer:

ln -s my\ dir my_dir
export my_dir="my_dir"

E agora você deve ser capaz de fazer:

cd $my_dir

Então, basicamente, crie um link simbólico para o diretório com o espaço e, em seguida, exporte o link simbólico em vez do diretório real.

    
por 17.07.2013 / 21:56
0
alias cdmydir="cd my\ dir"

Você não poderá usar isso para nenhuma outra função, como a especificação de caminhos, mas funcionará para esse uso imediato.

Eu tentei export my_dir=my\\ dir e export my_dir="\"my dir\"" , para que a variável de ambiente fosse my\ dir e "my dir" , respectivamente. Mas o bash deve fazer análise diferente para variáveis de ambiente em comparação com a linha de comando normal: Eu recebi erros "Nenhum arquivo ou diretório" para my\ e "my .

    
por 21.01.2011 / 15:17
0

c () {cd "$ 1 $ 2 $ 3 $ 4"; }

Em qualquer arquivo bash que você acha que deveria ser usado. Tabulação adiciona o / escapando do espaço, arrastando-o da GUI.

    
por 21.01.2011 / 15:25

Tags