Linux命令——ln命令创建删除软、硬链接(629)
ln命令⽤来为⽂件创建链接,连接类型分为硬链接和符号链接两种,默认的连接类型是硬连接。如果要创建符号连接必须使⽤"-s"选项。⽤法:  ln  [options]  source  dist
添加链接使⽤ln命令
1) -s         软链接(符号链接)
2) -v         显⽰详细的处理过程
3) -d         允许超级⽤户制作⽬录的硬链接
⽤法:
#ln --help
⽤法:ln [选项]... ⽬标 [链接名]
或:ln [选项]... ⽬标... ⽬录
或:ln [选项]... --target-directory=⽬录⽬标...
创建连⾄指定<⽬标>的链接,并可选择性指定<;链接名>。
王迅个人资料
如果没有指定<;链接名>,会在⽬前的⽬录中创建⼀个和<⽬标>名称⼀样的链接。
当使⽤第⼆种格式⽽<⽬标>多於⼀个时,最后的参数必须是⽬录;这样会在指定的
<⽬录>中分别创建连⾄每个<⽬标>的链接。默认会创建硬链接,若
使⽤ --symbolic 选项则创建符号链接。当创建硬链接时,每个<⽬标>都必须存
在。
长选项必须⽤的参数在使⽤短选项时也是必须的。
--backup[=CONTROL]      make a backup of each existing destination file
-b                          like --backup but does not accept an argument
-d, -F, --directory        allow the superuser to attempt to hard link
directories (note: will probably fail due to
system restrictions, even for the superuser)
-f, --force                remove existing destination files
-n, --no-dereference        如果⽬的地是⼀个链接⾄某⽬录的符号链接,会将
该符号链接当作⼀般⽂件处理,先将该已存在的
链接备份或删除
-i, --interactive          确认是否删除⽬的地⽂件
-s, --symbolic              创建符号链接⽽不是硬链接
-S, --suffix=后缀⾃⾏指定备份⽂件的<;后缀>
--target-directory=⽬录在指定<⽬录>中创建链接
-v, --verbose              链接前先印出每个⽂件的名称
--help    显⽰此帮助信息并离开
-
-version 显⽰版本信息并离开
备份⽂件的后缀为‘~’,除⾮以 --suffix 选项或是 SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的⽅式可透过 --backup 选项或 VERSION_CONTROL 环境
变量来选择。以下是可⽤的变量值:
夏天冰箱几档最好
none, off      不会进⾏备份 (即使使⽤了 --backup 选项)
numbered, t    备份⽂件会加上数字
existing, nil  若有数字的备份⽂件已经存在则使⽤数字,否则使⽤普通⽅式备份
simple, never  永远使⽤普通⽅式备份
删除链接时,直接⽤rm命令
例:
添加
ln -s /usr/jboss4.0.5.GA/ jboss
删除
rm jboss
1 . 使⽤⽅式:ln [option] source_file dist_file  (source_file是待建⽴链接⽂件的⽂件,dist_file是新创建的链接⽂件)
-f 建⽴时,将同档案名删除.
-i 删除前进⾏询问.
ln -s abc cde 建⽴abc 的软连接
ln abc cde 建⽴abc的硬连接,
ln -s findDir finDir_link        为⽬录创建软连接当源⽂件失效后,链接⽂件将失效。
2)[root@localhost Documents]# ln newFile newLink          给⽂件创建硬链接
[root@localhost Documents]# ll
总⽤量 0
drwxr-xr-x. 2 root root 51 5⽉  21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5⽉  21 07:09 Pdir
冯绍峰的个人资料
[root@localhost Documents]# touch newFile            //创建⽂件
[root@localhost Documents]# ln -s newFile newLink_s  //创建⽂件符号链接
[root@localhost Documents]# ln newFile newLink        //创建⽂件硬链接
[root@localhost Documents]# ln -s Pdir PdirLink_s    //创建⽬录符号链接
[root@localhost Documents]# ln Pdir PdirLink          //不允许创建⽬录硬链接
ln: "Pdir": 不允许将硬链接指向⽬录
[root@localhost Documents]# ll
总⽤量 0
-
rw-r--r--. 2 root root  0 5⽉  27 06:18 newFile
-rw-r--r--. 2 root root  0 5⽉  27 06:18 newLink
lrwxrwxrwx. 1 root root  7 5⽉  27 06:19 newLink_s -> newFile
drwxr-xr-x. 2 root root 51 5⽉  21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5⽉  21 07:09 Pdir
lrwxrwxrwx. 1 root root  4 5⽉  27 06:19 PdirLink_s -> Pdir
创建的⽂件硬链接newLink与源⽂件newFile具有相同的权限,并且没有箭头。⽽⽂件软链接newLink_s的权限要多得多,⽽且有指向符号。
3)综合实例,⽐较硬链接与符号链接的差别
[root@localhost Documents]# cat >newFile <<EOF
> This is original file!
>
> I'm test the hard link and the symbol link!
> EOF                                                    //到这⾥新建⼀个⽂件
总⽤量 4
[root@localhost Documents]# ln -s newFile newFile_link_s
[root@localhost Documents]# ln newFile newFile_link
[root@localhost Documents]# rm newFile                  //删除源⽂件
rm:是否删除普通⽂件 "newFile"?y
韩国财阀[root@localhost Documents]# ll
总⽤量 4
-rw-r--r--. 1 root root 68 5⽉  27 06:30 newFile_link
lrwxrwxrwx. 1 root root  7 5⽉  27 06:31 newFile_link_s -> newFile
drwxr-xr-x. 2 root root 51 5⽉  21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5⽉  21 07:09 Pdir
[root@localhost Documents]# cat newFile_link              //查看硬链接,完全不受影响,但符号链接已经失效
This is original file!
I'm test the hard link and the symbol link!
[root@localhost Documents]# cat >newFile <<EOF            再新建⼀个⽂件newFile
> The Second Test!
>
> EOF
[root@localhost Documents]# ll
总⽤量 8
-rw-r--r--. 1 root root 18 5⽉  27 06:33 newFile
-rw-r--r--. 1 root root 68 5⽉  27 06:30 newFile_link
lrwxrwxrwx. 1 root root  7 5⽉  27 06:31 newFile_link_s -> newFile  //符号链接已经恢复
drwxr-xr-x. 2 root root 51 5⽉  21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5⽉  21 07:09 Pdir
[root@localhost Documents]# cat newFile_link            //分别查看符号链接和硬链接发现硬链接内容不变,符号链接内容变为新建的⽂件内容了。
This is original file!
I'm test the hard link and the symbol link!
[root@localhost Documents]# cat newFile_link_s
The Second Test!
4)[root@localhost Documents]# ln newFile ln_dir          在另⼀个⽬录创建同名硬链接
[root@localhost Documents]# mkdir ln_dir
[root@localhost Documents]# ln newFile ln_dir
[root@localhost Documents]# cd ln_dir
[root@localhost ln_dir]# ll
总⽤量 4
-rw-r--r--. 2 root root 18 5⽉  27 06:33 newFile
修改newFile硬链接⽬录⽂件,也会导致源⽂件被修改。
5)[root@localhost Documents]# ln -sv a.c ./Pdir           在指定⽬录创建链接俞飞鸿结婚了吗
[root@localhost Documents]# touch a.c
[root@localhost Documents]# ll
总⽤量 0
-
rw-r--r--. 1 root root  0 5⽉  27 07:03 a.c
lrwxrwxrwx. 1 root root  6 5⽉  27 06:58 No_link -> NoPdir
drwxr-xr-x. 2 root root 51 5⽉  21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5⽉  21 07:09 Pdir
[root@localhost Documents]# ln -sv a.c ./Pdir
"./Pdir/a.c" -> "a.c"
[root@localhost Documents]# ln -sv a.c ./Pdir/b.c
"./Pdir/b.c" -> "a.c"
[root@localhost Documents]# ln -v a.c ./Pdir/c.c
"./Pdir/c.c" => "a.c"
[root@localhost Documents]# ls -l Pdir
总⽤量 8
lrwxrwxrwx. 1 root root  3 5⽉  27 07:04 a.c -> a.c
lrwxrwxrwx. 1 root root  3 5⽉  27 07:04 b.c -> a.c
-rw-r--r--. 2 root root  0 5⽉  27 07:03 c.c
-r--r--r--. 1 root root  0 5⽉  19 04:16 find
-rw-r--r--. 1 root root  85 5⽉  19 04:
--w-------. 1 root root  0 5⽉  15 18:34 uText
-rw-r--r--. 1 root root 105 5⽉  21 06:35 vf
(5)其他:
扩展知识:
Linux具有为⼀个⽂件起多个名字的功能,称为链接。被链接的⽂件可以存放在相同的⽬录下,但是必
须有不同的⽂件名,⽽不⽤在硬盘上为同样的数据重复备份。另外,被链接的⽂件也可以有相同的⽂件名,但是存放在不同的⽬录下,这样只要对⼀个⽬录下的该⽂件进⾏修改,就可以完成对所有⽬录下同名链接⽂件的修改。对于某个⽂件的各链接⽂件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。⽂件链接有两种形式,即硬链接和符号链接。
硬链接:
建⽴硬链接时,在另外的⽬录或本⽬录中增加⽬标⽂件的⼀个⽬录项,这样,⼀个⽂件就登记在多个⽬录中。
创建硬链接后,⼰经存在的⽂件的I节点号(Inode)会被多个⽬录⽂件项使⽤。⼀个⽂件的硬链接数可以在⽬录的长列表格式的第⼆列中看到,⽆额外链接的⽂件的链接数为l。在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。⼀个⽂件除⾮链接数为0,否则不会从⽂件系统中被物理地删除。
对硬链接有如下限制:
1.不能对⽬录⽂件做硬链接。
2.不能在不同的⽂件系统之间做硬链接。就是说,链接⽂件和被链接⽂件必须位于同⼀个⽂件系统中。
软链接:
符号链接也称为软链接,是将⼀个路径名链接到⼀个⽂件。这些⽂件是⼀种特别类型的⽂件。事实上,它只是⼀个⽂本⽂件,其中包含它提供链接的另⼀个⽂件的路径名,如图中虚线箭头所⽰。另⼀个⽂件是实际包含所有数据的⽂件。所有读、写⽂件内容的命令被⽤于符号链接时,将沿着链接⽅向前进来访问实际的⽂件。
与硬链接不同的是,符号链接确实是⼀个新⽂件,当然它具有不同的I节点号;⽽硬链接并没有建⽴新⽂件。符号链接没有硬链接的限制,可以对⽬录⽂件做符号链接,也可以在不同⽂件系统之间做符号链接。
⽤ln -s命令建⽴符号链接时,源⽂件最好⽤绝对路径名。这样可以在任何⼯作⽬录下进⾏符号链接。⽽当源⽂件⽤相对路径时,如果当前的⼯作路径与要创建的符号链接⽂件所在路径不同,就不能进⾏链接。符号链接保持了链接与源⽂件或⽬录之间的区别:删除源⽂件或⽬录,只删除了数据,不会删除链接。⼀旦以同样⽂件名创建了源⽂件,链接将继续指向该⽂件的新数据。在⽬录长列表中,符号链接作为⼀种特殊的⽂件类型显⽰出来,其第⼀个字母是l。符号链接的⼤⼩是其链接⽂件的路径名中的字节数。
2. 软链接与硬链接的区别(通俗):
硬链接可认为是⼀个⽂件拥有两个⽂件名;                    ⽽软链接则是系统新建⼀个链接⽂件,此⽂件指向其所要指的⽂件
此外,软链接可对⽂件和⽂件夹。。⽽硬链接仅针对⽂件。
3. 软链接与硬链接的区别(讲解):
Linux 软连接与硬连接
对于⼀个⽂件来说,有唯⼀的索引接点与之对应,⽽对于⼀个索引接点号,却可以有多个⽂件名与之对应。因此,在磁盘上的同⼀个⽂件可以通过不同的路径去访问该⽂件。注意在Linux下是⼀切皆⽂件的啊,⽂件夹、新加的硬盘 ...都可以看着⽂件来处理的啊。
连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)⼜叫符号连接。符号连接相当于Windows下的快捷⽅式。
不可以对⽂件夹建⽴硬连接的,我们通常⽤的还是软连接⽐较多。
eg:
ln -s source dist        # 建⽴软连接
ln source dist            # 建⽴硬连接
软链接实际上只是⼀段⽂字,⾥⾯包含着它所指向的⽂件的名字,系统看到软链接后⾃动跳到对应的⽂件位置处进⾏处理;相反,硬联接为⽂件开设⼀个新的⽬录项,硬链接与⽂件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同⽂
件系统上的⽂件。
(1)软连接可以跨⽂件系统,硬连接不可以。实践的⽅法就是⽤共享⽂件把windows下的 aa.txt⽂本⽂档连接到linux下/root⽬录下 bb,cc . ln - /root/bb 连接成功。 /root/bb 失败。
(2)关于 I节点的问题。硬连接不管有多少个,都指向的是同⼀个I节点,会把结点连接数增加,只要结点的连接数不是 0,⽂件就⼀直存在,不管你删除的是源⽂件还是连接的⽂件。只要有⼀个存在,⽂件就存在(其实也不分什么源⽂件连接⽂件的,因为他们指向都是同⼀个 I节点)。当你修改源⽂件或者连接⽂件任何⼀个的时候,其他的⽂件都会做同步的修改。软链接不直接使⽤i节点号作为⽂件指针,⽽是使⽤⽂件路径名作为指针。所以删除连接⽂件对源⽂件⽆影响,但是删除源⽂件,连接⽂件就会不到要指向的⽂件。软链接有⾃⼰的inode,并在磁盘上有⼀⼩⽚空间存放路径名.
(3)软连接可以对⼀个不存在的⽂件名进⾏连接。
(4)软连接可以对⽬录进⾏连接。
最后删除符号链接,有创建就有删除
rm -rf  symbolic_name  注意不是rm -rf  symbolic_name/
软链接:不可以删除源⽂件,删除源⽂件导致链接⽂件不到,出现⽂件红⾊闪烁
硬链接:可以删除源⽂件,链接⽂件可以正常打开
(1)软连接可以跨⽂件系统,硬连接不可以。
实践的⽅法就是⽤共享⽂件把windows下的 aa.txt⽂本⽂档连接到linux下/root⽬录下 bb,cc . ln -
/root/bb 连接成功。 /root/bb 失败。
(2)关于 I节点的问题。硬连接不管有多少个,都指向的是同⼀个I节点,会把结点连接数增加,只要结点的连接数不是 0,⽂件就⼀直存在,不管你删除的是
源⽂件还是连接的⽂件。只要有⼀个存在,⽂件就存在(其实也不分什么源⽂件连接⽂件的,因为他
们指向都是同⼀个 I节点)。当你修改源⽂件或者连接⽂件
任何⼀个的时候,其他的⽂件都会做同步的修改。软链接不直接使⽤i节点号作为⽂件指针,⽽是使⽤⽂件路径名作为指针。所以删除连接⽂件对源⽂件⽆影响,但
是删除源⽂件,连接⽂件就会不到要指向的⽂件。软链接有⾃⼰的inode,并在磁盘上有⼀⼩⽚空间存放路径名.
丁一宇资料
(3)软连接可以对⼀个不存在的⽂件名进⾏连接。
(4)软连接可以对⽬录进⾏连接。
备注:I节点 :它是UNIX内部⽤于描述⽂件特性的数据结构.我们通常称I节点为⽂件索引结点(信息结点).i节点含有关于⽂件的⼤部分的重要信息,包括⽂件数据块在
磁盘上的地址.每⼀个I节点有它⾃⼰的标志号,我们称为⽂件顺序号.I节点包含的信息 1.⽂件类型 2.⽂件属主关系 3.⽂件的访问权限 4.⽂件的时间截.