UNIX: символическая ссылка в каталогах, когда каталог создан, а когда нет - PullRequest
0 голосов
/ 14 февраля 2012

См .:

mkdir sym
cd sym
mkdir one

//Create the symlink
ln -s one two

ls -l
drwxr-xr-x  2 lola lola 4096 2012-02-14 07:58 one
lrwxrwxrwx  1 lola lola    3 2012-02-14 07:58 two -> one

Теперь, если я положу что-то в один Я достигну этого в два .Насколько я понимаю, two - это имя символической ссылки , и создает для него каталог (а именно, two ) [это правильно ?].

Вопрос : two является каталогом ?это указывает на один ?

Но если я сделаю:

(assuming a clean configuration)
mkdir sym
cd sym
mkdir one
mkdir two  <--- notice the creation of two!!

//Create the symlink
ln -s one two

drwxr-xr-x  2 lola lola 4096 2012-02-14 07:59 one
lrwxrwxrwx  1 lola lola    3 2012-02-14 07:59 two
but in two/
lrwxrwxrwx 1 lola lola 3 2012-02-14 07:59 one -> one

Если я вставлю что-то в один Я не могу достигните его за два .

Но с man ln:

SYNOPSIS
   ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
   ln [OPTION]... TARGET                  (2nd form)
   ln [OPTION]... TARGET... DIRECTORY     (3rd form)
   ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

Я пытаюсь сделать 3-ю форму , этоis: создайте символическую ссылку от одного каталога к другому.

Не могли бы вы дать мне подсказку о моей ошибке?Я думаю, что это концептуальный (и технический)

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012

В вашем первом примере "two" - это не каталог.Это симлинк (в основном небольшой ярлык с надписью «если кто-то просит меня, посмотрите вместо него« один »).

Во втором случае вы действительно используете 3-ю форму. Однако эта форма делаетMsgstr "Сделать ссылку на TARGET внутри каталога DIRECTORY. Поскольку" two "является каталогом, команда ln распознает второй пример как 3-ю форму.

0 голосов
/ 14 февраля 2012

Символическая ссылка - это разновидность файла.Это не каталог.Системный вызов readlink () считывает символы в файле символьных ссылок.Вот откуда на дисплее ls появляется «-> один».

Для того, чтобы ваш пример работал, ls -l two должен показать «../one», потому что две символические ссылки находятся внутри одного каталога.поэтому для правильного обращения к каталогу нужно идти вверх, чтобы найти его.

...