软链接和硬链接的详解 (Linux系统下)

news2024/12/30 3:21:30

文章目录

  • 硬链接的引入
  • 软链接和硬链接的形成
    • 软链接
    • 硬链接
  • 软硬链接区别的探究
  • 硬链接数
  • 结语

硬链接的引入

当我们在命令行中输入ll时会出现很多行信息,详情请看下面的图 ~~~~ε=ε=ε=( ̄▽ ̄)

在这里插入图片描述

我在之前的几篇Linux的文章也讲过哦 (o゚v゚)ノ

  • 那么问题来了~~

    什么是硬链接呢????😣

    是不是有硬链接,就有软链接呢?🤔🤨

接下来我们就来介绍介绍这两个东西啦🙂

软链接和硬链接的形成

软链接

接下来我就用例子来让大家见见软链接和硬链接

当我们的一个可执行程序在这个路径下/home/xkjtx/linux-code/zijideku/usrlib/main,我们每次都要用这个路径才能执行该程序,这是不是非常麻烦啊😣😣

  • 那我们有没有一种办法,让我们每次不需要输入很长的命令就能运行该程序呢🤔😶
  • 就像Windows的快捷键一样,不需要我们去找对应的.exe文件就可以运行软件了😯😯

答案是:肯定有啊,这就是我们要说的软链接

  • 软链接的命令

    ln 可执行程序的路径 -s 软链接的名字
    

    比如我要将刚刚的/home/xkjtx/linux-code/zijideku/usrlib/mainsoft.link就可以运行,则就可以这样子写

    ln /home/xkjtx/linux-code/zijideku/usrlib/main -s soft.link
    

    这样我们就不需要输入/home/xkjtx/linux-code/zijideku/usrlib/main才能运行main这个可执行程序,而可以直接用./soft.link来运行该程序啦~~

在这里插入图片描述

是不是很方便呢d=====( ̄▽ ̄*)b

我们在创建软链接的目录里输入ll时,就可以发现soft.link链接的是哪个路径啦

在这里插入图片描述

细心的同学就发现啦,第一行中的第一个字母和平时的文件的字母不一样哦,我就来讲讲常见的几个吧

  • -:普通文件
  • d:文件夹
  • l:软链接
  • c:字符设备文件
  • b:块设备文件
  • p:命名管道(FIFO)
  • s:套接字文件

硬链接

当我们把软链接的命令的-s去掉后,就是硬链接的命令啦

ln 可执行程序的路径 硬链接的名字

同样用刚刚的/home/xkjtx/linux-code/zijideku/usrlib/main来演示,当我们输入

ln /home/xkjtx/linux-code/zijideku/usrlib/main hard.link

时,我们会发现目录中多了个硬链接啦

在这里插入图片描述

和软链接的区别

  • 文件类型为普通文件,因为他的第一列的第一个字母为**-**
  • 它并不像软链接一样指向了可执行程序的路径
  • 而且他的配色和可执行程序一样是绿色哦,大家可以大胆猜测一下是为什么哦**~~~~~( ̄▽ ̄)~* **

软硬链接区别的探究

我们的可执行程序有两种形成方式

  • 软链接
  • 硬链接

