关于Linux软链你必须知道的实用知识点(非常详细)零基础入门到精通,收藏这一篇就够了

背景

Linux中的软链,是非常强大的工具,如果只是一知半解,在解决问题时一定会让你栽跟头或者浪费大量的时间。非常有必要提前掌握Linux软链的几个实用的知识点。

分析

软链是什么?

在Linux中,软链接(symbolic link)是一种特殊类型的文件,它包含另一个文件或目录的路径。软链接充当了指向目标文件或目录的符号,而不是实际的数据。创建软链接可以让用户在不移动或复制实际文件的情况下引用其他文件或目录,从而提供了一种灵活的方式来管理文件系统。

简单理解,软链类似于Windows的快捷方式。但是Linux中的软链比Windows的快捷方式好用多了。

软链有哪些常见用途

  1. 管理文件版本:软链接可用于管理文件的不同版本。通过创建指向不同版本的软链接,用户可以轻松地切换或管理文件的不同变体。

  2. 创建快捷方式:软链接可以用作创建文件或目录的快捷方式。用户可以在不同位置创建软链接,以便更方便地访问需要频繁使用的文件或目录。

  3. 跨目录引用:软链接可以用于跨越不同目录结构引用文件或目录。这对于在多个位置使用相同文件或目录而不复制实际数据非常有用。

  4. 系统管理:在系统管理中,软链接可以用于将特定配置文件放置在一个位置,并将其链接到系统的不同部分,从而实现集中管理和共享配置文件。

  5. 软件安装与升级:在软件安装或升级过程中,软链接常常用于链接到新版本的软件,以便在旧版本和新版本之间进行无缝切换。

  6. 运维管理:当一个目录或文件占用大量磁盘的时候,我们会将一个目录或文件移到一个大磁盘里。为了不修改原有程序使用原来的绝对路径,我们只需要把目录或文件移走后,在原先位置创建一个指向新路径的软链即可。

了解了软链的概念和使用场景后,我们对软链就有了一个整体的认识。

下面要具体分享一下关于软链的一些非常实用的知识点。

1.创建软链

ln -s {目标文件或目录} 软链文件名

-s 此参数用于创建软链。如果不加此参数,那创建的是硬链。

硬链文件等同于文件本身,操作硬链文件就是操作原文件,删除硬链文件等同于删除了原文件, 所以要小心操作。而软链则是一个新的符号文件,指向了原文件,删除软链文件不会删除原文件,修改软链文件等同于修改了原文件。

所以软链和硬链的差别,需要注意。

如上图所示,demo为原文件,dhardlink为硬链文件,指向demo,而dlink文件为软链文件,也指向demo。

硬链文件和源文件除了名字不一样外,其他完全一样。而软链则不一样。最左边的一列中,软链开头的是l,而 原文件是-(目录则是d)。

软链文件在文件的权限、引用数1、文件大小4以及文件名展示方式都不一样,很好辨别。

再使用inode文件节点值来看:

ls -li

最左边展示的是文件的inode值。这个值是文件的身份证号,是唯一的标识。

可以看到,demo和dhardlink是一样的inode值,而dlink是不一样的。这也能说明软链是一个新文件。

如果你想使用cat等命令查看软链文件的内容,是什么也看不到的。

2.覆盖软链

如果软链已经存在,直接创建文件会报错。

我们已经了解到,软链就是一个独立的文件。如果文件已经存在,直接创建肯定是会提示已存在的。

而软链作为一个特殊的文件,只是起到一个指引的作用。所以如果软链已经存在,我们并不想麻烦的判断,直接覆盖即可。覆盖使用f参数即可。

ln -sf {目标文件} {软链文件}

3.必要时使用硬链

硬链是文件系统中的实际物理链接,它们指向相同的inode,因此无论哪一个被修改,另一个也会随之改变。当你需要创建一个链接,使得文件在文件系统中的不同位置都可以通过不同的路径访问时,可以使用硬链。硬链不能跨越不同的文件系统,因为inode只在同一文件系统内部唯一。

而软链恰恰相反,使用软链时一般是为了保持不调整路径,维护之前的路径场景下使用。比如原始文件或目录被移动后,为了不修改其他代码而继续正常运行,可以使用软链来解决。软链是一个特殊的文件,其中包含着指向另一个文件的路径。软链可以跨越不同的文件系统,因为它们只是简单地存储了目标文件的路径。

