Linux中ln命令用法详解

硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和符号链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。
复制代码

mkdir /dev/snd
cd /dev/snd/
ln -s /dev/controlC0 
ln -s /dev/pcmC0D0p 
ln -s /dev/pcmC0D0c

用法: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

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



      
阅读更多
版权声明:欢迎关注公众号herok,定期推送高质量技术干货文章。 https://blog.csdn.net/qq_21792169/article/details/51063924
个人分类: Linux note
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