我是否正确使用了“ln”和“unlink”命令?

我是否正确使用了“ln”和“unlink”命令?

我有几个使用同一组实用程序脚本的 JavaScript 项目。

今天,在cp第十二次复制()库文件夹后,我做了一些研究,发现了ln&&unlink命令。

我曾经ln创建到该文件夹​​的符号链接lib,如下所示:

ln -s -t ~/Development/Web/Project.js ~/Development/Libraries/Main.js/lib

据我了解,前面的命令:

  1. 创建一个象征性的链接使用-s
  2. 在文件夹中创建指向该文件lib夹的链接~/Development/Libraries/Main.js~/Development/Web/Project.js
  3. 当我删除链接时使用unlink ~/Development/Web/Project.js/lib它不会影响(修改)文件夹lib中的文件夹Main.js
  4. 符号链接是指向目标 inode 的(不可变)指针
  5. 硬链接,它创建一个新的链接,指向目标的 inode
  6. 您还可以使用相同的命令链接/取消链接文件

我的假设正确吗?

答案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

相关内容