Почему ln -s принимает один аргумент

> 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.

27 голосов | спросил Squidly 29 J000000Wednesday15 2015, 16:07:46

2 ответа


45

Это не ошибка. Вариант использования заключается в том, когда вы хотите связать файл с тем же базовым именем, но в другом каталоге:

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

Это правда, что когда вы делаете это с именем файла, находящимся в том же каталоге, он создает ссылку на себя, которая не делает много хорошего!

Это работает независимо от того, используете ли вы символические ссылки или жесткие ссылки.

ответил Celada 29 J000000Wednesday15 2015, 16:11:26
9

Самый простой способ узнать, конечно, - попробовать и посмотреть. Если не указан второй аргумент, ln создаст ссылку в текущем каталоге с тем же именем, что и оригинал:

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

Это также объясняется в man ln:

  

Во 2-й форме создайте ссылку на TARGET в текущем каталоге.

«Вторая форма» относится к:

  

ln [OPTION] ... TARGET (вторая форма)

ответил terdon 29 J000000Wednesday15 2015, 16:10:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132