zoukankan      html  css  js  c++  java
  • Linux 命令之 ln

    ln 的作用是制作一个文件或者目录的快捷方式,让我们在使用的过程当中更加方便地使用。

    下面我来简单介绍一下 ln 的基本用法。

    ln 的基本语法

    • 生成一个软链
      ln -s source_name link_name

    • 生成一个硬链
      ln source_name link_name

    其中 source_name 表示源文件或者源目录的名称, link_name 表示链接文件的名字

    我们来说一下, 软链和硬链是什么东西。
    首先,不管是软链还是硬链,我们对他们的操作(比如修改文件内容)都会同步到其对应的源文件,同样对源文件的操作同样会同步到链接之上。
    那么软件和硬链有什么不同呢?

    我们新那建一个文件,名为 source.txt, 写如以下内容,保存

    然后分别制作一个关联到 source.txt 的软链和硬链, 查看当前目录的情况

    [x@1lin24 tmp]$ ln -s source.txt s_link.txt
    [x@1lin24 tmp]$ ln source.txt h_link.txt
    [x@1lin24 tmp]$ ls -la
    total 16
    drwxrwxr-x 2 x x 4096 Oct 21 14:43 .
    drwx------ 7 x x 4096 Oct 21 14:43 ..
    -rw-rw-r-- 2 x x  110 Oct 21 14:42 h_link.txt
    lrwxrwxrwx 1 x x   10 Oct 21 14:39 s_link.txt -> source.txt
    -rw-rw-r-- 2 x x  110 Oct 21 14:42 source.txt
    

    我们发现如下信息:

    • 软链文件类型是 l, 而硬链的软件类型却是普通文件
    • 软链的文件大小很小,而硬链的文件大小与源文件一样
    • 软链的最后,说明了源文件的位置,而且硬链没有

    那么,如果源文件不小心被删除了,会发生什么事情呢

    软链的源文件位置变成红底的白色文字,而且文字不停地闪烁,而硬链看起来没什么变化。

    让我们用vim分别打开他们,看会发生什么事情。
    vim h_link.txt

    硬链文件似乎没有受到什么影响

    vim s_link.txt
    我们看到以下内容

    我们发现,似乎是让我们新建一个新的文件,我们在里面输入 new file, 保存

    [x@1lin24 tmp]$ ls -la
    total 16
    drwxrwxr-x 2 x x 4096 Oct 21 14:57 .
    drwx------ 7 x x 4096 Oct 21 14:57 ..
    -rw-rw-r-- 1 x x  110 Oct 21 14:42 h_link.txt
    lrwxrwxrwx 1 x x   10 Oct 21 14:39 s_link.txt -> source.txt
    -rw-rw-r-- 1 x x   24 Oct 21 14:57 source.txt
    

    神奇的事情发生了, source.txt 回来了!说明当我们编辑丢失源文件的软链时,系统会引导我们创建一个新的源文件。
    此时,我们再查看 h_link_txt 发现,它的内容仍然还是删除源文件前的样子。

    从上面的小实验,我们可以知道,删除源文件之后,编辑软链会引导我们创建新的源文件,并且保持原先的关系。
    在同样的情况下,删除源文件硬链并不会丢失内容,而且只是切断了他们的同步关系,硬链仍然是一个独立、完整的文件。

    如果我们手动把再新建一个 source.txt 会发生什么事情呢?
    我们先删除源文件,然后手动创建一个 source.txt

    [x@1lin24 tmp]$ rm source.txt 
    [x@1lin24 tmp]$ ls -la
    total 12
    drwxrwxr-x 2 x x 4096 Oct 21 15:04 .
    drwx------ 7 x x 4096 Oct 21 14:57 ..
    -rw-rw-r-- 1 x x  110 Oct 21 14:42 h_link.txt
    lrwxrwxrwx 1 x x   10 Oct 21 14:39 s_link.txt -> source.txt
    [x@1lin24 tmp]$ vim source.txt
    

    source.txt的内容如下图:

    保存之后

    [x@1lin24 tmp]$ ls -la
    total 16
    drwxrwxr-x 2 x x 4096 Oct 21 15:07 .
    drwx------ 7 x x 4096 Oct 21 15:07 ..
    -rw-rw-r-- 1 x x  110 Oct 21 14:42 h_link.txt
    lrwxrwxrwx 1 x x   10 Oct 21 14:39 s_link.txt -> source.txt
    -rw-rw-r-- 1 x x   15 Oct 21 15:05 source.txt
    

    我们再打开 s_link.txt, 其内容如下图:

    软链同样自动作关关联。而打开硬链的话,其内容依然没有变化,此时它已经和 source.txt 没有关系了。

    需要注意的点

    • 软链只能链接到文件不能链接到目录(详见《ln命令_Linux ln命令:创建文件链接》
    • 如果软链对应的文件被删除的话,重新 编辑 软件,会新建一个新的文件
    • 链接可以建立在链接之上
    • 链接最好是建议在绝对路径之上

    ReadMore

    ln命令_Linux ln命令:创建文件链接
    linux ln

  • 相关阅读:
    redis-单线程为什么快
    redis-数据结构
    http-状态码
    事件绑定完整版2016/4/21
    焦点事件2016、4、21
    ++
    Bom2016/4/21
    添加以及删除className
    getByClassName2016/4/21
    动态添加
  • 原文地址:https://www.cnblogs.com/1lin24/p/11693068.html
Copyright © 2011-2022 走看看