Por que ln -s aceita um único argumento?

27
> cd /tmp
> ln -s foo
> ls -alhF /tmp
lrwxrwxrwx 1 user user    3 Jul 29 14:00 foo -> foo

Isso é um bug em ln ou existe um caso de uso para criar um arquivo para si mesmo?

Isso é com coreutils 8.21-1ubuntu5.1 .

    
por Squidly 29.07.2015 / 15:07

2 respostas

45

Não é um bug. O caso de uso serve para quando você deseja vincular um arquivo ao mesmo nome de base, mas em um diretório diferente:

cd /tmp
ln -s /etc/passwd
ls -l passwd
lrwxrwxrwx 1 xxx xxx 11 Jul 29 09:10 passwd -> /etc/passwd

É verdade que quando você faz isso com um nome de arquivo que está no mesmo diretório, ele cria um link para si mesmo que não faz muito bem!

Isso funciona independentemente de você usar links simbólicos ou links físicos.

    
por 29.07.2015 / 15:11
9

A maneira mais fácil de descobrir é tentar e ver. Quando nenhum segundo argumento for fornecido, ln criará um link no diretório atual com o mesmo nome do original:

$ ln -s /etc
$ ls -l
lrwxrwxrwx 1 terdon terdon         4 Jul 29 16:09 etc -> /etc

Isso também é explicado em man ln :

In the 2nd form, create a link to TARGET in the current directory.

A "segunda forma" refere-se a:

ln [OPTION]... TARGET (2nd form)

    
por 29.07.2015 / 15:10