Linux中的ln命令总结
一、命令用途
ln命令负责将linux中的文件或者文件夹建立链接,类似windows下的快捷方式。其使用场景是当需要在不同的目录使用相同的文件时为了避免重复数据占据过多资源时就可以建立链接。其所建立的链接有两种,分别是硬链接(ln默认建立)和符号链接(又称软连接,需要在ln命令后面跟-s参数)。
二、语法及参数
语法:
ln [参数][源文件或目录][目标文件或目录]
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
选择参数:
- -S "-S<字尾备份字符串> "或 “–suffix=<字尾备份字符串>”
- -V “-V<备份方式>“或”–version-control=<备份方式>”
- –help 显示帮助信息
- –version 显示版本信息
三、示例
例如:需要给当前目录下的install.log建立软硬链接
ln -s install.log install2019 # 建立软连接
ln install.log install2020 # 建立硬链接
ls -lht # 查看建立效果
lrwxrwxrwx. 1 root root 11 3月 4 09:39 install2019 -> install.log #软连接
-rw-r--r--. 2 root root 27K 6月 4 2018 install2020 # 硬链接
-rw-r--r--. 2 root root 27K 6月 4 2018 install.log # 源文件
四、软连接(符号链接)和硬链接
- 索引节点(inode):要了解链接,我们首先得了解一个概念,叫索引节点(inode)。在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存,从而实现文件的快速访问。系统是通过索引节点(而不是文件名)来定位每一个文件。
- 硬链接:硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。为了查看innode号,执行ls -li命令
$ ls -il
297515 lrwxrwxrwx. 1 root root 11 3月 4 09:39 install2019 -> install.log
261126 -rw-r--r--. 2 root root 27338 6月 4 2018 install2020
261126 -rw-r--r--. 2 root root 27338 6月 4 2018 install.log
如上所示硬链接的inode号,文件属性,文件大小等都与源文件一模一样。而且建立了硬链接以后文件的链接数量会加一,实际上硬链接的建立就是为install.log的文件索引节点在当前目录上建立一个新指针,当将所有节点都删除,即链接数目为0时,linux内核才会将文件从磁盘删除。
硬链接缺点:
1 不允许给目录创建硬链接
2 不可以在不同文件系统创建硬链接
- 符号链接(软连接):软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
区别:
1.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
3.链接数目是不一样的,软链接的链接数目不会增加;
4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,install.log大小是27k,而install2019是11B。
5.软连接就是一个新的文件,当系统读取它的时候发现是一个链接,就会读取其中的源文件的路径。
软连接缺点:就是当源文件移动位置后软连接就失效了,但是硬链接不会。
上一篇: 程序员代码面试指南 001
下一篇: Python编写一个简易计算器