linux link/symlink/unlink 硬连接和软连接介绍

article/2025/10/16 11:52:56

文章目录

  • 硬连接和软连接的区别
    • 硬连接
    • 软连接
  • 链接命令`ln`
    • `ln`指令参数含义
    • 例子
  • 硬链接函数`link()`
  • 符号链接函数`symlink()`
  • 解除链接函数`unlink()`

  • link/symlink/unlink函数头文件为#include <unistd.h>

硬连接和软连接的区别

硬连接

硬连接指通过索引节点来进行连接。

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。

在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。

其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软连接

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

链接命令ln

  • 当我们需要在不同的目录,用到相同的文件时,用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
  • ln -s 源文件 目标文件。为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,表示软连接(symbolic link)
  • ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
  • ln的链接有软链接 和硬链接两种,软链接就是ln -s 源文件 目标文件 ,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln 源文件 目标文件,没有参数-s,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
  • 不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁盘空间。

ln指令参数含义

  -f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时,将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式--help : 显示辅助说明--version : 显示版本

例子

创建了快捷方式S99QuecOpen_sarapp 指向了文件../init.d/QuecOpen_startapp
设置
查看

硬链接函数link()

  • 硬链接命令为ln,函数为link

int link(const char *oldpath, const char *newpath);

–参数*oldpath:已有的文件路径。

–参数*newpath:新建的硬链接文件路径。

–返回值:成功返回0,错误返回-1。

符号链接函数symlink()

  • 符号链接也叫软链接,symlink

int symlink(const char *oldpath, const char *newpath);

–参数*oldpath:已有的文件路径

–参数*newpath:新建的符号链接文件路径

–返回值:成功返回0,错误返回-1

解除链接函数unlink()

int unlink(const char *pathname);

–参数*pathname:链接文件的路径

–返回值:成功返回0,错误返回-1

– unlink指向软链接,删除软链接;指向最后一个硬链接,相当于删除文件


http://chatgpt.dhexx.cn/article/jIA9ACWS.shtml

相关文章

​2021-12-13 Android 的 init.rc 文件​里面的symlink,把<target>链接到目录<path>下。

一、symlink <target> <path>&#xff0c;把<target>链接到目录<path>下。 二、来看一下实际的例子 三、参考文章&#xff1a; Android 的 init.rc 文件简介 &#xff08;转&#xff09; - 陈wei的个人空间 - OSCHINA - 中文开源技…

pnpm安装使用教程以及pnpm node版本管理以及EPERM operation not permitted symlink问题解决

pnpm安装使用教程以及pnpm node版本管理以及EPERM operation not permitted symlink问题解决 pnpm&#xff1a;目前来看是一个大趋势&#xff0c;如&#xff1a;nest-cli目前除了npm、yarn增加了pnpm 优势&#xff1a;节约磁盘空间并提升安装速度&#xff08;改善node_modules…

