Perché ln -s accetta un singolo argomento


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

Si tratta di un bug lno esiste un caso d'uso per il collegamento simbolico di un file a se stesso?

Questo è con coreutils 8.21-1ubuntu5.1.

Risposte:


45

Non è un bug. Il caso d'uso è per quando si desidera collegare un file allo stesso nome base ma in una directory diversa:

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

È vero che quando lo fai con un nome file che si trova nella stessa directory crea un collegamento a se stesso che non fa molto bene!

Funziona indipendentemente dal fatto che si utilizzino collegamenti simbolici o collegamenti reali.


15
Un altro modo per dirlo: ln -s /path/to/fileè l'abbreviazione di ln -s /path/to/file .. Like lsè l'abbreviazione di ls ..
Stéphane Chazelas,

3
@ StéphaneChazelas sì, e risparmi due battute intere! :-)
Celada,

4
Nota che quel comportamento non è specificato da POSIX ma sembra essere abbastanza comune (GNU, busybox, FreeBSD, Solaris, Ultrix almeno, ed era già così (sebbene -s non fosse supportato ovviamente) nella prima versione di Unix nei primi anni '70).
Stéphane Chazelas,

9

Il modo più semplice per scoprirlo, ovviamente, è provarlo e vedere. Quando non viene fornito alcun secondo argomento, lnverrà creato un collegamento nella directory corrente con lo stesso nome dell'originale:

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

Questo è anche spiegato in man ln:

Nel secondo modulo, creare un collegamento a TARGET nella directory corrente.

La "seconda forma" si riferisce a:

[OPZIONE] ... OBIETTIVO (2 ° modulo)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.