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
Linux 命令之 ln的更多相关文章
- Linux命令: ln
每天一个linux命令(35):ln 命令 实例1:给文件创建软链接 命令: ln -s log2013.log link2013 输出: [root@localhost test]# ll -rw- ...
- 每天一个linux命令(48)--ln命令
ln是Linux中又一个非常重要的命令,它的功能是为某个文件在另外一个位置建立一个同步的链接,当我们需要在不同的目录,用到相同的文件时,我们不需要在每个需要的目录下都放一个相同的文件,我们只要在某个固 ...
- linux命令系列-ln(软硬链接)
linux命令 ln命令可以生成软链接和硬链接,也可叫做符号链接和实体链接. 有兴趣深入理解的可以查阅相关文档,一般的读者只需记住以下几点即可: .不管是软链接还是硬链接都不会额外增加磁盘空间(虽然实 ...
- linux 命令——35 ln(转)
ln 是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要 ...
- linux命令:ln
1.命令介绍: nl用来显示文件的行号并打印出来. 2.命令格式: nl [选项] 文件 3.命令参数: -b :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出行号(类 ...
- Linux命令之ln
ln命令(是l不是i注意了) 用处:建立链接,分为软链接和硬链接 用法:下面讲 示例: 一.硬链接 我想给profile文件建立一个硬链接(硬链接就是把这个文件复制一份的意思) 硬链接hard建好了, ...
- 2018/03/14 每日一个Linux命令 之 ln
ln 链接命令 -- 类似Windows的快捷方式,实际等于建立了一个文件同步的链接,我想,MAC上面复制一个文件到另一个路径,特别快,它可能就是建立了一个链接. -- 在通俗点讲,就是你创建链接之后 ...
- Linux命令之ln软链接
用途:链接文件 默认情况下,ln命令产生硬链接. 最常用的参数是-s(建立符号连接Symbolic Link,也叫软连接),具体用法是: ln-s 源文件 目标文件 当我们需要在不同的目录用到相同的文 ...
- N天学习一个Linux命令之ln
前言有时候同一个文件想创建多个别名,这个时候可以使用链接文件代替 用途对文件或者目录创建链接,默认创建的是硬链接 硬链接Linux底层文件系统由超级数据块,目录树对象,inode索引节点对象,文件对象 ...
随机推荐
- django 自定义 密码加密方式 及自定义验证方式
在django1.6中,默认的加密方式是pbkdf_sha256,具体算法不表,一直以来用django的自带用户验证都十分顺手,但如果需要修改默认加密方式为md5,具体方法为: 在settings.p ...
- Embedding Layer
在深度学习实验中经常会遇Eembedding层,然而网络上的介绍可谓是相当含糊.比如 Keras中文文档中对嵌入层 Embedding的介绍除了一句 “嵌入层将正整数(下标)转换为具有固定大小的向量” ...
- LeetCode_350. Intersection of Two Arrays II
350. Intersection of Two Arrays II Easy Given two arrays, write a function to compute their intersec ...
- docker之容器日志存储位置及把运行日志记录至文件
参考:https://www.cnblogs.com/YatHo/p/7866029.html docker启动后日志会在以下位置 /var/lib/docker/containers/容器ID/容器 ...
- c# stmp邮件发送
最近用到了邮件发送功能,因为stmp设置.参数传递错误等一些问题走了弯路,虽然代码很简单,这里还是记录一下,方便下次查阅. 用个人163邮箱测试的邮件发送 class Program { static ...
- 创建一个用目录分层的Rust应用
一:前言,这是Rust基础程序,主要是用来讲解怎么创建分层(类似Java package)的应用: 二:代码实现: 2.1在src下创建main.rs,然后声明main方法,代码如下: fn main ...
- 定时任务-C#线程类 windows服务
原理 最常用的就是C#中 timer类写一个定时方法,然后在把他宿主到windows服务里面. C#中Timer分类 关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法 ...
- k8s 证书反解
k8s证书反解 1.将k8s配置文件(kubelet.kubeconfig)中client-certificate-data:内容拷贝 2.echo "client-certificate- ...
- 『Python基础练习题』day03
# 1. 有变量name = " aleX leNb " 完成如下操作: # 移除 name 变量对应的值两边的空格,并输出处理结果 # 判断 name 变量是否以 "a ...
- Vue.js源码全方位深入解析--学习笔记
模板中的插入变量是如何渲染到DOM上的? initMixin(Vue)->_init->$options-> $mount()当执行该挂载方法时DOM变化 为什么可以通过this访问 ...