命令介绍:

ln是linux中又一个非常重要命令,ln是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

命令格式:

ln 【参数】【源文件】【目标文件】

命令功能:

Linux文件系统中,有所谓的链接(link),而链接又可分为两种:

硬链接(hardlink): 硬链接指通过索引节点(Inode)来进行连接。在Linux中,多个文件名指向同一索引节点是存在的;一般这种连接就是硬链接。

小结:硬链接文件是具有相同inode节点号的不同文件;

删除硬链接文件或者删除源文件之一,文件实体并未被删除;

只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除;

当所有的硬链接文件及源文件被删除后,文件的数据块及目录的链接才会被释放,或磁盘fsck检查的时候;也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除;

硬链接文件是文件的又一个入口;

可以通过给文件设置硬链接文件,来防止重要文件被误删;

通过执行命令“ln 【源文件】【硬链接文件】”,即可完成创建硬链接;

硬链接的删除“rm -f 硬链接文件”。

软链接(symboliclink): 软链接也称之为符号链接(Symbolic Link)。在Linux中软链接文件类似于Windows的快捷方式。它实际上是一个特殊的文件。

小结:软链接以路径的形式存在,类似于Windows操作系统中的快捷方式;

删除源文件,软链接文件依然存在,但是无法访问指向的路径内容;

执行命令“ln -s 源文件软链接文件”,即可完成创建软链接;

软链接可以对目录进行链接;

软链接和源文件是不同类型的文件也是不同的文件,inode号不同;

软链接的删除“rm -f 软链接文件”。

默认情况下,ln命令产生硬链接;如果要创建软链接(符号链接)必须使用"-s"选项。

注意:软链接(符号链接)文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

命令参数:

必要参数:

-b 删除,覆盖以前建立的链接

-d 允许超级用户制作目录的硬链接

-f 强制执行

-i 交互模式,文件存在则提示用户是否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接)

-v 显示详细的处理过程

选择参数:

-S “-S ”或 “--suffix=”

-V “-V”或“--version-control=”

--help 显示帮助信息

--version 显示版本信息

命令实例:

实例1:给文件创建软链接。[root@ilinux test]# ll

total 8

-rw-r--r-- 2 root root    0 Nov 22 06:33 lnlinux

drwxr-xr-x 2 root root 4096 Nov 21 17:27test3

drwxr-xr-x 2 root root 4096 Nov 21 17:25test5

[root@ilinux test]# ln -s lnlinux lnlin_soft_link

[root@ilinux test]# ls -li

total 8

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786447 -rw-r--r-- 2 root root    0 Nov 22 06:33 lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

说明:为 lnlinux 源文件创建软链接 lnlin_soft_link 。

实例2:给文件创建硬链接。[root@ilinux test]# ln lnlinux lnlin_hard_link

[root@ilinux test]# ls -li

total 8

786447 -rw-r--r-- 3 root root    0 Nov 22 06:33 lnlin_hard_link

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786447 -rw-r--r-- 3 root root    0 Nov 22 06:33 lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

说明:为 lnlinux 源文件创建硬链接 lnlin_hard_link 。

小结:

从上面的实例结果中可以看出,硬链接文件 lnlin_hard_link 和源文件 lnlinux 的inode节点号相同,均为786447;而软链接文件 lnlin_soft_link 的inode节点号与源文件 lnlinux 不同,为786443。

硬链接文件的链接数也增加了。

实例3:接上面两个实例,链接完成后,删除和重建链接源文件。[root@ilinux test]# ls -li

total 16

786447 -rw-r--r-- 3 root root   12 Nov 22 06:54 lnlin_hard_link

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786447 -rw-r--r-- 3 root root   12 Nov 22 06:54 lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

[root@ilinux test]# rm -f lnlinux

[root@ilinux test]# ls -li

total 12

786447 -rw-r--r-- 2 root root   12 Nov 22 06:54 lnlin_hard_link

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

[root@ilinux test]# touch lnlinux

[root@ilinux test]# ls -li

total 12

786447 -rw-r--r-- 2 root root   12 Nov 22 06:54 lnlin_hard_link

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786445 -rw-r--r-- 1 root root    0 Nov 22 07:08 lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

[root@ilinux test]# echo "123">lnlinux

[root@ilinux test]# cat lnlinux

123

[root@ilinux test]# cat lnlin_hard_link

hello linux

说明:

1.源文件被删除后,并没有影响硬链接文件;而软链接文件在以红底白字不断的闪烁,提示源文件已经不存在;

2.重建源文件后,软链接文件不再闪烁提示,说明已经链接成功,找到了链接文件系统;

3.重建源文件后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效。

实例4:往源文件写入内容,软、硬链接文件的变化。[root@ilinux test]# ls -li

total 8

786447 -rw-r--r-- 3 root root    0 Nov 22 06:33 lnlin_hard_link

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786447 -rw-r--r-- 3 root root    0 Nov 22 06:33 lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

[root@ilinux test]# echo "hellolinux" >lnlinux

[root@ilinux test]# cat lnlinux

hello linux

[root@ilinux test]# cat lnlin_soft_link

hello linux

[root@ilinux test]# cat lnlin_hard_link

hello linux

说明:往源文件lnlinux里写入内容后,它的软、硬链接文件同样都有相同的内容。

实例5:给目录创建软链接。[root@ilinux test]# ls -li

total 16

786447 -rw-r--r-- 2 root root   12 Nov 22 06:54 lnlin_hard_link

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786445 -rw-r--r-- 1 root root    4 Nov 22 07:09 lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

[root@ilinux test]# ln -s test3 test3_soft_link

[root@ilinux test]# ls -li

total 16

