O shell dividirá as variáveis no espaço em branco quando usado fora das aspas. Do cd "$my_dir"
em vez disso.
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!
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.
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
.
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.