ln命令用来为文件创建链接,连接类型分为硬链接和符号链接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。

  (1)用法:

用法:  ln  [options]  source  dist

  (2)功能:

功能:  在文件之间建立连接

注意: 符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

      (3)选项参数:

1) -s          软链接(符号链接)

2) -v          显示详细的处理过程

3) -d          允许超级用户制作目录的硬链接

  (4)实例:

1)[root@localhost Documents]# ln -s findDir finDir_link        为目录创建软连接

[root@localhost Documents]# ll
总用量
dr--r--r--. root sunjimeng 5月 : findDir
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : Pdir
[root@localhost Documents]# ln -s findDir finDir_link
[root@localhost Documents]# ll
总用量
dr--r--r--. root sunjimeng 5月 : findDir
lrwxrwxrwx. root root 5月 : finDir_link -> findDir
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : Pdir

当源文件失效后,链接文件将失效。

[root@localhost Documents]# ll
总用量
dr--r--r--. root sunjimeng 5月 : findDir
lrwxrwxrwx. root root 5月 : finDir_link -> findDir //有效时的颜色
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : Pdir
[root@localhost Documents]# cd finDir_link
[root@localhost finDir_link]# ll
总用量
dr-xr-xr-x. root sunjimeng 5月 : Dir
[root@localhost findDir]# rmdir Dir
[root@localhost findDir]# cd ../
[root@localhost Documents]# rmdir findDir
[root@localhost Documents]# ll
总用量 0 //无效时的颜色
lrwxrwxrwx. root root 5月 : finDir_link -> findDir
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : Pdir
[root@localhost Documents]# cd finDir_link
bash: cd: finDir_link: 没有那个文件或目录

2)[root@localhost Documents]# ln newFile newLink          给文件创建硬链接

[root@localhost Documents]# ll
总用量
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : 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
总用量
-rw-r--r--. root root 5月 : newFile
-rw-r--r--. root root 5月 : newLink
lrwxrwxrwx. root root 5月 : newLink_s -> newFile
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : Pdir
lrwxrwxrwx. root root 5月 : 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 //到这里新建一个文件
总用量
[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
总用量
-rw-r--r--. root root 5月 : newFile_link
lrwxrwxrwx. root root 5月 : newFile_link_s -> newFile
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : 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
总用量
-rw-r--r--. root root 5月 : newFile
-rw-r--r--. root root 5月 : newFile_link
lrwxrwxrwx. root root 5月 : newFile_link_s -> newFile //符号链接已经恢复
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : 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
总用量
-rw-r--r--. root root 5月 : newFile

修改newFile硬链接目录文件,也会导致源文件被修改。

5)[root@localhost Documents]# ln -sv a.c ./Pdir           在指定目录创建链接

[root@localhost Documents]# touch a.c
[root@localhost Documents]# ll
总用量
-rw-r--r--. root root 5月 : a.c
lrwxrwxrwx. root root 5月 : No_link -> NoPdir
drwxr-xr-x. root root 5月 : NoPdir
drwxr-xr-x. root root 5月 : 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
总用量
lrwxrwxrwx. root root 5月 : a.c -> a.c
lrwxrwxrwx. root root 5月 : b.c -> a.c
-rw-r--r--. root root 5月 : c.c
-r--r--r--. root root 5月 : find
-rw-r--r--. root root 5月 : t3.txt
--w-------. root root 5月 : uText
-rw-r--r--. root root 5月 : vf

      (5)其他:

扩展知识:

Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。 文件链接有两种形式,即硬链接和符号链接。
      硬链接:

建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。

创建硬链接后,己经存在的文件的I节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中看到,无额外链接的文件的链接数为l。 在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。

对硬链接有如下限制:

1.不能对目录文件做硬链接。

2.不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。
      软链接:

符号链接也称为软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上,它只是一个文本文件,其中包含它提供链接的另一个文件的路径名,如图中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。

与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。 符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。
      用ln -s命令建立符号链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行符号链接。而当源文件用相对路径时,如果当前的工作路径与要创建的符号链接文件所在路径不同,就不能进行链接。 符号链接保持了链接与源文件或目录之间的区别: 删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据。 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l。 符号链接的大小是其链接文件的路径名中的字节数。

