Inserindo uma pasta com espaços em branco e caracteres de escape usando o bash

1

Eu tenho acesso a uma lista de pastas que têm um formato como  %código% Quando tento entrar na pasta do terminal, parece que %código% Não sei por que há barras invertidas onde não há espaços. Meu script tem acesso às credenciais e eu criei o formato exato com as barras invertidas, mas ainda não consigo inserir a pasta do script bash. A variável que eu uso é assim: lastname, firstname(id)

Quando faço cd test/lastname,\ firstname\(id\) diz que não há tal pasta. Eu tentei algumas soluções sugeridas em diferentes questões, mas não funcionaram. Colocá-lo entre aspas duplas na variável da pasta e também na expressão inteira também não funcionou. Eu acho que não sei o que está errado e, portanto, não posso fazê-lo funcionar. Seria ótimo se alguém pudesse me ajudar aqui!

    
por rookie 12.10.2016 / 08:27

2 respostas

1

Isto:

The variable I use is like this: folder="lastname,\ firstname\(id\)"

O não funcionará. Porque a variável então mantém a barra invertida:

[maulinglawns@ArchLinux ~]$ folder="lastname,\ firstname\(id\)"
[maulinglawns@ArchLinux ~]$ echo "$folder"
lastname,\ firstname\(id\)

Por isso, você recebe esta mensagem:

cd "slask/$folder" 
bash: cd: slask/lastname,\ firstname\(id\): No such file or directory

A maneira mais fácil de resolver isso é colocar sua variável dentro de "" . Assim:

[maulinglawns@ArchLinux slask]$ mkdir lastname,\ firstname\(id\)
[maulinglawns@ArchLinux slask]$ folder="lastname, firstname(id)"
[maulinglawns@ArchLinux slask]$ cd "$folder"
[maulinglawns@ArchLinux lastname, firstname(id)]$ 

Dessa forma, o shell não será dividido no espaço em branco da variável. Leia mais sobre variáveis e cite aqui .

    
por 12.10.2016 / 08:41
0

Cite suas expansões ( $folder é uma expansão, uma "expansão de parâmetro"):

$ cd "$HOME/test/$folder/"

Se você atribuir o valor entre aspas simples:

$ folder='lastname, firstname(id)'

Não há necessidade de citações anteriores e o cd acima funcionará corretamente.

    
por 12.10.2016 / 08:56