一、简述
在Linux操作系统中,每个文件和目录都有一组关联的属性,这些属性定义了文件的权限和所有权。这些属性可以通过使用 ls -l
命令在终端中查看,这会列出文件或目录的详细信息。
二、字段说明
~]# ls -l
total 72
-rw-r--r--. 1 root root 86681 Jan 19 15:20 file.txt
第一列的第一个字符:文件类型(详情见以下 文件类型 )
rw-r--r--:文件权限
".":文件带有 SElinux 相关的权限。开启 SElinux的时候创建文件会有 "." ,关闭SElinux后创建文件不会有 "."
1:被硬链接的次数
root:文件的拥有者(用户)
root:文件的拥有组(用户组)
86681:文件大小
Jan 19 :最后一次修改文件日期
15:20:最后一次修改文件时间
file.txt:文件名称
三、文件类型
~]# ll -d /etc/hosts /tmp /bin/ls /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log
-rwxr-xr-x. 1 root root 117608 Nov 17 2020 /bin/ls
srw-rw-rw- 1 root root 0 Jan 19 15:01 /dev/log
brw-rw---- 1 root disk 8, 0 Jan 19 15:01 /dev/sda
crw--w---- 1 root tty 4, 1 Jan 19 15:01 /dev/tty1
lrwxrwxrwx. 1 root root 22 Jan 16 10:29 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jun 7 2013 /etc/hosts
drwxrwxrwt. 16 root root 4096 Jan 19 15:04 /tmp
-:普通文件
s:socket,套接字文件
b:块设备,比如硬盘、光盘、磁盘分区
c:字符设备,接受输入输出
l:链接文件,软链接、硬链接
d:目录文件
查看文件类型命令
当我们对于一些文件无法精准的区分类型的时候可以使用 file 命令来查看。
~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=c8ada1f7095f6b2bb7ddc848e088c2d615c3743e, stripped
~]# file /dev/log
/dev/log: socket
~]# file /dev/sda
/dev/sda: block special
~]# file /dev/tty1
/dev/tty1: character special
~]# file /etc/grub2.cfg
/etc/grub2.cfg: symbolic link to `../boot/grub2/grub.cfg'
~]# file /etc/hosts
/etc/hosts: ASCII text
~]# file /tmp/
/tmp/: sticky directory
四、链接文件
在 Linux 系统中,链接文件是指向另一个文件的引用。Linux支持两种类型的链接:硬链接和软链接。
硬链接:
- 硬链接直接指向文件系统中的inode(inode是用于存储文件元数据的一个数据结构)。每个文件至少有一个硬链接(即文件的名字)。
- 创建硬链接后,链接和源文件没有区别。即使原始文件名被删除,只要硬链接存在,文件的内容仍然存在于磁盘中。
- 硬链接不能跨越文件系统,也不能用于目录。
软链接:
- 软链接类似于Windows中的快捷方式,它实际上是一个特殊的文件,包含了一个路径,这个路径指向另一个文件或目录。
- 软链接可以跨越文件系统,也可以链接到目录。
- 如果删除了源文件,软链接就会断开(成为悬挂链接或死链接),因为它指向的路径不再存在。
#创建硬链接
ln source_file hard_link
#创建软链接
ln -s source_file soft_link
五、索引节点号
在Linux文件系统中,索引节点号(inode number)是文件系统分配给每个文件和目录的唯一标识符。每个文件或目录在其所在的文件系统中都有一个与之对应的索引节点(inode),它存储了文件的元数据,但不包括文件名或实际数据内容。inode包含了许多关于文件的重要信息,如:
- 文件权限(读、写、执行)
- 文件所有者和组
- 文件大小
- 文件创建、访问和修改时间
- 文件数据块的位置(即实际数据存储的地方)
- 文件类型(普通文件、目录、链接等)
- 文件的硬链接数
#查看文件或目录的索引号
~]# ls -i anaconda-ks.cfg
67145795 anaconda-ks.cfg