硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和符号链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。
复制代码
用法:ln [选项]… [-T]源文件 链接名 (第一种格式)
或:ln [选项]… 源文件 (第二种格式)
或:ln [选项]… 源文件 … 目录 (第三种格式)
或:ln [选项]… -t 源文件夹 链接名… (第四种格式)
在第一种格式中,创建指定名称的链接且指向指定的源文件。
在第二种格式中,在当前目录创建指向源文件的链接。
在第三、四种格式中,在指定目录中创建指向源文件的链接。
默认创建硬链接,当使用–symbolic 时创建符号链接。
当创建硬链接时文件必须在同一个文件系统,并且不能对目录进行硬链接。符号链接可以指向任意的位置,
选项说明:
–backup[=CONTROL] 为每个已存在的目标文件创建备份文件
-b 类似–backup,但不接受任何参数
-d, -F, –directory 创建指向目录的硬链接(只适用于超级用户,而且有不可预知的风险,慎用哦)
-f, –force 强行删除任何已存在的目标文件
-n, –no-dereference 如果目的地是一个已存在的链接至某目录的符号链接,会将
该符号链接当作普通文件处理,先将该已存在的
链接备份或删除
-i, –interactive 询问是否删除目的地文件
-s, –symbolic 创建符号链接而不是硬链接
-t, –target-directory=目录 在指定目录中创建链接
-T, –no-target-directory 将链接名当作普通文件(在对目录进行符号链接时要用到此选项)
举例:
1.对某个文件创建一个连接
$ln -s /tmp/abc.txt ~/
此命令表示在家目录下创建与源文件同名的链接到/tmp/abc.txt符号连接
$ln -s /tmp/abc.txt ~/abc
/viewthread.php?tid=214812
LINUX LS 建立连接的一些问题总结
/forrestyx/blog/item/5233d1ef3f5a97232df534dd.html
ls 建立的连接分为 软连接和硬连接
1.硬链接文件和原文件指向同样的数据,两者就像科隆一样,inode号也相同,当删除原文件 时,硬链接文件仍然存在有效。但硬链接文件不同于文件的复制。应该说硬链接文件的产生只是原文件所在目录文件的内容发生改变,原文件的数据并没有得到复 制,而复制文件,磁盘上有两份数据。简单说,硬链接就是一个类似于别名的概念。当原来的名字没有了,别名照样可以使用。
认识了硬链接究竟是怎么一回事,理解硬链接的两个限制就容易多了。
(1)不允许给目录创建硬链接;
(2)只有在同一文件系统中的文件之间才能创建链接。
2.软连接和windows系统的快捷方式含义一样,不做多的解释。软链接和原文件的inode不同,该文件的内容是指向原文件的路径信息。软链接就好像是指针一样。而硬链接就是引用。
3.思考:对于文件系统而言,增加一个硬链接文件与增加一个软链接文件,哪种方式将使用的空间多。 当然是软连接
使用:
1>为了创建到一个文件的另一个链接(别名),请输入:
ln -f file1 file2
这会将 file1 链接到新的名称, file2。如果 file2 不存在,那么会创建该文件名。如果 file2 已经存在了,那么这个文件会被替换为指向 file1的一个链接。然后 file1 和 file2 文件名会指向同一个文件。对其中任何一个的更改都会出现在另一个中。如果一个文件名被 rm 命令删除,那么该文件并没有完全被删除,因为它仍然以其它的名字存在。
2>为了将文件链接为另一个目录中的相同名字,请输入:
ln index dir1
这会将 index 链接到新的名称,dir1/index。
注意:在示例 1 中的 file2 是一个文件的名称;在示例 2 中的 dir1 是一个已经存在的目录。
3>为了将几个文件链接为另一个目录中的名称,请输入:
ln file2 dir2/file3 /home/dir1
这会将 file2 链接到新的名称 /home/dir1/file2;将 dir2/file3 链接到新的名称 /home/dir1/file3。
4>如果想要在 ln 命令中使用模式匹配字符,请输入:
ln dir1/* .
这会将 dir1 目录中的所有文件链接到当前目录中, . (点),给他们在 dir1 目录中同样的名称。
注意: 必须在星号和句点之间输入一个空格。
5>为了创建一个符号链接,输入:
ln -s /tmp/test test
这会在当前的目录中创建符号链接 test。 test 文件指向 /tmp/test 文件。如果 /tmp/test 文件已经存在了,那么 cat test 命令可以列出其内容。
6>如果想要在不指明 TargetFile 参数的情况下得到相同的结果,请输入:
ln -s /tmp/test
@@@@问题: 建立连接之后出现error: 连接层数太多(采用相对路径的原因)
解决: 源和目标均采用绝对路径