Linux—ln(link files)命令使用方法(How to create links on Linux)

Linux—ln(link files)命令使用方法

在 Linux 系统中工作时,需要在不同的目录中使用相同的文件时不必在每个目录下都复制一份文件,这样不仅浪费磁盘空间,还会导致文件管理上的混乱。

在这里插入图片描述
ln(link files) 便是 Linux 中用于创建链接(也称为快捷方式)的命令。 使用 ln 命令创建链接是一种高效且节省空间的方法。

ln命令可以实现—将文件放在一个固定的目录中,然后在其他目录下创建指向该文件的链接。

链接link可以分为两种类型:硬链接(hard link)和软链接(symbolic link 或者 soft link)。


一、硬链接 (Hard Link)

定义:

  • 硬链接(hard link指向同一个文件系统中的同一个 inode 的多个文件名。注意哈同一文件系统!!! A hardlink can only work on the same filesystem.🤣🤣🤣
  • 每个文件在Linux系统中都有一个inode,包含了文件的所有信息(除了文件名和数据)。

在这里插入图片描述

  • 每个硬链接(Hard Link)都是文件的一个独立入口点,它们共享相同的数据块。

  • 创建一个硬链接时,实际上是为这个inode创建了一个新的入口点。

在这里插入图片描述

  • Hardlink has the same inode number and permissions of original file.
  • 即使原始文件被删除,只要还有一个硬链接存在,文件的数据就仍然可以访问。
  • Hard Link Demo:
    在这里插入图片描述

Hard Link 特性:

  • 共享数据:所有硬链接都指向同一个文件内容,对任何一个硬链接进行修改,其他硬链接也会看到这些更改。
    在这里插入图片描述
  • 删除原文件删除原文件不会影响其他硬链接硬链接是平等的,没有所谓的“原文件”,只要还有一个硬链接存在,文件的数据就仍然可以访问。
  • 限制硬链接不能跨文件系统创建,也不能为目录创建硬链接。(记住哈:hard link— 必须同一文件系统 + no 目录🤣🤣🤣)
    在这里插入图片描述

二、软链接 (Symbolic Link 或 Soft Link)

定义:

  • 软链接是一个特殊的文件,其中包含指向另一个文件或目录的路径

在这里插入图片描述

  • 软链接本身是一个独立的文件,只是其内容是指向另一个文件或目录的路径
  • Softlink has different inode number and file permissions than original file.
  • Softlink Demo:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


Soft link特性:

  • 独立性软链接是一个独立的文件,即使原始文件被删除,软链接仍然存在,但会变成无效链接(称为“断链”)。

在这里插入图片描述

  • 跨文件系统软链接可以跨文件系统创建,也可以指向目录。

在这里插入图片描述

  • 路径:软链接可以使用绝对路径或相对路径。

三、创建、删除link语法

3.1 硬链接

ln [选项] 目标文件 链接文件
  • -f--force:如果目标文件已经存在,则先删除再创建链接。
  • -i:在删除已存在的目标文件前提示用户。
  • -v--verbose:显示详细的处理信息。

  1. 创建硬链接(可以相对路径 也可绝对路径哈🤣🤣🤣)

在这里插入图片描述

已有文件 /home/user/documents/report.txt,在 /home/user/backup 目录下创建一个硬链接 report_link.txt

ln /home/user/documents/report.txt /home/user/backup/report_link.txt
  1. 强制创建硬链接(如果目标文件已存在则替换):

    ln -f /home/user/documents/report.txt /home/user/backup/report_link.txt
    
  2. 创建硬链接并显示详细信息

    ln -v /home/user/documents/report.txt /home/user/backup/report_link.txt
    

重要的事情说三遍🤣🤣🤣:

  • 硬链接必须在同一个文件系统内:硬链接不能跨文件系统创建。
  • 硬链接不能指向目录:只能为普通文件创建硬链接。
  • 硬链接是平等的:所有硬链接都指向同一个 inode,因此删除任意一个硬链接都不会影响其他硬链接或原始文件。

Tips可以使用 ls -i 命令查看文件的 inode 号,从而确认两个文件是否为硬链接

如果两个文件的 inode 号相同,那么它们就是硬链接。
在这里插入图片描述


3.2 软链接

ln -s [选项] 目标文件 链接文件
  • -f--force:如果目标文件已经存在,则先删除再创建链接。
  • -i:在删除已存在的目标文件前提示用户。
  • -v--verbose:显示详细的处理信息。
  1. 创建软链接

在这里插入图片描述

/home/user/documents/report.txt,在 /home/user/backup 目录下创建一个软链接 report_symlink.txt

ln -s /home/user/documents/report.txt /home/user/backup/report_symlink.txt
  1. 强制创建软链接(如果目标文件已存在则替换):

    ln -sf /home/user/documents/report.txt /home/user/backup/report_symlink.txt
    
  2. 创建软链接并显示详细信息

    ln -sv /home/user/documents/report.txt /home/user/backup/report_symlink.txt
    

重要的事情说三遍🤣🤣🤣:

  • 软链接可以跨文件系统:符号链接可以指向不同文件系统中的文件或目录。
  • 软链接可以指向目录:不仅可以为文件创建软链接,还可以为目录创建软链接。

在这里插入图片描述

  • 软链接的路径:可以使用绝对路径或相对路径。相对路径是相对于软链接所在目录的路径。

Tips:可以使用 ls -l 命令查看文件的详细信息,从而确认是否为软链接及其指向的目标:

ls -l /home/user/backup/report_symlink.txt
lrwxrwxrwx 1 user user 27 Oct 25 14:30 /home/user/backup/report_symlink.txt -> /home/user/documents/report.txt

l 表示这是一个符号链接,-> 后面的部分表示链接指向的目标文件。


3.3 删除link

使用 rm 命令

rm 是一个通用的删除命令,可以用来删除文件、目录和链接。对于删除链接,rm 命令是最常用的。
语法:

rm [选项] 链接路径

删除符号链接 symlink.txt 和一个硬链接 hardlink.txt

rm symlink.txt
rm hardlink.txt
使用 unlink 命令

unlink 命令专门用于删除链接。它的功能与 rm 命令类似,但更专注于删除单个文件或链接。

unlink 链接路径
unlink symlink.txt
unlink hardlink.txt
  1. 通用性

    • rm 是一个更通用的命令,可以删除文件、目录和链接。
    • unlink 专门用于删除单个文件或链接。
  2. 交互性

    • rm 命令提供了更多的选项,例如 -i 选项可以在删除前提示用户确认。
    • unlink 命令没有这些额外的选项,它只是一个简单的删除操作。
  3. 安全性

    • 使用 rm 时,可以通过 -i 选项增加安全性,防止误删文件。
    • unlink 没有这种选项,因此在使用时需要更加小心。
  • 推荐使用 rm 命令,因为它更常用,功能更丰富,尤其是在需要增加安全性的场景下。
  • 如果只需要简单地删除一个链接,可以使用 unlink 命令。

tips:无论使用哪个命令,删除链接后,链接文件本身会被移除,但硬链接对应的原始文件不会受到影响(除非这是最后一个硬链接)。对于符号链接,删除后只会移除链接文件,不会影响原始文件。


Link Tips:

  • 节省磁盘空间:无论是硬链接还是软链接,都不会复制原文件的内容,只占用非常少量的磁盘空间。
  • 易于维护:只需要在一个地方更新文件,所有链接都会自动反映这些更改。
  • 灵活性:软链接特别灵活,可以跨文件系统创建,也可以指向目录。

整理不易,列位多多支持,求点赞、求收藏、求评论 谢谢啦🤣🤣🤣~

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

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

相关文章

RecyclerView详解——(四)缓存复用机制

稍微看了下源码和部分文章,在此做个小小的总结 RecyclerView,意思为可回收的view,那么相对于listview,他的缓存复用肯定是一大优化。 具体而言,当一个列表项被移出屏幕后,RecyclerView并不会销毁其视图&a…

vulhub之log4j

Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645) 漏洞简介 Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。 Apache Log4j 在应用程序中添加日志记录最…