4.判断是软链还是文件

有时候要基于文件是软链还是常规的文件还是目录,需要进行区分,以进行不同的处理。

人工判断,使用ls -l命令,观察最左边的标志即可,-为常规文件,l为软链,d为目录。硬链文件就是原文件。

而如果要用shell脚本判断,就需要进行测试了。

在条件判断时,-f判断常规文件,-L或-h判断软链文件,-d判断目录文件。

下面是示例:

if [ -f “file_path” ]; then

echo "This is a regular file."

fi

if [ -h “file_path” ]; then

echo "This is a symbolic link."

fi

if [ -d “directory_path” ]; then

echo "This is a directory."

fi

5.确定软链指向的目标文件

要判断软链指向的实际目录,我们在前面说了,用cat等命令直接读取文件内容是空的。我们要使用readlink命令。readlink命令会输出软链接指向的实际目录或文件。

readlink {软链文件}

如果软链文件本身不存在,readlink命令会返回空。如果存在,则返回目标文件的路径,不管目标文件本身是否存在。

如果软链目录文件不存在,使用ll或ls -l查看时会有特殊的提示,比如闪烁。当目标文件建立后就不再闪烁了。

总结

软链的使用,看似简单,实则有很多需要了解的地方。如果掌握了,在今后的使用上会如鱼得水。否则在遇到一些问题时就不知道如何简单优雅的解决问题了,甚至都不知道怎么解决。


在喧嚣的世界里,能沉下心看完,非常难能可贵,谢谢您的品读。
喜欢就点赞关注吧,可以第一时间收到最新分享哦,让我们一起成长为大咖吧。

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CALayer-CALayer的基本属性 Objective-C语言】

一、接下来,我们来说这个Layer啊, 1.首先,Layer能接触到的,就是我们之前说截图啊,就是我们self.view里面,有一个layer属性, [self.view.layer renderInContext:(CGContextRef t)]; 那个里面,有一个layer属性,然后呢,是CALayer类型的, 接下来,我们就来学习一…

帆软报表点击表格给数据集传递参数案例

一、效果 有四个模块,分别是采购总金额,采购总数量,采购合同数量,采购合同申请数量通过点击单元格上的月份,展示不同的月份数据,进行单元格和表格之间的联动 二、准备好数据库表和展示数据内容 2.1 建表 …

【Java EE】网络原理——HTTP响应

目录 1.认识“状态码”(status code) 1.1 200 OK 1.2 404 Not Found 1.3 403 Forbodden 1.4 Method Not Allowed 1.5 Internal Sever Error 1.6 504 Gsteway Timeout 1.7 Move temporarily 1.8 Moved Permanently 1.9状态码小结 2.认识响应“报…

c语言 分而治之(施特拉森矩阵乘法)

给定两个大小分别为 nxn 的方阵 A 和 B&#xff0c;求它们的乘法矩阵。 朴素方法&#xff1a;以下是两个矩阵相乘的简单方法。 void multiply(int A[][N], int B[][N], int C[][N]) { for (int i 0; i < N; i) { for (int j 0; j < N; j) { …

【Python特征工程系列】利用SHAP进行特征重要性分析-决策树模型为例(案例+源码)

这是我的第290篇原创文章。 一、引言 SHAP 属于模型事后解释的方法&#xff0c;它的核心思想是计算特征对模型输出的边际贡献&#xff0c;再从全局和局部两个层面对“黑盒模型”进行解释。SHAP构建一个加性的解释模型&#xff0c;所有的特征都视为“贡献者”。 对于每个预测样…

北京证券公司港股通交易佣金手续费最低是多少?万0.8?港股通纳入规则是怎么样的?

港股通交易佣金概述 港股通的交易佣金可能会因证券公司和投资者的不同而有所差异。 北京证券公司的港股通交易佣金最低可能万分之零点八&#xff08;0.008%&#xff09;&#xff0c;但这需要投资者与证券公司客户经理了解&#xff0c;进行沟通和申请。 一般来说&#xff0c;…

树莓派部署harbor_arm64

文章目录 树莓派4b部署Harbor-arm64版本docker-compose维护命令访问harbor 192.168.1.111认用户名密码admin/Harbor12345 树莓派4b部署Harbor-arm64版本 harbor-arm版本 部署&#xff1a;参考 wget https://github.com/hzliangbin/harbor-arm64/releases/download/v1.9.3/ha…

