我今年二月安装了 Linux。现在当我使用 列出主目录时ls -la
,为什么时间显示如下:
drwx------ 20 chuck_user chuck_user 4096 Jul 5 2024 .
为什么是这个时间Jul 5 2024
,为什么与其他日期不同?
这个问题与“ls -la”做什么?不同,
因为它只询问做什么。但我想知道目录的时间戳与我安装 Linux 的时间不匹配ls -la
的原因。时间戳是我在 2025 年 2 月安装的。.
Jul 4 2024
目录(在本例中
.
为当前目录)的时间戳将具有该目录内最后一个被更改的文件的时间戳。对于主目录(
~
),如果您没有更改任何文件,则时间戳将是过去的某个时间。.bash_history
但是,通常每次运行终端命令时里面的文件都会发生变化,因此很可能下次登录时~
主目录的时间戳会更新(至少对我来说是这种情况)。~
显示的时间
ls -l
不显示文件或目录的创建日期,而是显示最后修改时间(mtime)。看一下文档:
如果您想查看创建时间戳,可以使用
stat
-command:列出的日期
ls
是文件或目录的修改时间,在 Linux 等类 UNIX 系统中缩写为“mtime”。每当文件系统对象的数据被修改时,此时间戳就会更新。对于文件来说,该语句的含义相对明显,每当文件被写入时,mtime就会更改为当前时间。
但是对于目录而言,“数据”的含义就不那么明显了。目录的“数据”是该目录的目录条目集,其功能是该目录中的文件系统对象(及其名称)的列表。这意味着在目录中创建、删除或重命名文件将更新目录的 mtime(但更改此类文件的权限不会更新目录的 mtime,因为权限是文件系统对象的一部分,而不是目录条目的一部分)。
在类 UNIX 系统中,“创建”时间是一个不同的概念,实际上有些棘手。除了 mtime 之外,所有 Linux 文件系统都提供两个额外的时间戳:
此外,一些文件系统提供了第四个时间戳,称为文件系统对象的“btime”或“出生时间”,并且仅在首次创建文件系统对象时设置。这是最接近文件系统对象创建时间的东西,但由于系统本身的工作方式,它的行为方式也不太明显。特别是,Linux 上的许多东西不会就地重写文件,而是写出包含任何更改的临时文件,然后在现有文件的顶部重命名它(这样做是为了确保所有更改都发生,或者都不发生)。但是,这会创建一个新的文件系统对象来替换旧的文件系统对象,因此文件的 btime 与 mtime 匹配并不罕见。
您的意思是您是在,而不是在 home下的
/home
您自己的用户主目录?您自己的用户主目录的快捷方式是。~
/home
通常只会在您向系统添加新用户时更新,因为的内容/home
只是用户目录。因此您的“2024 年 7 月 5 日”日期可能是您下载发行版的日期,因为/home
会从那里解压并安装。我明白了:
Linux 中的每个目录都有一个父目录
..
,而您在“主目录”中的权限看起来非常不寻常。所以我怀疑您没有在此处显示所有输出ls -la
。输出pwd
也会有所帮助。