Passando caminhos com espaços como argumentos no OS X

0

Estou tendo problemas para passar um caminho como um argumento que possui um espaço interno.

keyLocation="/Users/vladimir/Google\ Drive/file.pem"
ssh -i $keyLocation [email protected];

Isso me dá o erro abaixo:

Warning: Identity file /Users/vladimir/Google not accessible: No such file or directory.

Basicamente, após a atribuição keyLocation se torna "/ Users / vladimir / Google Drive / file.pem" (não), então quando ele tenta usar $ keyLocation como um argumento, ele passa como

ssh -i /Users/vladimir/Google Drive/file.pem [email protected]

Como posso fazer o comando ssh reconhecê-lo como um caminho com um espaço interno?

    
por Vladimir 19.12.2013 / 17:42

3 respostas

12

Você misturou um pouco. Espaços não precisam ser escapados dentro de citações. E quando você expande uma variável contendo espaço, sempre cite-a.

keyLocation="/Users/vladimir/Google Drive/file.pem"
ssh -i "$keyLocation" [email protected]

Veja: Citações e escapes [Wiki do Bash Hackers]

    
por 19.12.2013 / 17:46
0

Frank respondeu nos comentários:

$"$keyLocation"

Obrigado, Frank.

    
por 19.12.2013 / 17:47
0

Para mim, armazenar o caminho em uma variável não funcionou.

Uma abordagem diferente é usar um link simbólico

ln -s ~/Google\ Drive/ Drive

Depois disso, você pode usar

ssh -i ~/Drive/file.pem [email protected]

Espero que ajude alguém!

    
por 13.10.2016 / 19:11

Tags