786447 -rw-r--r-- 2 root root   12 Nov 22 06:54 lnlin_hard_link

786443 lrwxrwxrwx 1 root root    7 Nov 22 06:35 lnlin_soft_link ->lnlinux

786445 -rw-r--r-- 1 root root    4 Nov 22 07:09 lnlinux

786444 drwxr-xr-x 2 root root 4096 Nov 2117:27 test3

786451 lrwxrwxrwx 1 root root    5 Nov 22 07:18 test3_soft_link -> test3

786446 drwxr-xr-x 2 root root 4096 Nov 2117:25 test5

说明:

1. 目录只能创建软链接文件,对于目录的软链接文件也是生产场景运维中常用的功能;

2. 目录不能创建硬链接文件,是因为目录本身就有硬链接文件。

创建一个空目录里面就会有“.(当前目录)和 ..(上一级目录)”

.(当前目录)和oldboydir 的 inode节点号是相同的,均为786453。

..(上一级目录)和 ../oldboy 的 inode节点号是相同的,均为 786450。

链接总结:

【文件链接】删除软链接文件,源文件和硬链接文件没有任何变化;

删除硬链接文件,源文件和软链接文件没有任何变化;

删除源文件,硬链接文件没有任何变化但软链接文件会以红底白字闪烁表示软链接文件已失效;

同时删除源文件和硬链接文件,整个文件才会真正的被删除;

很多硬件设备中的快照功能,其实就是利用了硬链接的原理。

【目录链接】目录只能创建软链接文件,不能创建硬链接文件;

目录的软链接文件是生产场景运维中常用的技巧;

每个目录下面都有硬链接文件“.(当前目录)和 ..(上一级目录)”。

linux中的ln属性,linux 常用基础命令 ln 详细介绍相关推荐

  1. linux命令的详情描述,linux 常用基础命令 tail 详细介绍

    tail 命令说明: tail命令用于输入文件中的尾部内容.不指定文件时,作为输入信息进行处理. 常用查看日志文件. 使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f fil ...

  2. linux中ldap添加属性,linux – ldap_add没有这样的对象(32)匹配dn dc = domain dc = com

    当我尝试使用此命令将用户导入LDAP时: ldapadd -x -D "cn=Manager,dc=domain,dc=com" -W -f /etc/openldap/root. ...

  3. Linux中vi不保存强制退出的命令是什么?

    本篇文章介绍了Linux中vi不保存强制退出的命令,相信大部分人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,话不多说,一起往下看吧. 所有的 Unix Like 系统都会内建 vi 文书 ...

  4. suse 新增用户oracle,在SUSE Linux中让其他用户能运行Oracle命令

    SUSE Linux中让其他用户能运行Oracle命令的方法介绍: suid/guid的问题: 要求非Oracle用户也能运行sqlplus等oracle命令. 解决方法: 假如希望设置s u i d ...

  5. 在linux系统环境中 常用的关机命令,Linux常用基础命令整理:关机命令、查看目录下文件命令等...

    整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能 Ctrl+c按键---停掉正在运行的程序 Ctrl+d按键---相当于exit ...

  6. Linux常用基础命令198个

    Linux常用基础命令198个 1.mkdir 创建目录 * 主要选项:-p 递归创建目录 主要案列:mkdir /xujun mkdir -p /xujun/oldboy mkdir -p /xuj ...

  7. Linux常用基础命令(很全)

    Linux常用基础命令 Linux命令格式 Linux 常见用户管理命令 创建新用户 Linux文件及目录管理命令 绝对路径和相对路径 cd命令 ls命令 pwd命令 mkdir命令 touch命令 ...

  8. Linux常用基础命令

    Linux常用基础命令 腾讯在线文档(优化版): https://docs.qq.com/doc/DQmdRTGhIUXV0Vmxm 1.创建目录,文件: mkdir -p /root/a/b/c/d ...

  9. linux常用基础命令操作收集

    linux常用基础命令操作收集,以下命令基于CentOs6.x 1.日常操作命令 **查看当前所在的工作目录 pwd **查看当前系统的时间 date **查看有谁在线(哪些人登陆到了服务器) who ...

最新文章

  1. vue 引入swiper4,在有些手机Dom7会有问题
  2. 老板让你抗住千万级流量,如何做架构设计?
  3. 修改某个用户名和密码
  4. sql中字段名中包含特殊字符的查询方法
  5. 动手造轮子:写一个日志框架
  6. 【Java】欧拉回路的判定
  7. 操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)
  8. leetcode - 统计封闭岛屿的数目
  9. golang+linux+pipline
  10. linux驱动视频采集卡,在linux下使用视频采集卡
  11. db2 sqlcode常见及不常见
  12. nc系统显示不能连接到服务器,用友U8 用友登录时提示不能连接到服务器。
  13. opencv图像对比度
  14. Windows远程桌面控制Ubuntu方法
  15. Android - 一种相似图片搜索算法的实现
  16. 一觉醒后ChatGPT 被淘汰了
  17. 电脑路由器,怎么把自己的电脑变成路由器
  18. 禁止浏览器返回登入页面
  19. [图像]中值滤波(Matlab实现)
  20. 80C51单片机复习资料(一)

热门文章

  1. VS Code 调试 OneFlow
  2. SystemML大规模机器学习,优化算子融合方案的研究
  3. 利用NVIDIA-NGC中的MATLAB容器加速语义分割
  4. 传感器标定两篇顶会论文解析
  5. 各种经典透镜投影模型
  6. AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)
  7. php面向对象程序设计,PHP面向对象程序设计类的定义与用法简单示例
  8. Android drawLine 画虚线
  9. swoole安装异步reids
  10. spring boot 启动不连接数据库