查看原文
其他

Linux文件与目录管理(12)

Cloud研习社 Cloud研习社 2023-06-06

我们先补一个上一节没讲到的内容,查看文件类型:file

file

查看文件的类型是目录还是二进制文件、还是data文件,还是其他什么文件。


[root@studyclub attribute]# file ~/.bashrc
/root/.bashrc: ASCII text
[root@studyclub attribute]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data
[root@studyclub attribute]# file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=1e5735bf7b317e60bcb907f1989951f6abd50e8d, stripped


ls -li第三列内容详解 - 硬链接个数

详细情况见《Linux磁盘与文件管理》的软硬链接部分

ls -li第四、五列内容简介

这两列是用户和用户组,我们后面《Linux账号管理》部分详细讲解。

ls -li第六列内容详解 - 文件或目录的大小

这一列展示文件或目录的大小,如果不加-h选项或其他选项,ls -l的结果中,如果没有显示大小的单位,则单位是KB。如果ls -lh,这个时候系统会根据文件的大小自动转换单位成KB、MB、GB、TB、PB等。

ls -li第七列内容详解 - 最后修改时间

modification time(mtime):显示的是文件内容被修改的最后时间,比如用vi编辑时就会被改变。(也就是Block的内容)

status time (ctime):显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容发生改变时)

access time(atime):显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用。(执行一些可执行文件或脚本)

关于三个时间的实践演示:

[root@studyclub ~]# touch a.txt
[root@studyclub ~]# stat a.txt 
  File: ‘a.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 33575026    Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-02-16 16:17:53.335604757 +0800
Modify: 2021-02-16 16:17:53.335604757 +0800
Change: 2021-02-16 16:17:53.335604757 +0800
 Birth: -

[root@studyclub ~]# echo jason > a.txt 
[root@studyclub ~]# stat a.txt 
  File: ‘a.txt’
  Size: 6           Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 33575026    Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-02-16 16:17:53.335604757 +0800
Modify: 2021-02-16 16:18:11.425604751 +0800
Change: 2021-02-16 16:18:11.425604751 +0800
 Birth: -

[root@studyclub ~]# chown jason:jason a.txt 
[root@studyclub ~]# stat a.txt 
  File: ‘a.txt’
  Size: 6           Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 33575026    Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ jason) Gid: ( 1000/ jason)
Access: 2021-02-16 16:17:53.335604757 +0800
Modify: 2021-02-16 16:18:11.425604751 +0800
Change: 2021-02-16 16:20:06.975604713 +0800
 Birth: -

提到了文件修改时间,我们不得不提到一个命令:touch。touch有两个作用:

  • 创建一个空文件
  • 修改文件时间(atime、mtime、ctime)

我们先看创建文件然后查看时间:

[root@studyclub zhuo]# touch tfile
[root@studyclub zhuo]# date
Tue Apr 27 11:07:54 CST 2021
[root@studyclub zhuo]# ll tfile # 可以看到,文件的修改时间(ll默认显示修改时间)就是文件的创建时间
-rw-r--r-- 1 root root 0 Apr 27 11:07 tfile


再来看:


[root@studyclub zhuo]# ls /etc/selinux/config -l
-rw-r--r--. 1 root root 542 Jan 24 17:00 /etc/selinux/config
[root@studyclub zhuo]# cp -a /etc/selinux/config config
[root@studyclub zhuo]# ll config ; ll --time=atime config ; ll --time=ctime config
-rw-r--r--. 1 root root 542 Jan 24 17:00 config # mtime
-rw-r--r--. 1 root root 542 Apr 27 11:06 config # atime
-rw-r--r--. 1 root root 542 Apr 27 11:29 config # ctime


上面的config文件三个时间确定了,我们接下来用touch修改其中一个时间,修改之前我们先来看看touch修改时间的用法。


[root@studyclub ~]# touch [-acm] 文件
选项与参数:
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不创建新文件;
-m :仅修改 mtime ;# mtime是工作中最经常关心的,不要手动修改,因为这关系到文件内容的修改。


接下来,我们看看修改上面提到的config的atime:


[root@studyclub zhuo]# touch -a config
[root@studyclub zhuo]# ll config ; ll --time=atime config ; ll --time=ctime config
-rw-r--r--. 1 root root 542 Jan 24 17:00 config
-rw-r--r--. 1 root root 542 Apr 27 11:44 config
-rw-r--r--. 1 root root 542 Apr 27 11:44 config


我们注意看一下上面的结果,我们修改的atime的时间,为什么ctime的时间也发生了变化呢?

这是因为我们修改的atime是文件的一个属性,ctime就是记录属性发生变化的时间,所以修改atime的时候,ctime也会发生变化。

ls -li第七列内容详解 - 文件/目录名

这里没什么好说的,就是一个名字而已,我们需要明确的是文件名和目录名的位置:
文件名不在inode里,而是在上一级目录的block里:


新手应知:
    尝鲜Rocky Linux
《Linux基础及进阶》:

    009 - Linux文件与目录管理(6)

    010 - Linux文件与目录管理(7)

    011 - Linux文件与目录管理(8)

    012 - Linux文件与目录管理(9)

    013 - Linux文件与目录管理(10)


看完本文有收获?请分享给更多人


推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

微信号|bjdream-1


Cloud研习社 · 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存