介绍
在本实验中,你将学习如何在 Shell 中执行各种文件测试。文件测试是检查文件系统中文件和目录属性的重要工具。通过本实验,你将熟悉常用的文件测试命令及其用法,这些是在 Linux 环境中处理文件的基本技能。
创建测试文件
在开始文件操作之前,了解我们的工作环境非常重要。在 Linux 中,你始终在特定的目录中工作,了解自己在文件系统中的位置至关重要。
在 WebIDE 中打开终端。这是你输入命令的地方。
创建一个名为
test_file.txt的新文件:touch test_file.txttouch命令用于创建一个空文件。如果文件已经存在,它会更新文件的时间戳而不会更改其内容。向文件中添加一些内容:
echo "This is a test file for our lab." > test_file.txt此命令使用
echo输出文本,并使用>将该输出重定向到文件中。使用>时要小心,因为它会覆盖文件中任何已有的内容。验证文件内容:
cat test_file.txtcat是「concatenate」的缩写,但它经常被用来显示文件的内容。你应该会看到消息「This is a test file for our lab.」。
如果你犯了错误或想重新开始,可以随时使用 rm test_file.txt 删除文件,然后从步骤 1 重新开始。
测试文件是否存在
现在我们已经创建了一个文件,让我们学习如何检查文件是否存在。这是 Shell 脚本中的一项常见任务,尤其是当你需要对文件执行操作时。
创建一个名为
file_exists.sh的新脚本文件:touch file_exists.sh向文件中添加以下内容:
#!/bin/bash filename="test_file.txt" if [ -e "$filename" ]; then echo "$filename exists" else echo "$filename does not exist" fi让我们来分解一下这段代码:
#!/bin/bash被称为 Shebang。它告诉系统这是一个 Bash 脚本。- 我们将变量
filename设置为test_file.txt。 if语句检查文件是否存在。-e是一个测试项,如果文件存在则返回真。- 我们使用
echo根据文件是否存在来打印消息。
保存文件并退出编辑器。
为脚本添加执行权限:
chmod +x file_exists.sh运行脚本:
./file_exists.sh你应该会看到输出:「test_file.txt exists」
现在,让我们用一个不存在的文件进行测试。首先,重命名我们的测试文件:
mv test_file.txt non_existent.txt此命令将
test_file.txt重命名为non_existent.txt。修改脚本以检查原始文件名
test_file.txt:nano file_exists.sh如果
filename变量尚未设置为test_file.txt,请将其更改为该值。再次运行脚本:
./file_exists.sh你应该会看到输出:「test_file.txt does not exist」
这个脚本演示了如何检查文件是否存在,当你的脚本需要处理可能存在也可能不存在的文件时,这一点至关重要。
测试目录是否存在
与测试文件是否存在类似,我们也可以检查目录是否存在。当你的脚本需要处理可能存在也可能不存在的目录时,这非常有用。
创建一个名为
dir_exists.sh的新脚本文件:touch dir_exists.sh向文件中添加以下内容:
#!/bin/bash dirname="test_directory" if [ -d "$dirname" ]; then echo "$dirname exists" else echo "$dirname does not exist" fi这个脚本与我们的文件存在性脚本非常相似,但它使用的是
-d而不是-e。-d测试专门用于检查目录是否存在。保存文件并退出编辑器。
为脚本添加执行权限:
chmod +x dir_exists.sh运行脚本:
./dir_exists.sh你应该会看到输出:「test_directory does not exist」
现在,让我们创建目录并再次运行脚本:
mkdir test_directory ./dir_exists.sh你现在应该会看到输出:「test_directory exists」
mkdir是创建新目录的命令。
这个脚本演示了如何检查目录是否存在。这在需要创建、修改或删除目录的脚本中特别有用。
测试文件权限
在 Linux 中,每个文件和目录都有相关的权限,决定了谁可以读取、写入或执行它们。在这一步中,我们将学习如何检查文件权限,特别是文件是否可读。
首先,让我们将文件重命名回原始名称:
mv non_existent.txt test_file.txt创建一个名为
file_readable.sh的新脚本文件:touch file_readable.sh向文件中添加以下内容:
#!/bin/bash filename="test_file.txt" if [ -r "$filename" ]; then echo "You have read permission for $filename" else echo "You do not have read permission for $filename" fi此脚本使用
-r测试,它会检查当前用户是否对该文件具有读取权限。保存文件并退出编辑器。
为脚本添加执行权限:
chmod +x file_readable.sh运行脚本:
./file_readable.sh你应该会看到输出:「You have read permission for test_file.txt」
现在,让我们移除读取权限并再次运行脚本:
chmod -r test_file.txt ./file_readable.sh你现在应该会看到输出:「You do not have read permission for test_file.txt」
chmod -r会移除文件的读取权限。恢复读取权限:
chmod +r test_file.txt恢复权限很重要,这样我们就不会意外地让文件保持不可读状态。
这个脚本演示了如何检查文件权限。理解和管理文件权限对于系统安全和脚本的正常运行至关重要。
总结
在本实验中,你学习了如何在 Shell 中执行基本的文件系统操作。你编写了脚本来测试文件和目录的存在性,以及文件权限。这些技能是在 Linux 环境中处理文件和目录的基础,也构成了更复杂的 Shell 脚本任务的基础。
你练习了:
- 了解你的工作环境
- 创建和操作文件
- 编写并执行 Shell 脚本
- 测试文件和目录是否存在
- 检查文件权限
随着你继续使用 Linux 系统并开发更高级的 Shell 脚本,这些技能将非常宝贵。请记住,在对文件或目录执行操作之前,务必先检查它们是否存在,以避免脚本中出现错误。此外,在处理敏感数据或系统文件时,请留意文件权限。
随着学习的深入,你可能想要探索更高级的文件测试,学习其他 Shell 脚本结构(如循环和函数),并练习将这些概念结合起来,创建更复杂、更强大的脚本。



