Linux中的ls、file、stat

在使用ls命令前,我们先来了解以下 stat命令(查看文件的inode信息):

[root@192 ~]# stat --help
Usage: stat [OPTION]... FILE...
​
[root@192 ~]# stat Music/
  File: Music/
  Size: 19          Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 67844581    Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-07-13 15:29:46.553019101 +0800(最后一次访问文件的时间,仅仅是访问,没有改动)
Modify: 2022-07-13 15:29:29.863018427 +0800(最后一次修改文件的时间)
Change: 2022-07-13 15:29:29.863018427 +0800(最后一次对文件属性改变的时间包括:权限、大小、属性等)
Birth: 2022-07-09 19:59:02.572550433 +0800(文件创建的时间)
​
Blocks:文件使用的总块数(文件看似是连续的,但其实是由很多块组成的,多个块在磁盘上的不同位置)

通常情况下,文件系统会将文件的实际内容和属性分开存放:

·文件的属性保存在inode中(i节点),每个inode都有自己的编号。每个文件各占用一个inode。不仅如此,inode中还记录着文件数据所在的block块的编号

·文件的实际内容保存在block中(数据块)。每个block都有属于自己的编号。当文件太大时,可能会占用多个block块。

·另外,还有一个super block(超级块)用于记录整个文件系统的整体信息,包括inode和block的总量、已经使用量和剩余量,以及文件系统的格式和相关信息。

由此,我们可以推断出,只要能找到文件的inode所在的位置,就能知道文件存放数据的block号,从而找到文件的实际数据。如下图:

上图中,文件系统先格式化出inode和block块,假设某个文件的权限和属性信息存放到inode4号位置,这个inode记录了实际存储文件数据的block号有4个,分别是:2、7、13、15,由此操作系统能快速的找到文件数据的存储位置


file命令:

用于显示文件类型和文件的编码格式

[root@192 ~]# file --help
Usage: file [OPTION...] [FILE...]

七种文件类型

普通文件类型:Linux中最多的一种文件类型,包括纯文本文件、二进制文件、各种压缩文件等;第一个属性为[-]

目录文件:就是目录,能用 cd 命令进入的,类似于windows中的文件夹;第一个属性为 [d]

块设备文件:就是存储数据以供系统存取的接口设备,随机读写,硬盘;第一个属性为 [b]

字符设备文件:串行端口设备,顺序读写,硬盘;第一个属性为 [c]

套接字文件:通常用于网络的通信;可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信;第一个属性为 [s]

管道文件:用于进程间的通信;主要解决多个程序同时存取一个文件所造成的错误;第一个属性为 [p]

链接文件:

链接文件又分为符号链接(软链接)和硬链接:

软链接:和原文件不是一个文件,例如Windows的快捷方式,如果原始文件删除,所有指向它的符号链接也都被破坏了。软链接有自己的node,是linux的一种特殊的文件,作为一个文件,它的数据是它所连接的文件的路径。软链接可以跨越文件系统,也可以为目录建立。

硬链接:只能引用同一个文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在结构中的位置。


[root@192 ~]# ls --help
Usage: ls [OPTION]... [FILE]...   这里的FILE指的是某一个具体的目录或文件
​
如果单独使用ls命令,则会列出当前目录下的所有目录或者文件:
[root@192 ~]# ls
anaconda-ks.cfg  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  Pictures  Public  Templates  Videos
​
也可以直接添加一个参数FILE,如果FILE是一个目录,则会显示该目录下的所有目录或者文件,如果FILE是一个文件,则直接显示该文件:
[root@192 ~]# ls Music/
test1
​
使用-d ,可以直接显示一个目录,而不显示该目录下的内容:
[root@192 ~]# ls -d Music/
Music/
​

ls一些常见的选项:

-a, --all                  do not ignore entries starting with .
-A, --almost-all           do not list implied . and .. (.和..分别表示本级目录和上级目录)
-s, --size                 print the allocated size of each file, in blocks
-h, --human-readable       with -l and -s, print sizes like 1K 234M 2G etc
-i, --inode                print the index number of each file
-t                         sort by modification time, newest first
-c                         和-lt一起使用:显示列表并且以ctime(文件状态最后改变时间)排序。和-l一                            起使用:显示ctime并且以文件名排序。其他情况,以ctime排序。
-S                         sort by file size, largest first
-r, --reverse              reverse order while sorting

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值