每天一个Linux命令(30)ln命令的更多相关文章

  1. 每天一个linux命令(48)--ln命令

    ln是Linux中又一个非常重要的命令,它的功能是为某个文件在另外一个位置建立一个同步的链接,当我们需要在不同的目录,用到相同的文件时,我们不需要在每个需要的目录下都放一个相同的文件,我们只要在某个固 ...

  2. linux常用命令:ln 命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  3. 【命令】ln命令

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,默认是链接是硬链接,常用参数是 "-s"  . 对于ln命令,这里 ...

  4. 每天一个linux命令30)--chgrp命令

    在Linux系统里,文件或目录的权限的掌控以拥有者及所属群组来管理.可以使用chgrp 指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以. chgrp 命令就是change  gr ...

  5. linux创建快捷方式ln命令

    创建快捷方式命令 ln -s 源文件 目标目录 //目标目录可以是完整路径,也可以是当前目录下的路径 ln 源文件 目标目录 在桌面上添加一个,创建一个文件夹(这里是work)的快捷方式 //源 cd ...

  6. 【转载】每天一个Linux命令

    目  录 每天一个linux命令(1)  : ls 命令 每天一个linux命令(2)  : cd 命令 每天一个linux命令(3)  : pwd 命令 每天一个linux命令(4)  : mkdi ...

  7. Linux ln命令:在文件之间建立链接(硬链接和软链接)详解版1

    Linux ln命令:在文件之间建立链接(硬链接和软链接)详解版 < Linux创建文件及修改文件时间戳(touch命令)Linux复制文件和目录(cp命令) > <Linux就该这 ...

  8. linux ln 命令使用参数详解(ln -s 软链接)(转)

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件. 当 我们需要在不同的 ...

  9. Linux 软链接 硬链接 ln命令(繁杂版)

    注意:创建软连接的时候,要用绝对路径!!! 这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln - ...

  10. Linux 命令之 ln

    ln 的作用是制作一个文件或者目录的快捷方式,让我们在使用的过程当中更加方便地使用. 下面我来简单介绍一下 ln 的基本用法. ln 的基本语法 生成一个软链 ln -s source_name li ...

随机推荐

  1. 把质量控制工作往前推进(1)——安装sonarqube

    曾经关注点一直在怎么提高应用程序的质量,没太在意代码级别的质量.近期由于某些因素的推动,须要关注到代码级别的质量去,把质量工作尽量往前推,也符合质量控制的原则.  试用了一下sonarqube(老版本 ...

  2. 谈一谈Http Request 与Http Response

    1.什么是HTTPRequest与HTTP Response? 我们平时打开浏览器,输入网址,点击Enter按键,然后我们想要的网页就呈现在我们的眼前,可是这个过程是怎么实现的呢? 简单来说是这样的: ...

  3. SELECT * INTO xx FROM x0

    insert into a select * from b:--向存在表中插入数据,如果不存在表a报错. select * into a from b:--创建新表的同时插入数据,如果表a存在,报错. ...

  4. Android实践--监測网络状态

    Android 监測网络状态      我们在使用Android手机时候,一些APP须要网络环境才干执行,所以手机须要可用的网络,无论是2G.3G或者WIFI.甚至有一些比較耗流量的APP仅仅能在WI ...

  5. 受防火墙影响,win7的IPV6经常Ping不通,需要手动放行

    在路由器上面设置了IPV6隧道,路由自动给每台机器分配了IPV6地址. 然后总是发现过会IPV6就ping不通了,IPV6的网站也打不开. 经从次实验发现:关闭防火墙后立马就通了,打开防火墙后,过会又 ...

  6. POJ 3252 Round Numbers 数学题解

    Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...

  7. APPLE ID随意转区到US或者HK.不需要信用卡

    看到论坛有封釉想去US 或者HK 的商店下载大陆商店没有的APP.(比如 Tumblr) 但是现在在手机上或者是网页管理apple id 更改地区,需要输入付款信息. 现在教大家利用旧版的icloud ...

  8. Django下实现HelloWorld

    我的实现工具:window10 在window10 下面,实现第一个Django的HelloWorld项目. 1.创建一个项目 确保你的电脑上装了python和Django.我的是在python2.7 ...

  9. 表转List泛型数组

    转换那块怕忘记,留存一下 using System; using System.Collections.Generic; using System.Data; using System.Linq; u ...

  10. gridControl使用集锦

    1.grid控件默认选择一行时,focused的cell并不是蓝色的,而是白色的 要想实现一次选择一行全都是蓝色的只要改一个属性就可以了 this.gridView1.OptionsSelection ...