linux ln 连接,linux有什么用

大家好,感谢邀请,今天来为大家分享一下linux ln 连接的问题,以及和linux有什么用的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

linux ln 连接命令怎么用

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:ln–s源文件目标文件。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln–s/bin/less/usr/local/bin/less

-s是代号(symbolic)的意思。

两点注意:

第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

第二,ln的链接又软链接和硬链接两种,软链接就是ln–s****,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln****,没有参数-s,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

如果你用ls察看一个目录时,发现有的文件后面有一个@的符号且文件或文件夹的颜色和别的不一样,那就是一个用ln命令生成的文件,用ls–l命令去察看,就可以看到显示的link的路径了。

指令详细说明:

指令名称: ln

使用权限:所有使用者

使用方式: ln [options] source dist,其中 option的格式为:

[-bdfinsvF] [-S backup-suffix] [-V{numbered,existing,simple}]

[--help] [--version] [--]

说明: Linux/Unix档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种:硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。

ln source dist是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。

不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

-f:链结时先将与 dist同档名的档案删除

-d:允许系统管理者硬链结自己的目录

-i:在删除与 dist同档名的档案时先进行询问

-n:在进行软连结时,将 dist视为一般的档案

-s:进行软链结(symbolic link)

-v:在连结之前显示其档名

-b:将在链结时会被覆写或删除的档案进行备份

-S SUFFIX:将备份的档案都加上 SUFFIX的字尾

-V METHOD:指定备份的方式

--help:显示辅助说明

--version:显示版本

范例:

将档案 yy产生一个 symbolic link: zz

1

ln-s yy zz

将档案 yy产生一个 hard link: zz

1

ln yy xx

PS:如果想要删除链接,则像普通文件一样直接rm链接名称即可。

linux 怎么删除 创建的 链接 ln

linux命令- ln-创建和删除软、硬链接

在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。符号连接相当于Windows下的快捷方式。

一、硬链接

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。

语法:

ln [options] existingfile newfile(sexistingfile待建立链接文件的文件,newfile是新创建的链接文件)

ln [options] existingfile-list directory

-f建立时,将同档案名删除.

-i删除前进行询问.

ln-s abc cde建立abc的软连接

ln abc cde建立abc的硬连接,

用法:

第一种:为”existingfile”创建硬链接,文件名为”newfile”。

第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。

常用可选[options]–f无论”newfile”存在与否,都创建链接。-n如果”newfile”已存在,就不创建链接。

下面举一些例子:

[root@rekfan.com test]# ls-il

总计 0

1491138-rw-r–r– 1 root root 48 07-14 14:17 file1

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2

[root@rekfan.com test]# ln file2 file2hand

[root@rekfan.com test]# ls-il

总计 0

1491138-rw-r–r– 1 root root 48 07-14 14:17 file1

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]#

注意在创建链接前,file1显示的链接数目为1,创建链接后file1和file1hard的链接数目都变为2;file1和file1hard在inode号是一样的file1和file1hard显示的文件大小也是一样。可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm file2,每次只会删除一个指针,链接数同时减一,当链接数减为0时,内核才会把文件内容从磁盘上删除。

还可以在不同目录,但同一文件系统中建立文件的硬链接。设file1、file2在目录/home/root/dir1中,下面的命令,在/home/root中建立file2的硬链接。

ln file2/home/root/file2hard

下面的程序,是将dir1目录中所有文件,在目录dir2中建立硬链接

#mkdir dir2

#ln/home/root/dir1/*/home/root/dir2

如果使用了 ln–f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:

(1)不可以在不同文件系统的文件间建立链接

(2)只有超级用户才可以为目录创建硬链接。

二、软链接(符号链接)

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

建立软链接,只要在ln后面加上选项–s,下面举个例子

[root@rekfan.com test]# ls-il

总计 0

1491138-rw-r–r– 1 root root 48 07-14 14:17 file1

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]# ln-s file1 file1soft

[root@rekfan.com test]# ls-il

总计 0

1491138-rw-r–r– 1 root root 48 07-14 14:17 file1

1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft-> file1

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2hand

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。

当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了~~,而硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习。

三、删除链接

有创建就有删除

rm-rf symbolic_name注意不是rm-rf symbolic_name/

[root@rekfan.com test]# ls-il

总计 0

1491138-rw-r–r– 1 root root 0 07-14 14:17 file1

1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft-> file1

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]# rm-rf file1soft

[root@rekfan.com test]# ls-il

总计 0

1491138-rw-r–r– 1 root root 0 07-14 14:17 file1

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2

1491139-rw-r–r– 2 root root 0 07-14 14:17 file2hand

[root@rekfan.com test]#

————————————

linux软连接和硬链接的区别:

————————————

4点不同:

(1)软连接可以跨文件系统,硬连接不可以。

实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录下 bb,cc. ln-s aa.txt

/root/bb连接成功。ln aa.txt/root/bb失败。

(2)关于 I节点的问题。硬连接不管有多少个,都指向的是同一个I节点,会把结点连接数增加,只要结点的连接数不是 0,文件就一直存在,不管你删除的是

源文件还是连接的文件。只要有一个存在,文件就存在(其实也不分什么源文件连接文件的,因为他们指向都是同一个 I节点)。当你修改源文件或者连接文件

任何一个的时候,其他的文件都会做同步的修改。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以删除连接文件对源文件无影响,但

是删除源文件,连接文件就会找不到要指向的文件。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.

(3)软连接可以对一个不存在的文件名进行连接。

(4)软连接可以对目录进行连接。

备注:I节点:它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点含有关于文件的大部分的重要信息,包括文件数据块在

磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.

Note:

硬链接看做是文件的副本

软连接看做是文件的快捷方式

Linux中使用ln命令在文件之间建立连接的用法讲解

