前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中的链接 ln

Linux中的链接 ln

作者头像
mwangblog
发布2018-07-04 11:34:32
2.7K0
发布2018-07-04 11:34:32
举报
文章被收录于专栏:mwangblogmwangblogmwangblog

本文目录

  • 1 i节点
  • 2 硬链接
  • 3 软链接

i节点

在Linux中创建文件时,Linux会做两件事情,第一是在设备上保留一块空间存储数据,第二是创建一个i节点(i-node)存放该文件的基本信息。

i节点存放文件所需的全部文件系统信息,它通常包含:

  • 以字节为单位的文件长度
  • 包含该文件的设备名称
  • 拥有者的用户标识及id
  • 所属组的用户标识及id
  • 文件权限
  • 上一次修改时间
  • 上一次访问时间
  • i节点的上一次修改时间
  • 指向该文件的链接数
  • 文件的类型
  • 分配给该文件的块数
  • ……

用户不必了解i节点的内容,但是也可以很方便的查看,使用stat FILENAME查看你文件的i节点的信息:

$ stat name
  File: 'name'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd01h/64769d    Inode: 1709368     Links: 3
Access: (0775/drwxrwxr-x)  Uid: ( 1001/     tom)   Gid: ( 1001/     tom)
Access: 2018-06-05 16:47:54.643771585 +0800
Modify: 2018-05-12 10:37:53.792094043 +0800
Change: 2018-06-05 16:48:35.487772167 +0800
 Birth: -

文件系统将i节点存放在一个大表中,这个表叫i节点表

目录其实是一张表,这个表的每一项都记录着目录下的一个文件的文件名和i节点号。当访问文件时,虽然用户输入的是文件名,但是系统会通过文件名后面记录的i节点号找到i节点,再通过i节点中的内容找到文件的存储位置,读出文件。

使用ls -i FILENAME即可查看文件的i节点号。下面的例子首先创建了文件now.txt,其内容是Hello, World!,之后查看了其i节点号和i节点的内容,最后查看了文件内容:

$ echo "Hello, World!" > now.txt
$ ls -i now.txt
1709370 now.txt
$ stat now.txt
  File: 'now.txt'
  Size: 14              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 1709370     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1001/     tom)   Gid: ( 1001/     tom)
Access: 2018-06-05 17:06:49.791782004 +0800
Modify: 2018-06-05 17:06:49.791782004 +0800
Change: 2018-06-05 17:06:49.791782004 +0800
 Birth: -
$ cat now.txt
Hello, World!

文件名、i节点和文件内容的关系示意图如下:

硬链接

可以使用ln命令创建一个硬链接(或者叫链接),它的特点是会有多个目录项指向同一个i节点。从用户的角度来看,用户的文件具有多个文件名,这些文件名都指向同一个文件。

通过下面的命令创建新链接:

ln TARGET LINK_NAME 

其中TARGET是一个已经存在的普通文件,而LINK_NAME是新链接的名称。

例如,下面的命令为now.txt创建一个在homework目录下的名为newNow.txt的链接:

$ ln now.txt homework/newNow.txt
$ ls -i now.txt homework/newNow.txt
1709370 homework/newNow.txt  1709370 now.txt

查看二者的i节点号:

$ ls -i now.txt homework/newNow.txt
1709370 homework/newNow.txt  1709370 now.txt

可以看到,它们确实指向了同一个i节点。

软链接

软链接也叫做符号链接,这种链接的特点是会新建一个全新的文件,在该文件中记录目标文件的路径。

使用ln命令的-s选项即可创建软链接,下面为now.txt创建一个名为newSNow.txt的软链接:

$ ln -s now.txt newSNow.txt

查看其i节点号,二者并不相同:

$ ls -il now.txt newSNow.txt
1710866 lrwxrwxrwx 1 tom tom  7 Jun  5 17:35 newSNow.txt -> now.txt
1709370 -rw-rw-r-- 2 tom tom 14 Jun  5 17:06 now.txt

newSNow.txt -> now.txt表示newSNow.txt是指向now.txt的软链接。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 mwangblog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文目录
    • i节点
      • 硬链接
        • 软链接
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档