Linux 中文件名存在哪里?

面试中被问到Linux系统下文件的文件名放在了哪里,没答出来。:-(这里总结下:

我们可以把一个磁盘分成一个或多个分区。每个分区可以包含一个文件系统。

i节点是固定长度的记录项,它包含了有关文件的大部分信息。可是就是不包含文件名!

inode包含文件的元信息,具体来说有以下内容:

  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、执行权限

  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名指向这个inode

  * 文件数据block的位置

可以用stat命令,查看某个文件的inode信息:

stat example.txt**

总之,除了文件名以外的所有文件信息,都存在inode之中。

如果仔细得观察硬盘中一个柱面组的i节点和数据块部分,可以看到上图的情况。

1. 在图中有两个目录项指向同一个i节点。每个i节点中都有一个链接计数,其值是指向该i节点的目录项数。只有当链接计数减少至0时。才可以删除该文件(也就是说可以释放该文件所占用的硬盘空间了)。这就是为什么“解除对一个文件的链接”操作并不总是意味着“释放该文件占用的磁盘块”的原因。在stat结构中,链接计数包含在st_nlink成员中,其基本系统数据类型是nlink_t。这种链接类型称为硬链接。

2. 另外一种链接类型称为符号类型,对于这种链接,该文件的实际内容(在数据块中)包含了该符号链接所指向的文件的名字。在下例中:

lrwxrwxrwx 1 root 7 Sep 1 12:33 lib -> usr/lib

该目录项中的文件名是3字符的字符串lib,而在该文件中包含了7个数据字节usr/lib。该i节点的文件类型是S_IFLNK,于是系统知道这是个符号链接。

3. i节点包含了大多数与文件有关的信息:文件系统、文件访问权限位、文件长度等等信息。stat结构中的大多数信息都取自i节点。只有两项数据存放在目录项中:文件名和i节点编号。

4. 每个文件系统各自对他们的i节点进行编号,因此目录项中的i节点编号数指向同一文件系统中的相应i节点,不能使一个目录项指向另一个文件系统的i节点。这就是为什么ln命令不能跨文件系统的原因。

时间: 2024-08-06 11:56:26

Linux 中文件名存在哪里?的相关文章

Linux系统文件名字体不同的颜色都代表什么

Linux系统文件名字体不同的颜色都代表什么 在Linux中,文件的颜色都是有含义的. 其中, Linux中文件名颜色不同,代表文件类型不一样. 如下所示: www.2cto.com 浅蓝色:表示链接文件: 灰色:表示其他文件: 绿色:表示可执行文件: 红色:表示压缩文件: 蓝色:表示目录: 红色闪烁:表示链接的文件有问题了: 黄色:表示设备文件,包括block,char,fifo. 用"dircolors -p"命令可以看到缺省的颜色设置, 包括各种颜色和"粗体"

硬件设备在Linux中的文件名

“一切皆文件”是Unix/Linux系统中一个非常重要的思想. 在Linux系统中,具体到硬件来说就是每个设备都被当成一个文件来对待.下面列出几个常见的设备在Linux系统中的文件名. 设备 文件名 IDE硬盘 /dev/hd[a-d] SCSI/SATA/USB 硬盘 /dev/sd[a-p] U盘 /dev/sd[a-p](与SATA相同) 鼠标 USB:/dev/usb/mouse[0-15] PS2:/dev/psaux 当前鼠标 /dev/mouse 当前 CD ROM/DVD ROM

Linux中rename命令用法学习 修改文件名

如何用命令修改文件名呢?在linux下可以用rename命令,当然还可以使用mv命令,这里分享下linux rename命令的用法. 有一部分人说linux下没有rename命令,建议大家用mv命令.对rename命令和mv命令在重命名文件方面做一个比较,大家根据个人喜欢选择使用吧. mv命令,在man mv中对于mv命令的介绍:mv -move(rename) files 可以看到mv命令确实有重命名的功能,但是实际应用中,它只能对单个文件重命名,命令如下:mv [path/]oldfilen

详解 linux中的grub

grub是什么: grub是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载到内存以后, 内核会根据grub配置文件中的配置,找到根分区所使用的文件系统对应的驱动,通过根分区文件系统 对应的驱动,挂载根分区,从而达到启动操作系统的目的. 在了解grub以前,请先大体上了解一下centos5/6的启动过程,然后再理解grub就更容易了, 还记的我们以前总结过的centos5系统启动流程吗,如下图,此处我们重点讨论下图红框中的步骤. centos5/6中使用grub作为bootl

linux中常用的压缩、解压命令详解

不管在windows中还是在linux中,我们会经常看到各种压缩的文件,此刻我们需要使用就得解压,在这就介绍介绍linux中解压.压缩的命令. 在做实验之前,我们先创建几个文件,大小都是100M,方便我们更能清晰理解. 一.compress[选项]file(不是太常用,而且tab键还不能补齐) ①compress file 压缩文件,其中我们可以看到compress压缩的文件是.Z结尾的压缩包. ② -d file 解压文件,但压缩文件会丢失,相当于uncompress 在这我们可以看到,不管是

linux中的压缩命令详细解析(二)

我们在<Linux中的压缩命令详细解析(一)>中已经讲解了常见的三种压缩命令,下面我们开始讲解工作中最常用到的tar命令. 为了使压缩和解压缩变得简单,tar命令就应运而生了.那么究竟该如何使用呢? tar.gz格式: 压缩命令: tar -zcvf 压缩文件名 源文件名 举例: 把abc文件压缩成后缀为tar.gz格式的文件 tar -zcvf abc.tar.gz abc 解压缩命令: 举例:解压缩abc.tar.gz文件 tar -zxvf abc.tar.gz tar.bz2格式: 压

Linux中的简单命令

history:打印你输过的命令      1.用户在shell中输入的命令会自动保存到内存缓冲区      2.在退出shell的时候,内存中的数据会刷新到磁盘文件:~/.bash_history 快捷键     ESC + .:获取上一个命令的最后一个参数     !序号:执行编号为多少的历史命令     !!:执行上一条命令     !字符串:从最后向前来匹配以指定字符串为开头的命令 history 选项     -c:清空历史命令     -a:将内存中的历史命令追加在~/.bash_h

Linux中常用的命令

linux中一些经常用到的命令 1. ls(list)列表:把当前文件夹的所有文件显示出来 ls -a :显示所有文件 ls -l :以详细信息显示 可以:ls -la/-al/-a -l/-l -a 这几种方式表达的意思都是:显示所有文件的详细信息 2. man:查询man手册,获得帮助信息 比较常用的方式: man 1 ls :1表示查询的是linux的命令,这里是查询ls命令的用法 man 2 xx :2表示查询的是linux的api man 3 xx :3表示查询的是c库函数(譬如man

linux中压缩与解压缩命令小结

linux中压缩与解压操作非常常见,其命令参数也非常的多,这里只介绍最经常用的带打包文件的几种压缩和解压方式和几个最常用的参数. 现在最常用的压缩和解压工具是gzip和bzip2,这两种工具不能相互解压对方压缩的文件.在linux中其实没有后缀名这一说法,但是为了方便用户解压文件时方便,所以在压缩的时候往往使用不同的后缀名以区分是使用的那个工具,一般使用gzip压缩的文件后缀名是.gz,用bzip2压缩的文件取名为.bz2,而打包文件一般使用tar工具,所以压缩后再打包的文件后缀名一般是.tar