linuxstat命令显示的细节比ls多得多。通过这个信息丰富且可配置的实用程序,您可以在幕后一瞥。我们会教你怎么使用它。
ls命令在做什么方面做得很好,而且做得很多,但是对于Linux,似乎总有一种方法可以更深入地了解表面之下的内容。通常,这不仅仅是一个掀开地毯边缘的例子。你可以把地板撕开,然后挖个洞。你可以像剥洋葱一样剥Linux。
ls将向您显示有关文件的大量信息,例如对其设置了哪些权限、文件的大小以及文件是文件还是符号链接。为了显示这个信息,ls从一个叫做inode的文件系统结构中读取它。
每个文件和目录都有一个inode。inode保存有关文件的元数据,例如它占用的文件系统块,以及与文件关联的日期戳。inode就像文件的借书卡。但我只会告诉你一些信息。要查看所有内容,我们需要使用stat命令。
像ls一样,stat命令有很多选项。这使它成为使用别名的最佳候选。一旦您发现了一组特定的选项,使得stat可以提供您想要的输出,就可以将其包装到别名或shell函数中。这使得它的使用更加方便,而且您不必记住一组晦涩难懂的命令行选项。
相关:如何使用ls命令列出Linux上的文件和目录
让我们使用ls给出一个长列表(-l选项),其中包含人类可读的文件大小(-h选项):
ls -lh ana.h从左到右,ls提供的信息是:
让我们看看统计:
stat ana.h我们从stat得到的信息是:
时间戳对时区敏感。每行末尾的-0500表示此文件是在协调世界时(UTC)时区的计算机上创建的,该时区比当前计算机的时区早5小时。所以这台电脑比创建这个文件的电脑晚了五个小时。事实上,这个文件是在一台英国时区的计算机上创建的,我们正在美国东部标准时区的计算机上查看它。
修改和更改时间戳可能会引起混淆,因为对于未初始化的人来说,它们的名称听起来好像是同一个意思。
让我们使用chmod来修改名为ana.c的文件的文件权限。我们将使每个人都可以写它。这不会影响文件的内容,但会影响文件的属性。
chmod +w ana.c然后我们将使用stat查看时间戳:
stat ana.c更改时间戳已更新,但修改的时间戳尚未更新。
修改后的时间戳只有在文件内容更改时才会更新。内容更改和属性更改的更改时间戳都会更新。
要同时对多个文件进行stat报告,请在命令行上将文件名传递给stat:
stat ana.h ana.o要对一组文件使用stat,请使用模式匹配。“问号”?表示任何单个字符,星号“*”表示任何字符串。我们可以告诉stat报告任何一个扩展名为“ana”的文件,使用以下命令:
stat ana.?stat可以报告文件系统的状态以及文件的状态。f(filesystem)选项告诉stat报告文件所在的文件系统。注意,我们还可以将诸如“/”之类的目录传递给stat,而不是文件名。
stat -f ana.cstat给我们的信息是:
阻碍:
索引节点:
如果您对一个实际是符号链接的文件使用stat,它将报告该链接。如果希望stat报告链接指向的文件,请使用-L(取消引用)选项。文件code.c是指向ana.c的符号链接。让我们看看没有-L选项的情况:
stat code.c文件名显示code.c指向(->;)ana.c。文件大小只有11个字节。没有专门用于存储此链接的块。文件类型列为符号链接。
很明显,我们这里没有查看实际的文件。我们再来一次并添加-L选项:
stat -L code.c现在显示符号链接指向的文件的文件详细信息。但是请注意,文件名仍然以code.c的形式给出。这是链接的名称,而不是目标文件。这是因为这是我们在命令行上传递给stat的名称。
-t(简洁)选项使stat提供一个简明的摘要:
stat -t ana.c没有提供任何线索。为了理解它,直到你记住了字段序列,你需要交叉引用这个输出到一个完整的stat输出。
从stat获取不同数据集的更好方法是使用自定义格式。有一长串的标记称为格式序列。每一个都代表一个数据元素。选择要包含在输出中的内容并创建格式字符串。当我们调用stat并将格式字符串传递给它时,输出将只包含我们请求的数据元素。
文件和文件系统有不同的格式序列集。文件列表为:
“epoch”是Unix epoch,发生在1970-01-01 00:00:00+0000(UTC)。
对于文件系统,格式序列为:
有两个选项接受格式序列的字符串。它们是--format和--printf。它们之间的区别是——printf解释C样式的转义序列,例如换行符和制表符,并且不会自动向其输出中添加换行符。
我们创建一个格式字符串并将其传递给stat。要使用的格式序列是%n表示文件名,%s表示文件大小,%F表示文件类型。我们将在字符串的结尾添加转义序列,\n以确保在新行中处理每个文件。我们的格式字符串如下所示:
"File %n is %s bytes, and is a %F\n"我们将使用--printf选项将其传递给stat。我们将要求stat报告一个名为code.c的文件和一组与ana匹配的文件。?。这是完整的命令。注意--printf和格式字符串之间的等号“=”:
stat --printf="File %n is %s bytes, and is a %F\n" code.c ana/ana.?每个文件的报告都列在新行中,这是我们要求的。我们提供了文件名、文件大小和文件类型。
自定义格式允许您访问比标准stat输出中包含的数据元素更多的数据元素。
如您所见,提取您感兴趣的特定数据元素有很大的空间。你也许也能理解为什么我们建议对更长更复杂的咒语使用别名。
... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...
...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...
... 如何在windows10上安装linux bash shell ...
要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...
想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...
...想知道,当我们在浏览器中键入网站名称时,这种神奇是如何发生的。通过dig,你可以探索网络变戏法的过程。
...们谈论Linux文件时间戳时。在本指南中,我们将解释系统如何更新它们,以及如何自己修改它们。 atime、mtime和ctime的区别 每个Linux文件都有三个时间戳:访问时间戳(atime)、修改时间戳(mtime)和更改时间戳(ctime)。 访问时...
...上是指向现有文件或目录的快捷方式。让我们看看他们是如何管理的,以及如何使用这三个元素来实现这一点。 假设我们有一个包含两个文件的目录:一个是脚本,另一个是应用程序,如下所示。 我们可以使用ln命令和-s(符...
googledrive仍然没有正式的Linux客户端,但是您可以直接从命令行使用rclone实用程序备份到googledrive。我们教你怎么做。 linux上的google drive在哪里? 尽管2012年承诺Linux支持“很快就会到来”,但没有迹象表明Google会为GoogleDrive生产...