zoukankan      html  css  js  c++  java
  • 每天一个Linux命令(30)ln命令

          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
    总用量 0
    dr--r--r--. 3 root sunjimeng 16 5月  24 07:52 findDir
    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 -s findDir finDir_link
    [root@localhost Documents]# ll
    总用量 0
    dr--r--r--. 3 root sunjimeng 16 5月  24 07:52 findDir
    lrwxrwxrwx. 1 root root       7 5月  27 06:04 finDir_link -> findDir
    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]# ll
    总用量 0
    dr--r--r--. 3 root sunjimeng 16 5月  24 07:52 findDir
    lrwxrwxrwx. 1 root root       7 5月  27 06:04 finDir_link -> findDir    //有效时的颜色
    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]# cd finDir_link
    [root@localhost finDir_link]# ll
    总用量 0
    dr-xr-xr-x. 3 root sunjimeng 60 5月  24 08:01 Dir
    [root@localhost findDir]# rmdir Dir
    [root@localhost findDir]# cd ../
    [root@localhost Documents]# rmdir findDir
    [root@localhost Documents]# ll
    总用量 0                                   //无效时的颜色
    lrwxrwxrwx. 1 root root  7 5月  27 06:04 finDir_link -> findDir 
    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]# cd finDir_link
    bash: cd: 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:25 t3.txt
    --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。 符号链接的大小是其链接文件的路径名中的字节数。

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    微信小程序TodoList
    C语言88案例-找出数列中的最大值和最小值
    C语言88案例-使用指针的指针输出字符串
  • 原文地址:https://www.cnblogs.com/MenAngel/p/5536237.html
Copyright © 2011-2022 走看看