我有几个使用同一组实用程序脚本的 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
- 符号链接是指向目标 inode 的(不可变)指针
- 硬链接,它创建一个新的链接,指向目标的 inode
- 您还可以使用相同的命令链接/取消链接文件
我的假设正确吗?
答案1
在我看来,您的大部分假设都是正确的,只有第 4 点是错误的。符号链接是指向目标的路径,而不是指向目标 inode 的指针,这就是符号链接可以跨文件系统工作的原因。
为了演示 unlink 命令的工作原理,我创建了几个文件和一个目录,我将在其中创建链接:
~$ 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
的硬链接数为2
,并且目标的test1
硬链接数也为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
仍然存在,但它的硬链接数现在为1
。
我从来没有使用过unlink
-command,使用 -command 你会得到相同的结果rm
。