У меня есть несколько проектов JavaScript, которые используют один и тот же набор служебных скриптов.
Сегодня, после десятка раз скопировав (cp
) папку библиотеки, я провел небольшое исследование и обнаружил команды ln
&& unlink
.
Я использовал ln
для создания символической ссылки на папку lib
, например:
ln -s -t ~/Development/Web/Project.js ~/Development/Libraries/Main.js/lib
Исходя из того, что я понимаю, предыдущая команда:
-s
lib
из ~/Development/Libraries/Main.js
в папке ~/Development/Web/Project.js
unlink ~/Development/Web/Project.js/lib
не влияет (не изменяет) папку lib
в папке Main.js
Верны ли мои предположения?
Большинство Ваших предположений кажется корректным мне, только 4-я точка является неправильной. Символьная ссылка является путем к цели, не указателем на inode цели, вот почему symbolink работа ссылок через файловые системы.
Чтобы продемонстрировать, как удалить связь команда работает, я создал несколько файлов и каталог, в котором я создам ссылки:
~$ touch test
~$ touch test1
~$ mkdir dir
Теперь я создаю символьную ссылку на test
и жесткая ссылка на test1
~$ ln -s -t dir test
~$ ln -t dir test1
~$ ls -l dir
total 0
lrwxrwxrwx 1 user user 4 Jul 23 19:21 test -> test
-rw-rw-r-- 2 user user 0 Jul 23 19:22 test1
~$ ls -l test1
-rw-rw-r-- 2 user user 0 Jul 23 19:20 test1
Вы видите что жесткая ссылка dir/test1
имеет hardlink-количество 2
, также цель test1
имеет hardlink-количества 2
.
Теперь я удаляю символьную ссылку dir/test
~$ unlink dir/test
~$ ls -l dir
total 0
-rw-rw-r-- 2 user user 0 Jul 23 19:22 test1
~$ ls -l test
-rw-rw-r-- 1 user user 0 Jul 23 19:20 test
Мы видим, что ссылка удалена, но исходный файл test
все еще существует.
Теперь я удаляю жесткую ссылку dir/test1
:
~$ unlink dir/test1
~$ ls -l test1
~$ ls -l dir
total 0
~$ ls -l test1
-rw-rw-r-- 1 user user 0 Jul 23 19:20 test1
И снова мы видим, что ссылка удалена, но исходный файл test1
все еще существует, но его hardlink-количество теперь 1
.
Я никогда не использовал unlink
- команда, Вы достигнете того же результата с rm
- команда.