如何在 Linux 中检查文件是否为空

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Linux 中使用不同的命令行工具来检查文件是否为空。你将探索三种常见的方法:使用 test -s 命令检查文件大小,使用 wc -c 命令统计文件中的字节数,最后,使用 cat 命令直接检查文件内容。通过实际操作示例,你将了解每种方法的工作原理,以及如何解读它们的输出,从而判断文件是否包含数据。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/wc("Text Counting") subgraph Lab Skills linux/echo -.-> lab-558711{{"如何在 Linux 中检查文件是否为空"}} linux/test -.-> lab-558711{{"如何在 Linux 中检查文件是否为空"}} linux/touch -.-> lab-558711{{"如何在 Linux 中检查文件是否为空"}} linux/cat -.-> lab-558711{{"如何在 Linux 中检查文件是否为空"}} linux/wc -.-> lab-558711{{"如何在 Linux 中检查文件是否为空"}} end

使用 test -s 检查文件大小

在这一步中,你将学习如何使用带有 -s 选项的 test 命令来检查文件是否存在且不为空。test 命令是一个内置的 shell 命令,用于计算条件表达式。它常用于 shell 脚本中以做出决策。

test 命令的 -s 选项用于检查文件是否存在且大小大于零(即文件不为空)。

首先,让我们在你的 ~/project 目录中创建一个空文件和一个非空文件。

如果终端尚未打开,请打开它。默认情况下,你应该位于 ~/project 目录中。

创建一个名为 empty_file.txt 的空文件:

touch empty_file.txt

现在,创建一个名为 non_empty_file.txt 的文件,并使用 echo 命令和重定向运算符 > 向其中添加一些文本。> 运算符将命令的输出重定向到一个文件。如果文件不存在,则会创建该文件;如果文件已存在,则会覆盖其内容。

echo "This file has content." > non_empty_file.txt

现在,让我们使用 test -s 命令来检查这些文件。test 命令在成功时不会产生输出。它通过退出状态码来表示成功或失败。退出状态码为 0 表示成功(条件为真),非零退出状态码表示失败(条件为假)。

我们可以使用特殊变量 $? 来检查上一个命令的退出状态码。

检查空文件:

test -s empty_file.txt
echo $?

你应该会看到输出 1,这表明 empty_file.txt 的条件(文件存在且不为空)为假。

现在,检查非空文件:

test -s non_empty_file.txt
echo $?

你应该会看到输出 0,这表明 non_empty_file.txt 的条件为真。

这是在 shell 脚本中检查文件属性的基本方法。你可以在尝试处理文件之前使用此方法确保文件包含内容。

点击 继续 以继续。

使用 wc -c 统计文件字节数

在这一步中,你将学习如何使用带有 -c 选项的 wc 命令来统计文件中的字节数。wc 命令是一个实用工具,用于打印每个文件的换行符、单词和字节数。

-c 选项指示 wc 仅统计字节数。

让我们使用上一步中创建的文件:empty_file.txtnon_empty_file.txt

首先,统计 empty_file.txt 中的字节数。确保你位于 ~/project 目录中。

wc -c empty_file.txt

你应该会看到类似以下的输出:

0 empty_file.txt

这表明 empty_file.txt 有 0 字节,这是合理的,因为它是一个空文件。

现在,统计 non_empty_file.txt 中的字节数:

wc -c non_empty_file.txt

你应该会看到类似以下的输出:

23 non_empty_file.txt

数字 23 表示文件 "This file has content." 中的字节数,后面还跟着 echo 命令添加的一个换行符。每个字符通常占用一个字节。

wc 命令对于快速获取文件大小信息非常有用。你也可以不使用选项来运行 wc 命令,以获取行数、单词数和字节数。尝试运行 wc non_empty_file.txt 来查看差异。

点击 继续 进入下一步。

使用 cat 命令查看文件内容

在这一步中,你将学习如何使用 cat 命令查看文件的内容。cat 是“concatenate”(连接)的缩写,主要用于显示文件内容。

让我们使用上一步创建的文件:empty_file.txtnon_empty_file.txt。确保你处于 ~/project 目录中。

首先,尝试查看 empty_file.txt 的内容:

cat empty_file.txt

由于 empty_file.txt 是空文件,cat 命令不会显示任何输出。

现在,查看 non_empty_file.txt 的内容:

cat non_empty_file.txt

你应该会看到我们在上一步添加的内容:

This file has content.

cat 命令是一种简单快捷的方式,可以直接在终端中显示文件的全部内容。在对非常大的文件使用 cat 命令时要谨慎,因为它会将所有内容打印到屏幕上,这可能会让人应接不暇。对于大文件,lessmore 等命令更合适,因为它们允许你逐页查看内容。

你还可以使用 cat 命令合并多个文件的内容并显示出来。例如,如果你有 file1.txtfile2.txtcat file1.txt file2.txt 会先显示 file1.txt 的内容,接着显示 file2.txt 的内容。

点击 继续 完成此实验。

总结

在本次实验中,你学习了如何在 Linux 系统中使用 test -s 命令来检查文件是否为空。该命令会检查文件是否存在且大小是否大于零,若条件为真(文件不为空)则返回退出状态码 0,若为假(文件为空或不存在)则返回退出状态码 1。你练习了创建空文件和非空文件,并使用 test -s 命令验证它们的状态,还通过 $? 检查了退出状态码。