(附项目源码)Java开发语言,215 springboot 大学生爱心互助代购网站,计算机毕设程序开发+文案(LW+PPT)

摘 要 在网络信息的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,企业只能以用户为导向,按品种分类规划,以产品的持续创新作为企业最重要的竞…

IDEA旗舰版编辑器器快速⼊门(笔记)

简介:javaweb开发必备软件之IDEA期间版介绍 DEA编辑器器版本介绍 官⽹网:https://www.jetbrains.com/地址:https://www.jetbrains.com/idea/download/#sectionmac DEA 分社区版(Community) 和 旗舰版(Ultimate),我们做JavaWeb开…

【C++之STL】摸清 string 的模拟实现(上)

文章目录 1. 为什么要模拟实现?2. 基本框架搭建3. 构造函数3. 1 默认构造/from c_str3. 2 拷贝构造3. 2. 1 深浅拷贝 3. 3 fill3. 4 迭代器区间构造 4. 容量操作4. 1 size()和capacity()和empty()4. 2 clear()4. 3 resize()4. 4 reserve() 1. 为什么要模拟实现&…

Docker: ubuntu系统下Docker的安装

安装依赖 操作系统版本 Ubuntu Kinetic 22.10Ubuntu Jammy 24.04 (LTS)Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS) CPU架构支持 ARMx86_64 查看我们的系统版本信息 uname -a通过该命令查得cpu架构是x86_64的; cat /etc/*re…

vue2+3 —— Day5/6

自定义指令 自定义指令 需求&#xff1a;当页面加载时&#xff0c;让元素获取焦点&#xff08;一进页面&#xff0c;输入框就获取焦点&#xff09; 常规操作&#xff1a;操作dom “dom元素.focus()” 获取dom元素还要用ref 和 $refs <input ref"inp" type&quo…

如何确保爬取的数据准确性和完整性?

在数据驱动的业务环境中&#xff0c;爬虫程序的准确性和完整性至关重要。本文将探讨如何使用Java编写爬虫程序&#xff0c;并确保其在爬取数据时的准确性和完整性。 1. 精确的HTML解析 确保数据准确性的第一步是精确地解析HTML。Jsoup是Java中常用的HTML解析库&#xff0c;它提…

关于Web Component

2024年8月14日 引言 Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用&#xff0c;并且可以做到无框架跨框架。 不同于 Vue…

【MySql】实验十六 综合练习:图书管理系统数据库结构

文章目录 创建图书管理系统数据库结构一、创建数据表1.1 book表1.2 reader表1.3 borrow表 二、插入示例数据2.1 向book表插入数据2.2 向reader表插入数据2.3 向borrow表插入数据 三、查询操作3.1 根据语义为借书表borrow的bno列和 rno列建立外键3.2 查询张小海编写的“数据库原…

AutoDL部署视觉大模型llama3.2-vision,从视频中寻找特定目标

注&#xff1a; windows11系统。示例为此项目&#xff1a;https://github.com/win4r/VideoFinder-Llama3.2-vision-Ollama 在当今的人工智能领域&#xff0c;深度学习模型的计算需求日益增长&#xff0c;特别是在处理复杂的视觉任务时&#xff0c;强大的算力往往是实现高效应用…

SHELL笔记(条件测试)

基本概念&#xff1a; 条件测试用于在 Shell 脚本中对各种条件进行判断&#xff0c;根据判断结果来决定是否执行特定的命令或代码块。条件测试可以用于比较数值、字符串&#xff0c;检查文件或目录的属性&#xff0c;以及判断命令的执行结果等。 格式&#xff1a; 格式1&…

JDK、MAVEN与IDEA的安装与配置

1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境&#xff0c;使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载&#xff1a; MAVEN下载传送…

微信小程序-prettier 格式化

一.安装prettier插件 二.配置开发者工具的设置 配置如下代码在setting.json里&#xff1a; "editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","prettier.documentSelectors": ["**/*.wxml"…