常用压力、流量单位换算表

一、压力为单位面积所承受的力 压力&#xff1a;绝对压力 、表压力 、大气压力。相互关系&#xff1a;绝对压力表压力大气压力 绝对压力:当压力表示与完全真空的差。测量处的实际压力。 表压力:当表示其气体数值与该地域大气压力的差值。 大气压力&#xff1a;由大气重量所…

网吧|基于SprinBoot+vue的网吧管理系统(源码+数据库+文档)

网吧管理系统 目录 基于SprinBootvue的网吧管理系统 一、前言 二、系统设计 三、系统功能设计 1 管理员功能模块 2 网管功能模块 3 会员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#…

Docker搭建FRP内网穿透服务器

使用Docker搭建一个frp内网穿透 在现代网络环境中&#xff0c;由于防火墙和NAT等原因&#xff0c;内网设备无法直接被外网访问。FRP (Fast Reverse Proxy) 是一款非常流行的内网穿透工具&#xff0c;它能够帮助我们将内网服务暴露给外网。本文将介绍如何在Linux服务器上使用Do…

LitCTF2023

[LitCTF 2023]enbase64 base 64 里面有一个换表的函数 写代码 #include<stdio.h> #include<string.h> #include<stdlib.h> int main() {char *result; char Destination[65]; int v3[65];int j;int i; char Source[]"ABCDEFGHIJKLMNOPQRSTUVWXYZabcde…

多线程新手村3--多线程代码案例

1.1 单例模式 单例模式是设计模式中非常经典的一种。那么有同学肯定就会好奇了&#xff0c;什么是设计模式呢&#xff1f; 设计模式简单的说就是程序员的“棋谱”&#xff0c;我们下象棋时肯定或多或少都背过棋谱&#xff0c;例如当头炮、马后炮等&#xff0c;设计模式也是这…

防火墙技术基础篇:基于Ensp配置防火墙NAT server(服务器映射)

配置防火墙NAT server(服务器映射) 什么是NAT Server (服务器映射) NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是一种允许多个设备共享一个公共IP地址的技术。NAT Server&#xff0c;也称为服务器映射&#xff0c;是NAT技术中的一种应…

Windows找出权限维持的后门

Windows权限维持主要包含活动隐藏、自启动等技术。 隐藏文件 利用文件属性 最简单的一种隐藏文件的方式&#xff0c;文件右键属性&#xff0c;勾选隐藏&#xff0c;点击确定后&#xff0c;在这个文件里看不到刚刚的文件了。 如果要让文件显示出来&#xff0c;就点击查看&…

经典文献阅读之--SMERF(通过标清导航地图增强车道感知和拓扑理解)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&#xff0c;并附带200G…

目标检测——家庭日常用品数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

给pdf加水印,python实现

from PyPDF2 import PdfReader, PdfWriterdef add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out):"""把水印添加到pdf中"""pdf_output PdfWriter()input_stream open(pdf_file_in, rb)pdf_input PdfReader(input_stream, strictFalse…

Linux java jni调用C++封装动态库

由于项目中java需要调用第三方提供的C动态库&#xff1b;由于第三方动态库传入的参数较多&#xff0c;还伴随着指针传入操作&#xff0c;导致java调用极为不便&#xff01;因此催生出对于第三方的C动态库进行二次封装。java调用只需按结构传入一个结构化的string即可。话不多说…

河南道路与桥梁乙级资质升级门槛条件解读

河南道路与桥梁乙级资质升级门槛条件解读如下&#xff1a; 一、企业基本条件 法人资格&#xff1a; 企业需具备独立企业法人资格&#xff0c;能够独立承担民事责任。注册资金&#xff1a; 企业的注册资金应不少于100万元人民币&#xff0c;这一数字直接体现了企业的经济实力和…

Python自然语言处理(NLP)库之NLTK使用详解

概要 自然语言处理(NLP)是人工智能和计算机科学中的一个重要领域,涉及对人类语言的计算机理解和处理。Python的自然语言工具包(NLTK,Natural Language Toolkit)是一个功能强大的NLP库,提供了丰富的工具和数据集,帮助开发者进行各种NLP任务,如分词、词性标注、命名实体…