在Unix世界里有两个'link'(连接)概念,一般称之为硬连接和软连接。一个硬连接仅仅是一个文件名。(一个文件可以有好几个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉。文件名的个数是由ls(1)来确定的。所有的文件名都处于同一个状态,也就没有什么lq源名字rq之说。通常文件系统里的一个文件的所有名字包含着一样的数据信息,不过这样也不是必需的。)一个软连接(或符号连接)是完全不同的:它是一个包含了路径信息的小小的指定文件。因此,软连接可以指向不同文件系统里的文件(比如由NFS装载的不同机器文件系统上的文件),甚至可以指向一个不一定确实存在的文件。在软连接文件被访问(系统调用 open(2)或stat(2))的时候,操作系统用该文件所包含的路径替换该文件的访问介入点,从而实现对所指文件的访问。(用命令rm(1)和unlink(2)可以删除连接,但不是删除该文件所指向的文件。系统指定调用lstat(2)和readlink(2)来读取连接文件与其所指文件的状态。到底是对软连接文件操作,还是对被指向文件操作,由于不同操作系统件存在不同的系统调用,而存在着差异。)

ln在文件间产生连接。缺省时,产生硬连接,有-s选项,则产生符号(软)连接。

如果仅仅只给出一个文件名,那么ln将在当前目录里产生这个文件的连接,也就是说,以该文件(的最后一个)名称等同的名字在当前目录里产生一个连接(GNU范围内);如果最后一个参数是一个已存在的目录名, ln将在那个目录里给每一个源文件用以与源文件相同的文件名产生连接,(不同情况见以下--no-dereference的描述);如果只给出两个文件名,ln将产生源文件的连接;如果最后一个参数不是一个目录名或多于两个文件名,则报错。

缺省时,ln不删除已存在的文件或符号连接。(因此,它可以被用来锁定目标文件,即当dest已经不存在时)但选项-f可以强制执行。

在已存在的实现中,只有超级用户才能建立目录的硬连接。 POSIX禁止系统调用link(2)和ln建立目录的硬连接(但是允许在不同的文件系统间建立硬连接)。

使用方式: ln [options] source dist,其中 option的格式为:

[-bdfinsvF] [-S backup-suffix] [-V{numbered,existing,simple}][--help] [--version] [--]

说明: Linux/Unix档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种:硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。

ln source dist是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。

不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

-f:链结时先将与 dist同档名的档案删除

-d:允许系统管理者硬链结自己的目录

-i:在删除与 dist同档名的档案时先进行询问

-n:在进行软连结时,将 dist视为一般的档案

-s:进行软链结(symbolic link)

-v:在连结之前显示其档名

-b:将在链结时会被覆写或删除的档案进行备份

-S SUFFIX:将备份的档案都加上 SUFFIX的字尾

-V METHOD:指定备份的方式

--help:显示辅助说明

--version:显示版本

注意:

如果不使用-s标志,就不能在文件系统之间链接文件。

如果 TargetDirectory已经是链接到目录上的一个符号链接,那么 ln命令将现有的目标视为文件。这意味着,类似于 ln-fs somepath/lname symdir的命令不会遵循现有的 symdir符号链接,作为代替,它会创建一个从 somepath/lname到 symdir的新的符号链接。

退出状态

此命令返回以下的退出值:

0所有指定的文件都成功链接上了。

0出现一次错误。

例:

代码如下:

[root@localhost test_ln]# ln-s/home/zhangy/heartbeat./#在当前目录下,建立heartbeat的软连接

[root@localhost test_ln]# ln-s/home/zhangy/test./#建立目录的软件接

[root@localhost test_ln]# ln/home/zhangy/tee.txt./#建立硬连接

[root@localhost test_ln]# ll

总计 4

lrwxrwxrwx 1 root root 22 05-11 11:04 heartbeat-/home/zhangy/heartbeat#文件软件接

-rw-r--r-- 2 root root 0 2010-11-24 tee.txt#文件硬连接

lrwxrwxrwx 1 root root 17 05-11 11:04 test-/home/zhangy/test#目录软件接

1.为了创建到一个文件的另一个链接(别名),请输入:

代码如下:

ln-f chap1 intro

这会将 chap1链接到新的名称, intro。如果 intro不存在,那么会创建该文件名。如果 intro已经存在了,那么这个文件会被替换为指向 chap1的一个链接。然后 chap1和 intro文件名会指向同一个文件。对其中任何一个的更改都会出现在另一个中。如果一个文件名被 rm命令删除,那么该文件并没有完全被删除,因为它仍然以其它的名字存在。

2.为了将文件链接为另一个目录中的相同名字,请输入:

代码如下:

ln index manual

这会将 index链接到新的名称,manual/index。

注意:在示例 1中的 intro是一个文件的名称;在示例 2中的 manual是一个已经存在的目录。

3.为了将几个文件链接为另一个目录中的名称,请输入:

代码如下:

ln chap2 jim/chap3/home/manual

这会将 chap2链接到新的名称/home/manual/chap2;将 jim/chap3链接到新的名称/home/manual/chap3。

4.如果想要在 ln命令中使用模式匹配字符,请输入:

代码如下:

ln manual/*.

这会将 manual目录中的所有文件链接到当前目录中,.(点),给他们在 manual目录中同样的名称。

注意:必须在星号和句点之间输入一个空格。

5.为了创建一个符号链接,输入:

代码如下:

ln-s/tmp/toc toc

这会在当前的目录中创建符号链接 toc。 toc文件指向/tmp/toc文件。如果/tmp/toc文件已经存在了,那么 cat toc命令可以列出其内容。

6.如果想要在不指明 TargetFile参数的情况下得到相同的结果,请输入:

代码如下:

ln-s/tmp/toc

阅读剩余
THE END