【Mac】未能完成该操作 Unable to locate a Java Runtime

重生之我做完产品经理之后回来学习Data Mining Mac打开weka.jar报错"未能完成该操作 Unable to locate a Java Runtime" 1. 打开终端执行 java -version 指令&#xff0c;原来是没安装 JDK 环境 yyzccnn-mac ~ % java -version The operation couldn’t be comple…

【ArcGIS微课1000例】0127:计算城市之间的距离

本文讲述,在ArcGIS中,计算城市(以地级城市为例)之间的距离,效果如下图所示: 一、数据准备 加载配套实验数据包中的地级市和行政区划矢量数据(订阅专栏后,从私信查收数据),如下图所示: 二、计算距离 1. 计算邻近表 ArcGIS提供了计算点和另外点之间距离的工具:分析…

【WPF】Prism学习(五)

Prism Commands 1.错误处理&#xff08;Error Handling&#xff09; Prism 9 为所有的命令&#xff08;包含AsyncDelegateCommand&#xff09;提供了更好的错误处理。 避免用try/catch包装每一个方法根据不同遇到的异常类型来提供特定的逻辑处理可以在多个命令之间共享错误处…

【element-tiptap】Tiptap编辑器核心概念----结构篇

core-concepts 前言&#xff1a;这篇文章来介绍一下 Tiptap 编辑器的一些核心概念 &#xff08;一&#xff09;结构 1、 Schemas 定义文档组成方式。一个文档就是标题、段落以及其他的节点组成的一棵树。 每一个 ProseMirror 的文档都有一个与之相关联的 schema&#xff0c;…

2024.6使用 UMLS 集成的基于 CNN 的文本索引增强医学图像检索

Enhancing Medical Image Retrieval with UMLS-Integrated CNN-Based Text Indexing 问题 医疗图像检索中&#xff0c;图像与相关文本的一致性问题&#xff0c;如患者有病症但影像可能无明显异常&#xff0c;影响图像检索系统准确性。传统的基于文本的医学图像检索&#xff0…

初识Linux · 信号处理 · 续

目录 前言&#xff1a; 可重入函数 重谈进程等待和优化 前言&#xff1a; 在前文&#xff0c;我们已经介绍了信号产生&#xff0c;信号保存&#xff0c;信号处理的主题内容&#xff0c;本文作为信号处理的续篇&#xff0c;主要是介绍一些不那么重要的内容&#xff0c;第一个…