aspas duplas com expansão tilda e barra invertida [duplicata]

0

Por que o seguinte está errado?

$ cd "~/my data"
bash: cd: ~/my data: No such file or directory

$ cd ~"/my data"
bash: cd: ~/my data: No such file or directory

$ cd ~/"my data" # works
    
por Tim 05.12.2015 / 15:26

1 resposta

2

Como funciona a expansão do til do bash:

If a word begins with an unquoted tilde character (‘~’), all of the characters up to the first unquoted slash (or all characters, if there is no unquoted slash) are considered a tilde-prefix.

Vamos supor que seu diretório inicial é /home/user e você está nele, o exemplo primeiro :

cd "~/my data"

Isso tenta cd em um diretório com o caminho /home/user/~/my data/ . Observe que ~ é um caractere válido em nomes de diretórios ou arquivos.

O exemplo segundo :

cd ~"/my data"

Isso faz o mesmo que o primeiro. Se sua maravilha, é porque a barra é citada, como indicado na citação acima.

O exemplo terceiro :

cd ~/"my data"

Isso faz a expansão do til, porque a barra não é citada e, portanto, é substituída pelo conteúdo da variável de ambiente $HOME . Isso muda para o diretório /home/user/my data/ .

    
por 05.12.2015 / 15:38

Tags