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. k8s中正确删除一个pod

    1.先删除pod 2.再删除对应的deployment 否则只是删除pod是不管用的,还会看到pod,因为deployment.yaml文件中定义了副本数量 实例如下: 删除pod [root@tes ...

  2. app--Android 稳定性测试方案

    标准的崩溃日志:Android 应用一般使用 Java 语言开发,在不作特殊处理的情况下,遇到未处理的异常时,会弹框提示“程序遇到异常,即将退出”(有些手机框中提示语不同, 或不弹框).同时会将异常的 ...

  3. Java基础:类文件结构及类加载

    Class文件结构 魔数 4bits 确定该文件是否是可接受的Class文件(0xCAFEBABE) 版本号 4bits 包括次版本号和主版本号 常量池 包括字面量(文本字符串,声明为final的常量 ...

  4. docker 通过overlay 构建跨主机联网通信

    初始化 swarm meiya@meiya:~$ docker swarm init 将当前节点作为manager节点加入swarm meiya@meiya:~$ docker swarm join- ...

  5. mysql查看和设置最大连接数

    .查看最大连接数 SHOW VARIABLES LIKE '%max_connections%'; .修改最大连接数 ;

  6. zero copy图解

    原文链接:https://www.jianshu.com/p/8c6b056f73ce 1 传统的IO读写 传统的IO读写有两种方式:IO终端和DMA.他们各自的原理如下. 1.1 IO中断原理   ...

  7. [转帖]商用数据库之死:Oracle 面临困境

    商用数据库之死:Oracle 面临困境 投递人 itwriter 发布于 2019-10-20 08:22 评论(1) 有238人阅读 原文链接 [收藏] « » https://news.cnblo ...

  8. linux tar包追加问题

    只能已归档的文件才能追加文件. 如果tar.gz文件是如此生成:#tar -zcvf test.tar.gz  a.txt即tar.gz是压缩(-z)和归档(-c)文件,则无法给它追加文件:若果tar ...

  9. javascript之new操作符

    new 运算符做了哪些事情 1.新生成了一个对象 2.链接到原型 3.绑定 this 4.返回新对象 自己实现一个 new function create() { // 创建一个空的对象 let ob ...

  10. Markdown试试

    from os import time print("haha") from os import time print("haha") time.time()! ...