在Linux中,在命令行上工作时,需要在文件之间创建链接,将文件名与文件数据相关联。这可以使用名为 ln 的专用命令来实现。

什么是链接?

在讨论 ln 命令之前,让我们先讨论一下链接命令,什么是链接,以及它与我们所知道的文件的关系。

链接是文件系统中的一个条目,它将文件名连接到磁盘上的实际数据字节。 多个文件名可以“链接”到相同的数据。

Linux ln 命令

ln 命令用于创建文件或目录的链接。 (“ln”是“link”的缩写。)该命令提供给Linux命令行(也称为shell),可以使用终端窗口打开和操作。 它是最重要和最常用的终端命令之一,可用于创建软链接或硬链接。

ln 的基本语法是

ln [选项] 目标链接

或者

ln [选项] 目标 [目录]

默认情况下,ln 创建硬链接,它们只是现有文件的附加名称。硬链接不能指向目录,也不能跨越文件系统和分区边界。

访问 man ln 页面或在终端中键入 man ln 以获取有关 ln 命令的更多信息。

ln选项:

什么是软链接和硬链接?

如果你想充分利用 ln 命令,你需要知道软链接和硬链接之间的区别。

软链接也称为符号链接,是指向文件或目录的交叉引用。在 Windows 中,软链接类似于快捷方式。它是指向不可直接访问的文件或位置的指针。如果移动或删除原始文件,则不再有目标,链接将一无所获。

硬链接是原始文件的镜像副本,它有自己的目录条目。硬链接与 Linux 中的特殊内部簿记密切相关。每个硬链接都指向一个 inode,并被分配一个唯一的 inode 编号,该编号与分配给原始文件的编号相同。

如何使用 ln 创建硬链接?

没有任何参数情况下,默认ln命令生成硬链接。

ln file1 link1

如果提供了两个文件名作为参数,则 ln 使用第二个文件名,假设它不是现有文件的名称,作为指向第一个文件的硬链接的名称。因此,例如,以下将创建一个名为 link1 的链接到名为 file1 的文件:

虽然硬链接是操作系统工作方式的重要组成部分,但软链接通常更方便。

如何使用 ln 创建软/符号链接?

ln 的几个选项中最有用的是 -s,它会导致它创建一个符号链接,也称为软链接,而不是硬链接。与硬链接相比,符号链接有几个优点,包括跨越文件系统和分区边界的能力。此外,对原始文件所做的任何更改也会自动对链接进行,反之亦然。


20220417文件是一个软/符号链接,由它的天蓝色文本颜色确认。

如何使 ln 删除现有的同名目标文件

默认情况下,如果目标目录中已存在同名文件,ln 不会让您创建链接。但是,如果需要,可以使用 -f 命令行选项使 ln 覆盖此行为。


使用 -f (–force) 选项重写符号链接的目标路径。

Linux 下ln 命令 C/C++代码实现

int main(int argc, char *argv[])
{struct stat sb;int ch, exitval;char *sourcedir;while ((ch = getopt(argc, argv, "finsv")) != -1)switch (ch) {case 'f':fflag = 1;iflag = 0;break;case 'n':hflag = 1;break;case 'i':iflag = 1;fflag = 0;break;case 's':sflag = 1;break;case 'v':               vflag = 1;break;case '?':default:usage();}argv += optind;argc -= optind;if (sflag) {linkf  = symlink;linkch = '-';} else {linkf  = link;linkch = '=';}switch(argc) {case 0:usage();case 1:              /* ln target */exit(linkit(argv[0], ".", 1));case 2:              /* ln target source */exit(linkit(argv[0], argv[1], 0));}/* ln target1 target2 目录 */sourcedir = argv[argc - 1];if (hflag && lstat(sourcedir, &sb) == 0 && S_ISLNK(sb.st_mode)){errno = ENOTDIR;err(EXIT_FAILURE, "%s", sourcedir);}if (stat(sourcedir, &sb)) {err(EXIT_FAILURE, "%s", sourcedir);}if (!S_ISDIR(sb.st_mode)){usage();}for (exitval = 0; *argv != sourcedir; ++argv)exitval |= linkit(*argv, sourcedir, 1);exit(exitval);
}

