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索引节点对象,文件对象 ...
随机推荐
- 让pc端代码适用移动端——<meta name="viewport"
写的代码,在pc端运行正常,在移动端就很小很小,需要放大.这时候可引入这个标签 @参考博客 用法,在<head></head>中添加<meta name="vi ...
- 【sqlalchemy】
https://www.cnblogs.com/ccorz/p/5711955.html
- kubernetes 【版本】
kubernetes本身是一个集群,我们所说的kubernetes版本实际上指的是集群各个组件的版本. 有哪些组件有版本呢? https://kubernetes.io/docs/setup/rele ...
- web端自动化——Selenium Server环境配置
Selenium Server环境配置 下面下载.配置并运行Selenium Server. ① 下载 Selenium Server. 下载地址为:https://pypi.python.or ...
- 服务发现框架选型,Consul还是Zookeeper还是etcd
背景 本文并不介绍服务发现的基本原理.除了一致性算法之外,其他并没有太多高深的算法,网上的资料很容易让大家明白上面是服务发现. 想直接查看结论的同学,请直接跳到文末. 目前,市面上有非常多的服务发现工 ...
- Universial robot 运动学
1 正运动学: 1.1 DH方法理解 第i个坐标系固连在第i个连杆的左端.轴i固连于i-1杆,在i-1杆的右端. i坐标系固定在i杆上,随这i杆转动. 每个连杆有四个参数,第i个连杆: ai = ( ...
- LeetCode 589. N叉树的前序遍历(N-ary Tree Preorder Traversal)
589. N叉树的前序遍历 589. N-ary Tree Preorder Traversal LeetCode589. N-ary Tree Preorder Traversal 题目描述 给定一 ...
- 【转帖】2011-2018年中国IPv6地址数量及国际出口带宽数走势情况[图]
2011-2018年中国IPv6地址数量及国际出口带宽数走势情况[图] http://www.chyxx.com/industry/201910/791801.html 三亿多ipv4的地址. 接近9 ...
- TypeScript tsconfig.json(TypeScript配置)
如果一个目录下存在一个tsconfig.json文件,那么意味着这个目录是TypeScript项目的根目录. tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项. 一个项目可以通 ...
- 在CentOS7 安装 Redis数据库
环境说明: 名称 版本 CentOS CentOS Linux release 7.4.1708 (Core) VMware Fusion 专业版 10.1.1 (7520154) SSH Shell ...