¿Por qué ln -s acepta un único argumento?


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

¿Es esto un error lno hay un caso de uso para simular un archivo consigo mismo?

Esto es con coreutils 8.21-1ubuntu5.1.

Respuestas:


45

No es un error. El caso de uso es para cuando desea vincular un archivo al mismo nombre base pero en un directorio diferente:

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

¡Es cierto que cuando hace esto con un nombre de archivo que está en el mismo directorio, crea un enlace consigo mismo que no hace mucho bien!

Esto funciona independientemente de si usa enlaces simbólicos o enlaces duros.


15
Otra forma de decirlo: ln -s /path/to/filees la abreviatura de ln -s /path/to/file .. Me gusta lses la abreviatura de ls ..
Stéphane Chazelas

3
@ StéphaneChazelas sí, ¡y ahorras dos pulsaciones de teclas completas! :-)
Celada

44
Tenga en cuenta que ese comportamiento no está especificado por POSIX, pero parece ser bastante común (GNU, busybox, FreeBSD, Solaris, Ultrix al menos, y ya era así (aunque -s no era compatible, por supuesto) en la primera versión de Unix a principios de los 70).
Stéphane Chazelas

9

La forma más fácil de averiguarlo, por supuesto, es probarlo y ver. Cuando no se proporciona un segundo argumento, lncreará un enlace en el directorio actual con el mismo nombre que el original:

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

Esto también se explica en man ln:

En el segundo formulario, cree un enlace a TARGET en el directorio actual.

La "segunda forma" se refiere a:

En [OPCIÓN] ... OBJETIVO (2ª forma)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.