Cannot create symlink/symbolic to `xxx': Operation not supported

1、Cannot create symlink to xxx: Operation not supported 在虚拟机的共享目录中&#xff0c;解压内核源码&#xff0c;试过了几种解压方法都报出如下错误&#xff1a; tar: linux-4.15/tools/testing/selftests/powerpc/vphn/vphn.h: Cannot create symlink to ../../../.…

Flutter报错Building with plugins requires symlink support的解决方法

错误 Building with plugins requires symlink support. Please enable Developer Mode in your system settings. Runstart ms-settings:developers to open settings. 原因 这个错误表示你的系统尚未启用开发者模式,所以无法使用Flutter的插件功能。 Flutter插件会通过符号…

硬链接,软链接,link,rename,symlink,opendir和readdir

什么是硬链接 struct stat {nlink_t st_nlink; /* Number of hard links};stat结构体就有一个成员变量----硬链接数 使用ln命令就可以创建硬链接 创建硬链接&#xff0c;就是再为文件创建一个名字 每创建一个硬链接&#xff0c;文件就多一个文件名&#xff0c;硬件链…

符号链接symlink_什么是符号链接或符号链接? 如何为Windows和Linux创建Symlink?

符号链接symlink Symbolic Links are also known as Symlinks. Symlinks are used to create a shortcut for a given file or folder. Symlinks are very useful for different purposes which also prevents copy the same data over and over again. In this tutorial, we w…

Visual Studio2019使用nmake编译调用libcurl库

编译 1.下载地址&#xff1a; curl downloads 我下载的是7.61.0 2.编译&#xff1a; 使用的是&#xff1a;VS2019 x64 本机工具命令提示&#xff0c;当然如果想编译成X86的库&#xff0c;可以选择VS2013 x86 本机工具命令提示或者VS2019 x64 兼容工具命令提示。 打开VS201…

cl.exe nmake.exe

1. 如果已经有vc6的dsp工程&#xff0c;可直接导出nmake脚本文件(.mak) “Project - Export Makefile...” nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" all nmake -f nMakeTest.mak CFG&q…

Windows环境下用nmake编译libevent

Windows环境下用nmake编译libevent 一、方法总结1) nmake 命令找不到2) 头文件找不到3) lib库找不到4) 不知道如何生成“print-winsock-errors.obj” 二、详细说明1、nmake 和 cl 命令2、各种头文件缺失3、lib 库无法打开4、“print-winsock-errors.obj” 三、结语 最近在将一个…

nmake、makefile、cmake学习笔记

1.nmake 1.1 nmake reference NMAKE.EXE是Visual Studio附带的一个命令行工具&#xff0c;它基于描述文件中包含的命令生成项目。 要使用NMAKE&#xff0c;必须在开发人员命令提示符窗口中运行它。开发人员命令提示符窗口为工具、库设置了环境变量&#xff0c;并包含在命令行…

cmake nmake qmake 的区别联系

&#x1f447;推荐关注&#x1f447; 经常记不住这几个概念&#xff0c;都看了几次了还是容易忘&#xff0c;为以后方面查阅&#xff0c;故而从知乎上复制粘贴过来。 1、gcc是GNU Compiler Collection&#xff08;就是GNU编译器套件&#xff09;&#xff0c;也可以简单认为是编…

VC++NMAKE

目 录 第1章 NMAKE 1 1.1 运行NMAKE 1 1.1.1 NMAKE的实质 2 1.2 描述块 3 1.2.1 定义 3 1.2.2 多个描述块 3 1.2.3 依赖 4 1.2.4 长文件名 4 1.2.5 多目标 4 1.2.6 合并 5 1.3 宏 5 1.3.1 定义、使用 5 1.3.2 作…

WINDOWS CMAKE与NMAKE

什么是cmake 你或许听过好几种 Make 工具&#xff0c;例如 GNU Make &#xff0c;QT 的 qmake &#xff0c;微软的 MSnmake&#xff0c;BSD Make&#xff08;pmake&#xff09;&#xff0c;Makepp&#xff0c;等等。这些 Make 工具遵循着不同的规范和标准&#xff0c;所执行的…

vs 编译nmake工程

以本人电脑为例&#xff1a; 1、将D:\program files\visual studio 2013\VC\bin这个路径添加到系统环境变量的path中 2、打开cmd的控制台命令行界面 输入nmake与cl来测试是否报错 3、编译make文件&#xff1a; cd到源文件所在目录&#xff0c;使用命令nmake /F *.nmake编译m…

nmake 环境变量配置

本农有3年多C/C开发经验,最近面试全部翻车,总结原因是基础知识不过关,于是最近在看C primer 5,配套的源代码编译没通过,原因是nmake需要配置环境变量,总结错误如下 1.找不到nmake命令 解决方法:找到nmake所在路径,我用的是vs2010,C:\Program Files (x86)\Microsoft Visual Stud…

nmake命令(windows下的makefile)

1. 如果已经有vc6的dsp工程&#xff0c;可直接导出nmake脚本文件(.mak) “Project - Export Makefile...” nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" all nmake -f nMakeTest.mak CFG&q…

nmake简介

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 nmake学习初步 前言一、nmake在哪里&#xff1f;二、Makefile编写1.hello.c实例代码2. Makefile3 扩展 前言 一直使用vs的IDE&#xff0c;最近编译sqlcipher时&#xff0c;发…

第八章 查询和检索:Query DSL

版权声明 本文为Elastic开源社区版权所有,保证独立性和原创性,未获得授权和允许,任何组织和个人不得以任何方式传播或复制或分享。否则必将追究法律责任。 知识内容输出不易,请尊重他人劳动成果。严禁随意传播、复制和盗用他人成果或文章内容用以商业或盈利目的! 1、查询…

mysql-dql(Data QueryLanguage)summary

1.基础查询 DESC 库名//查看库SHOW DATABASES ;//查看当前所在数据库SHOW TABLES;//查看当前库的所有表USE database;//datebase为需要查询的库名SELECT attribute,attribute2 FROM form;//从form中查询attribute,attribute2SELECT * FROM beauty;//查询表中所有属性SELECT DI…

db.query的使用

首先假设有如下表格&#xff0c;表格名称为&#xff1a;"Employees" SQL基本格式如下&#xff1a; [sql] view plain copy print ? select 列名称 from 表名称 最基本SQL语句&#xff0c;就是从表中选取要返回的列数据&#xff0c;不加任何过滤条件。当然如果&qu…