linux命令__ln

ln

ln是linux中又一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln –s /bin/less /usr/local/bin/less -s 是符号链接(symbolic)的意思。

软链接和硬链接

Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

软链接

  • 以路径的形式存在,类似于Windows操作系统中的快捷方式
  • 软链接可以跨越文件系统,硬链接不行
  • 软链接可以对一个不存在的文件名进行链接
  • 软链接可以对目录进行链接

硬链接

  • 以文件副本的形式存在,但不占用实际空间
  • 不允许给目录创建硬链接
  • 硬链接只有在同一个文件系统中创建

注意:

1.ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

2.ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

3.ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

4.通过ll可以查看,列表属性第1位是l,尾部会有位置指向的是软连接。

参数

-b或--backup   删除,覆盖目标文件之前的备份。
-d或-F或--directory   建立目录的硬连接。
-f或--force  强行建立文件或目录的连接,不论文件或目录是否存在。
-i或--interactive  覆盖既有文件之前先询问用户。
-n或--no-dereference  把符号连接的目的目录视为一般文件。
-s或--symbolic  对源文件建立软链接(符号连接),而非硬连接。
-S或--suffix=  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号"~",可通过"-S"参数来改变它。
-v或--verbose  显示指令执行过程。
-V或--version-control=  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-S"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字符串。

示例

给文件创建软链接

linux命令__ln

此时的两个文件内容完全一样,现在向a.txt中添加一些内容

[root@honey-master lntest] cat >> a.txt < 哇哈哈哈哈哈哈
> ln软链接
> EOF
[root@honey-master lntest] cat a.txt
ivanlee
717

哇哈哈哈哈哈哈
ln软链接

此时再查看a_s文件

linux命令__ln

发现文件内容跟着改了,如果对a_s文件进行修改,那么源文件也依然会被修改

linux命令__ln

将被链接文件删除后,源文件不受影响

[root@honey-master lntest] rm -f a_s.ttx
[root@honey-master lntest] ll
total 4
-rw-r--r--. 1 root root 68 Jun  2 16:45 a.txt

相反的是,如果源文件被删除

linux命令__ln

linux命令__ln

链接出会一直闪烁

对于很多可执行文件也一样,比如说python3.6

linux命令__ln

这么多文件都具有软链接,我们一般启动python的时候,在有添加环境变量的时候,可以直接输入python3进行操作,同时我们也可以根据被链接的命令进行启动

linux命令__ln

给文件创建硬链接

linux命令__ln

创建硬链接之后,读取目录完全没有任何的链接显示

分别向两个文件中添加内容

linux命令__ln

同样也可以互相影响对方。

如果删掉源文件的话

linux命令__ln

硬链接文件完全不受影响。

给目录添加软链接

目录只能创建软链接。
目录创建链接必须用绝对路径,相对路径创建会不成功,会提示”符号连接的层数过多”这样的错误。
在链接目标目录中修改文件都会在源文件目录中同步变化。

linux命令__ln

访问lntest2目录和访问lntest目录是一样的,尽管ll命令的输出不一样

linux命令__ln

如果将原目录删掉,则与文件软链接一样会闪烁

linux命令__ln

软链接和硬链接的区别

软连接和硬连接可以这样理解:

  • 硬连接就像一个文件有多个文件名,
  • 软连接就是产生一个新文件(这个文件内容,实际上就是记当要链接原文件路径的信息),这个文件指向另一个文件的位置,
  • 硬连接必须在同一文件系统中,而软连接可以跨文件系统
  • 硬连接 :源文件名和链接文件名都指向相同的物理地址,目录不能够有硬连接,文件在磁盘中只有一个复制,可以节省硬盘空间,由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除软连接(符号连接)用ln -s命令创建文件的符号连接,符号连接是linux特殊文件的一种,作为一个文件,它的资料是它所连接的文件的路径名,类似于硬件方式,可以删除原始文件 而连接文件仍然存在
  • 硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Number)。 在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。*硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止”误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。 软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

