Чому ln -s приймає єдиний аргумент


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

Це помилка lnчи є випадок використання для символізації файлу до себе?

Це с coreutils 8.21-1ubuntu5.1.

Відповіді:


45

Це не помилка. Випадок використання призначений для того, коли ви хочете зв'язати файл з тим самим базовим іменем, але в іншому каталозі:

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

Це правда, що коли ви робите це з іменем файлу, що знаходиться в одному каталозі, він створює посилання на себе, що не приносить багато користі!

Це працює незалежно від того, використовуєте ви посилання або жорсткі посилання.


15
Ще один спосіб сказати: ln -s /path/to/fileце скорочення ln -s /path/to/file .. Як lsкороткий для ls ..
Стефан Шазелас

3
@ StéphaneChazelas так, і ви збережете два цілих натискання клавіш! :-)
Селада

4
Зауважте, що така поведінка не визначена POSIX, але здається досить поширеною (GNU, busybox, FreeBSD, Solaris, Ultrix принаймні, і вже була такою (хоча, звичайно, не підтримувалася) у першій версії Unix на початку 70-х років).
Стефан Шазелас

9

Найпростіший спосіб дізнатися це, звичайно, - спробувати і побачити. Якщо не вказано другий аргумент, lnбуде створено посилання в поточному каталозі з тим самим іменем, що й оригінал:

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

Це також пояснюється в man ln:

У 2-му класі створіть посилання на TARGET у поточному каталозі.

"2-я форма" стосується:

ln [ВАРІАНТ] ... ЦІЛЬ (2 клас)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.