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

Linux 命令之 ln的更多相关文章

  1. Linux命令: ln

    每天一个linux命令(35):ln 命令 实例1:给文件创建软链接 命令: ln -s log2013.log link2013 输出: [root@localhost test]# ll -rw- ...

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

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

  3. linux命令系列-ln(软硬链接)

    linux命令 ln命令可以生成软链接和硬链接,也可叫做符号链接和实体链接. 有兴趣深入理解的可以查阅相关文档,一般的读者只需记住以下几点即可: .不管是软链接还是硬链接都不会额外增加磁盘空间(虽然实 ...

  4. linux 命令——35 ln(转)

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

  5. linux命令:ln

    1.命令介绍: nl用来显示文件的行号并打印出来. 2.命令格式: nl [选项] 文件 3.命令参数: -b  :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出行号(类 ...

  6. Linux命令之ln

    ln命令(是l不是i注意了) 用处:建立链接,分为软链接和硬链接 用法:下面讲 示例: 一.硬链接 我想给profile文件建立一个硬链接(硬链接就是把这个文件复制一份的意思) 硬链接hard建好了, ...

  7. 2018/03/14 每日一个Linux命令 之 ln

    ln 链接命令 -- 类似Windows的快捷方式,实际等于建立了一个文件同步的链接,我想,MAC上面复制一个文件到另一个路径,特别快,它可能就是建立了一个链接. -- 在通俗点讲,就是你创建链接之后 ...

  8. Linux命令之ln软链接

    用途:链接文件 默认情况下,ln命令产生硬链接. 最常用的参数是-s(建立符号连接Symbolic Link,也叫软连接),具体用法是: ln-s 源文件 目标文件 当我们需要在不同的目录用到相同的文 ...

  9. N天学习一个Linux命令之ln

    前言有时候同一个文件想创建多个别名,这个时候可以使用链接文件代替 用途对文件或者目录创建链接,默认创建的是硬链接 硬链接Linux底层文件系统由超级数据块,目录树对象,inode索引节点对象,文件对象 ...

随机推荐

  1. Django之密码加密

    通过django自带的类库,来加密解密很方便,下面来简单介绍下: 导入包: from django.contrib.auth.hashers import make_password, check_p ...

  2. LODOP设置打印份数及是否逐份输出

    LODOP中通过SET_PRINT_COPIES可以设置打印份数,例如:LODOP.SET_PRINT_COPIES(2);//指定份数为2份 如果一个任务里有多页,打印份数的时候,有两种输出方式,一 ...

  3. 删除SQL约束的方法

    在SQL数据库中,如果需要删除表约束,应该如何操作呢?下面就将为您介绍删除SQL表约束的方法,供您参考,希望对您有所帮助. --1)禁止所有表约束的SQL select 'alter table '+ ...

  4. ng2中 如何使用自定义属性data-id 以及赋值和取值操作

    项目环境:ng4.x 写法说明: [attr.data-nurseKey] <div [attr.data-nurseKey]="k.nurseKey"></di ...

  5. 原生JavaScript常用本地浏览器存储方法二(cookie)

    JavsScript Cookie概述 cookie是浏览器提供的一种机制,它将document对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是Jav ...

  6. AI - H2O - 第一个示例

    1 - Iris数据集 Iris数据集是常用的机器学习分类实验数据集,特点是数据量很小,可以快速学习. 数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性. Sepal.Leng ...

  7. 使用 LVS 实现负载均衡原理及安装配置详解(课堂随笔)

    一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(r ...

  8. Python赋值、浅拷贝、深拷贝

    一.赋值(assignment) >>> a = [1, 2, 3] >>> b = a >>> print(id(a), id(b), sep= ...

  9. 微信小程序 与后台交互----传递和回传时间

    wxml代码 <!--index.wxml--> <view class="container"> <view class="section ...

  10. sql 表的连接与查找

    A.left outer join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行. SQL: select a.a, a.b, a.c, b.c, b.d, b.f fro ...