接下来我用bo_ke_code.cpp这个文件的编译生成可执行程序来举例

  • 软链接
    • 当我们输入g++ -o bo_ke_code bo_ke_code.cpp -std=c++11时,默认为软链接,也就是动态链接,我们可以具体观察一下ll时的第五列的数字(也就是文件大小

在这里插入图片描述

  • 硬链接
    • 当我们输入g++ -o bo_ke_code_hard bo_ke_code.cpp -std=c++11 -static时,为链硬接,也就是静态链接,我们可以再观察一下ll时的文件大小,可以对比一下软链接时的区别

在这里插入图片描述

我们会发现

  • 硬链接(静态链接)产生的文件的大小远远大于软链接(动态链接)产生的大小😯😯😯

思考:

  • 这是为什么呢????😣🤔

原因:

  • 软链接是调用了动态库函数,我们的代码被编译后,调用函数的部分都是放入定义函数的地址
  • 硬链接是将静态库函数的实现放入程序

也就是说,硬链接会将函数的代码拷贝进我们的代码,这也就是为啥它的文件大小远远大于动态链接的原因

硬链接数

相信的小程序员们会在平时的Linux操作时会发现当我们创建一个文件夹时前面的硬链接数为2,而普通文件时硬链接数为1

问题:

为什么普通文件的硬链接数为1?

原因:

硬链接数是标识有几个硬链接指向该文件,而每个文件的文件名会与自己硬链接,所以** 每个文件创建时至少有一个硬链接数 **

问题:

那为什么文件夹的硬链接数为2呢??

原因:

我在Linux的常用指令 和 基础知识穿插巩固(巩固知识必看)-CSDN博客中就讲解过Windows和Linux下隐藏文件的命名规则,也就是在文件名最开始加入.,当我们进入一个文件夹后,我们可以输入ls -a,就会发现有如下的部分.,..

在这里插入图片描述

我们也都知道

  • .:代表当前路径
  • ..:代表上一级路径

而我们的目录中的所有文件对该目录下的其他文件操作时,就要进行操作 ./其他文件,所以一个目录中会有一个.代表该目录

这也就解释了为啥新建的目录的硬链接数是2啦~~

到这里我就要问聪明的你一个问题啦ε=ε=ε=(~ ̄▽ ̄ )~

  • 为什么在一个目录下创建了一个新目录后,该目录的硬链接数++了呢?(若该目录下只有一个目录,则该目录的硬链接数是3)

  • 答案:

    答案同之前一样,因为该目录里的这个新目录里有一个..,而这个..代表的就是该目录啦,所以硬链接数++

结语

问你一个问题哦,你可以在心里回答一下哦😉

  • 问题:你觉得制作一个自己的库和使用自己的库难吗?😋
  • 可是我要告诉你,当你看完并理解了这一篇文章,其实你已经可以学会去制作库了哦 (´▽`ʃ♡ƪ)
    • 想学的话大家可以去找找我的主页哦😉(如果没有,那就是我还在写,关注我,敬请期待哦)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1831383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024最新版Node.js下载安装及环境配置教程(非常详细)

一、进入官网地址下载安装包 官网:Node.js — Run JavaScript Everywhere 其他版本下载:Node.js — Download Node.js (nodejs.org) 选择对应你系统的Node.js版本 二、安装程序 (1)下载完成后,双击安装包&#xf…

小白Linux提权

1.脏牛提权 原因: 内存子系统处理写入复制时,发生内存条件竞争,任务执行顺序异常,可导致应用崩溃,进一步执行其他代码。get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态…

项目方案:社会视频资源整合接入汇聚系统解决方案(六)

目录 一、概述 1.1 应用背景 1.2 总体目标 1.3 设计原则 1.4 设计依据 1.5 术语解释 二、需求分析 2.1 政策分析 2.2 业务分析 2.3 系统需求 三、系统总体设计 3.1设计思路 3.2总体架构 3.3联网技术要求 四、视频整合及汇聚接入 4.1设计概述 4.2社会视频资源分类…

5G消息 x 政务 | 新型数智政务服务平台

5G消息 x 政务 | 新型数智政务服务平台 通过 5G 消息,帮助政府部门及公共事业部门优化服务品质、提高服务效能,打造现代政府的展示窗口、便民利企的服务窗口、营商环境的感知窗口,提供多元、透明、高效的线上政务服务。 5G消息 x 政务 —— 优…

新闻稿标题怎么写吸引人?建议收藏

一个好的标题,不仅能激发读者的好奇心,还能引导他们继续深入了解文章内容。本文伯乐网络传媒将为你揭秘新闻稿标题写作的十大技巧,让你轻松写出吸引人的标题。 1. 激发好奇心 a. 提出疑问:以问句的形式提出问题,让读者…

​1:25万基础电子地图(江西版)

我们在《50幅1:25万基础电子地图(四川版)》和《1:25基础电子地图(云南版)》等文中,为你分享过四川和云南的基础电子地图。 现在我们再为你分享江西的1:25万基础电子地图,你可以在文…

申请国外访问学者面签技巧有哪些?

申请国外访问学者面签是一项重要的步骤,关系到能否成功获得访问学者身份。以下是一些实用的面签技巧,帮助您顺利通过面试。 1.充分准备材料 成功的面签始于准备充分的材料。确保您的申请材料齐全,包括: 个人简历:突出…

Inpaint软件下载附加详细安装教程

​Inpaint是一款由Maxim Gapchenko开发的图像处理软件,它可以帮助用户轻松地去除图像中的水印和其他不需要的元素,这个软件的核心技术是基于图像处理算法的,它可以自动识别图片中的像素,并用周围的颜色进行替换,使得图…

新版FMEA培训内容中关于团队协作的部分可以怎么展开?

团队协作,作为新版FMEA的核心要素之一,其重要性不言而喻。在FMEA的分析过程中,团队成员的密切合作与沟通是确保分析全面性和准确性的关键。通过团队协作,不同领域的专家能够共同参与到潜在故障模式的识别、评估与预防中来&#xf…

Python 爬取淘宝指定搜索商品评论 标题 销量 计算sign

只需要替换原来的Cookie和token即可使用,自动计算对应链接地址的sign直接使用即可。需要注意是一个账号爬取过多会有验证码 import json import hashlib import random import timeimport pandas as pd import requestsresults []def fetch_review_list(datas, md…

MMpose安装实例

摘要: 这个大数据训练发展较快,各种版本问题,不太好匹配,仅是安装就会大费周章。本文图文并茂的描述了一种成功的安装方式。仅供参考。 使用的win版本是win11,英伟达显卡是GeForce GTX 1660 SUPER。 1.cuda版本选择 通…

学生用小台灯什么牌子的好?五大强劲护眼台灯牌子分享

在这个数码时代,人们对屏幕的依赖程度越来越高,尤其是孩子们。他们不仅在学校里需要长时间盯着教科书,还会在学习和娱乐中使用各种数码设备。然而,这也使得眼睛健康问题逐渐凸显,尤其是儿童近视的问题。为了保护视力&a…

基于MCU平台的HMI开发的性能优化与实战(上)

随着汽车座舱智能化的不断演进,车内显示设备的数量显著增加,从传统的仪表盘和中控屏扩展至空调控制、扶手、副驾驶区域以及抬头显示(HUD)等多样化的显示单元。为了有效支持这些功能单元,同时控制整车成本,越…

从WWDC 2023看苹果的未来:操作系统升级与AI技术的融合

引言 在2024年的WWDC(苹果全球开发者大会)上,苹果公司展示了一系列创新技术和产品,其中最引人注目的莫过于操作系统的升级与AI技术的深度融合。作为一个备受期待的发布会,WWDC不仅向我们展示了苹果在技术上的前瞻性布…

Python发送电子邮件的步骤流程?如何设置?

Python发送电子邮件如何实现自动化?邮件发送的方法? 无论是自动化通知、日常业务沟通,还是营销活动,Python都能为我们提供强大的支持。使用Python发送电子邮件不仅方便快捷,还可以自动化日常任务。AokSend将详细介绍使…

leetcode 1355 活动参与者(postgresql)

需求 表: Friends ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | | activity | varchar | ---------------------- id 是朋友的 id 和该表的主键 name 是朋友的名字 activity 是朋友参加的活动的名字 表: Activit…

利用CNN识别英文语音数字

问题总述 任何一个数字,都是由10个基数构成的,本任务目的是借助于机器来实现英文语音数字的识别。下面,利用语音特征提取技术和卷积神经网络模型,对英文语音数字进行识别以解决上述问题。 步骤一:提取音频文件的语音…

总结之Docker(四)——镜像修改非ROOT用户权限后生成新镜像并发布

Docker拉去目标镜像 docker pull redis:6.2.5如果出现拉去过程超时,或者连接失败。 添加镜像加速器,以阿里云为例,阿里云目前推广提供镜像加速器,需要登录。 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 生成…

有没有和ai聊天的软件?介绍这三款聊天软件

有没有和ai聊天的软件?在科技飞速发展的今天,人工智能(AI)已经渗透到我们生活的方方面面,其中AI聊天软件以其独特的魅力,赢得了越来越多用户的青睐。今天,我们就来一起探索三款智能聊天软件的功…

【Java】已解决:java.lang.NoSuchMethodError异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例 已解决java.lang.NoSuchMethodError异常 一、问题背景 java.lang.NoSuchMethodError异常是Java运行时环境中一个常见的错误,它通常发生在尝试调用一个不存在的方法时。这个异常通常不是…