Ligação simbólica no Terminal (O que estou fazendo errado?)

0

Eu quero criar links simbólicos para todos os arquivos em uma pasta parent/target/ . Eu quero que os links estejam na pasta parent/destination/ . Meu diretório de trabalho é parent/ para a saída de terminal a seguir usando bash :

$ cd target/
$ ll
total 16
drwxr-xr-x 4 jesse staff 136 Feb 23 16:31 ./
drwxr-xr-x@ 10 jesse staff 340 Feb 23 16:38 ../
-rw-r--r-- 1 jesse staff 10 Feb 23 16:23 file.txt
-rw-r--r-- 1 jesse staff 10 Feb 23 16:23 file2.txt
$ ln -s * ../destination/
$ ll ../destination/
total 16
drwxr-xr-x 4 jesse staff 136 Feb 23 16:38 ./
drwxr-xr-x@ 10 jesse staff 340 Feb 23 16:38 ../
lrwxr-xr-x 1 jesse staff 8 Feb 23 16:38 file.txt@ -> file.txt
lrwxr-xr-x 1 jesse staff 9 Feb 23 16:38 file2.txt@ -> file2.txt

Por que é criar links simbólicos que se ligam a si mesmos? Eu li a página ln man e várias outras questões relacionadas com ln , mas acho que estou perdendo alguma coisa.

(estou usando o bash no Terminal no OS X 10.11.3)

    
por jsejcksn 23.02.2016 / 23:40

1 resposta

1

Você precisa especificar um caminho absoluto na fonte: no seu caso, seria:

ln -s $PWD/* ../destination/

Ao contrário de um link físico, em que a entrada de diretório criada faz referência direta ao mesmo arquivo de origem, um link simbólico contém o texto da referência do arquivo original. De fato, o arquivo de origem não precisa existir quando um link simbólico é criado, embora obviamente o uso de * garanta que apenas os arquivos de origem existentes sejam usados.

Na verdade, é um pouco mais complicado do que isso: se você especificar um caminho absoluto no link, referenciar o link funciona como se você tivesse especificado o arquivo original; mas se você especificar um caminho relativo, ele será adicionado ao diretório onde o link reside. Então, uma alternativa que você poderia usar do diretório target é:

cd ../destination/; ln -s ../target/* .

Isso teria o mesmo efeito de um caminho absoluto, mas teria uma distinção: se toda a árvore de diretórios fosse copiada ou movida para outro local (por exemplo, em algum diretório de um usuário diferente), os links referenciariam os arquivos em sua nova pasta. localização. A escolha de links absolutos ou relativos dependerá, portanto, se você deseja copiar ou mover os arquivos de origem junto com os links: se os arquivos de origem permanecerem sempre no mesmo local, use links absolutos.

    
por 24.02.2016 / 14:03