编译运行:

总结

ln 是一个用于将文件链接在一起的命令行工具。 ln 命令默认生成硬链接。使用 -s (–symbolic) 选项建立符号连接。

欢迎关注微信公众号【程序猿编码】,需要ln 命令完整源码的添加本人微信号(c17865354792)

Linux ln 命令是什么?C/C++代码实现相关推荐

  1. Linux ln命令、软链接和硬链接的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接. 当 ...

  2. 删除 linux的ln文件夹,详解Linux ln 命令

    Linux 中的文件分为 Hard Link 和 Symbolic Link 两种.Hard Link 文件又被称为硬链接文件.实体链接文件,Symbolic Link 文件则常被称为符号链接.软链接 ...

  3. Linux ln -s目录,Linux ln 命令的使用

    1.命令简介 ln 命令用来为文件创建链接,分为硬链接(hard link)和软链接(符号链接,symbolic link)两种,默认创建硬连接,如果要创建软链接须使用 -s 选项.本文介绍的是 GN ...

  4. Linux ln命令详解及使用

    Linux ln命令详解及使用 ln是linux中一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 1. ...

  5. linux ln 文件夹,Linux ln 命令

    Linux ln 命令 Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接. 当我们需要在不同的目录,用到相同的文件时,我 ...

  6. linux ln 命令使用参数详解(ln -s 软链接)

    http://www.jb51.net/LINUXjishu/150570.html 这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命 ...

  7. linux软链接命令,linux ln 命令使用参数详解(ln -s 软链接)

    软连接(softlink)也称符号链接.linux里的软连接文件就类似于windows系统中的快捷方式.软连接文件实际上是一个特殊的文件,文件类型是I.软连接文件实际上可以理解为一个文本文件,这个文件 ...

  8. Linux系统ln -s命令,详解Linux ln 命令

    Linux 中的文件分为 Hard Link 和 Symbolic Link 两种.Hard Link 文件又被称为硬链接文件.实体链接文件,Symbolic Link 文件则常被称为符号链接.软链接 ...

  9. linux ln -sv命令,linux ln 命令详解

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件. 当我们需要在不同的目 ...

最新文章

  1. CSS完美兼容IE6/IE7/IE8/IE9/IE10的通用方法
  2. php7-fpm webtatic,如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
  3. 关于条件随机场的一些补充
  4. 前途无量的MEMS传感器
  5. STM32F030控制蜂鸣器定时响和控制LED亮
  6. 汇编语言运算符优先级
  7. java jsoup解析html标签_Java中使用 jsoup 提取本地HTML页面的标签内容
  8. 二十八、Java中的Int和Integer的区别
  9. OJ 169 Majority Element
  10. leetcode520. py解字符串真是太残暴了
  11. getReadableDatabase VS getWritableDatabase
  12. OpenGL环境配置(超全整合版)
  13. 基于android的电影院订票影院售票系统app
  14. 全国身份证号码归属地表格
  15. STM32LED--基于HAL库(LCD与LED冲突?一文看懂如何精准劝架)
  16. 完全平方数-xdoj
  17. SHIMANO各个等级配件的区别
  18. 我的十年 谨以此文迎接我即将到来的三十而立
  19. 【技巧】只改变word背景颜色,并保持其他软件背景颜色不变
  20. java 实现文件内容的加密和解密

热门文章

  1. 【金猿信创展】数新网络——国内云数智操作系统信创领导者
  2. 手机连接服务器数据库文件,手机连接服务器数据库文件在哪里
  3. Django快速入门教程
  4. 关于Descriptors cannot not be created directly报错
  5. 天勤python_天勤量化策略库:R-Breaker策略(难度:初级)
  6. 计算机毕业设计(附源码)python智慧医疗系统
  7. 洛谷题单难题总结——数组
  8. android 手机开门,1号社区APP"手机开不了门后的处理流程"
  9. php是一种什么脚本语言
  10. 沟通的艺术:看人入里,看出人外 - part 3