Original: https://www.cnblogs.com/ivanlee717/p/16338516.html
Author: ivanlee717
Title: linux命令__ln

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582572/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • JuiceFS 缓存预热详解

    缓存预热是一个比较常见的概念,相信很多小伙伴都有所了解。对于 JuiceFS 来说,缓存预热就是将需要操作的数据预先从对象存储拉取到本地,从而获得与使用本地存储类似的性能表现。 缓…

    Linux 2023年6月14日
    082
  • Xshell的快捷键【转】

    删除ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dlctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dhctrl + k 删除光标后面所有字符相当…

    Linux 2023年5月28日
    084
  • CNN卷积神经网络的构建

    1.卷积神经网络由输入层,卷积层,激活函数,池化层,全连接层组成. input(输入层)–conv(卷积层)–relu(激活函数)–pool(池…

    Linux 2023年6月6日
    079
  • Linux下 lsof 命令详解

    lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,我们都知道,在Linux中,一切皆文件,lsof命令可以查看所有已经打开了的文件,比如: …

    Linux 2023年6月13日
    085
  • Windows Server 新增磁盘处于脱机状态解决办法

    解决方案: Cmd命令行操作如下: 1,进入diskpart模式 2、列出磁盘情况 3、选择脱机的磁盘 4、联机磁盘 5、清除磁盘属性 6、进入磁盘管理,提示初始化 每天记录一点,…

    Linux 2023年6月8日
    099
  • Python schedule 库定时任务

    Python schedule 库定时任务 schedule的使用 用于scrapy定时任务设置 import schedule import time def job(): pr…

    Linux 2023年6月13日
    091
  • 实验一-密码引擎-商用密码算法实现1

    任务详情 参考https://weread.qq.com/web/reader/2fb3259071ef04932fbfd2ekc81322c012c81e728d9d180和网上…

    Linux 2023年6月8日
    0112
  • SpringBoot 搭建基于 MinIO 的高性能存储服务

    1.什么是MinIO MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储。它与Amazon S3云存储服务兼容。使用MinIO构建用于机器学习,分析和应…

    Linux 2023年6月7日
    092
  • C语言:1~10阶乘的累加计算(循环方法不唯一)

    1~10阶乘的累加计算方法一 点击查看代码 int main() { int sum = 1, i, n; int ret = 0; for (n = 1; n <= 3; …

    Linux 2023年6月13日
    089
  • 不可不知的软件架构模式

    什么是系统架构(Architecture) 设计不仅仅指的是外观和感觉,它还包括运作方式。—— 史蒂夫·乔布斯 系统架构(System Architecture),软件架构(Sof…

    Linux 2023年6月14日
    067
  • 提升git clone速度

    查看github.global.ssl.fastly.Net的ip地址 nslookup github.global.ssl.fastly.Net Original: https:…

    Linux 2023年6月7日
    0109
  • MySQL安装和配置

    一、关闭防火墙并安装epel源 1、关闭selinux ①修改selinux的配置文件 [root@localhost ~]# vim /etc/selinux/config SE…

    Linux 2023年6月7日
    085
  • 学习一下 SpringCloud (五)– 配置中心 Config、消息总线 Bus、链路追踪 Sleuth、配置中心 Nacos

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

    Linux 2023年6月14日
    0119
  • Java实现链表

    3、链表 MyLinkedList 有一个头指针,一个尾指针,还有链表长度size 内有两个类,一个是实现了Iterator接口的迭代器类,另一个是Node类,其中Node数据结构…

    Linux 2023年6月14日
    087
  • 【Javaweb】在项目中添加MyBatis依赖等

    pom.xml 仓库 如果你没有配置阿里云仓库镜像源,可以到这里来找 https://mvnrepository.com/ 如果你配置了阿里云仓库镜像源,可以来这里找 https:…

    Linux 2023年6月14日
    087
  • CentOS7安装MySQL5.7并配置账户等

    注意: 有的Centos版本默认安装了mariadb, 可以先将其卸载 检查mariadb是否安装 yum list installed | grep mariadb 卸载mari…

    Linux 2023年6月6日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球