介绍
在本挑战中,你将学习如何创建一个简单的 Shell 脚本来处理 Shell 命令的输出。这是实现任务自动化以及从命令行工具中提取特定信息的关键技能。你将学习如何捕获命令输出、操作数据,并在脚本中使用这些处理后的信息。本挑战将帮助你掌握系统管理中必不可少的实用脚本编写技巧。
创建处理命令输出的 Shell 脚本
在这一步骤中,你将创建一个 Shell 脚本,用于捕获 ls -l 命令的输出,提取特定信息(文件大小和文件名),并以格式化的方式显示出来。此练习演示了如何解析命令输出,这是 Shell 脚本编写中的常见任务。
任务
- 创建一个捕获
ls -l命令输出的 Shell 脚本。 - 从每个文件的
ls -l输出中提取文件大小和文件名。 - 以特定的格式显示提取的信息。
要求
在
~/project/scripts目录下创建脚本。脚本命名为
process_ls.sh。脚本必须以
#!/bin/bash解释器声明(shebang)开头。脚本应捕获
ls -l命令的输出并将其存储在变量中。对于
ls -l输出中列出的每个文件,提取其大小和名称。按照以下格式显示提取的文件大小和文件名:
File size: <file_size> bytes File name: <file_name>将
<file_size>替换为实际的文件字节大小,将<file_name>替换为实际的文件名。
示例
假设你的目录中有一些文件。运行脚本时,输出应类似于:
[labex@host ~]$ cd ~/project/scripts
[labex@host scripts]$ nano process_ls.sh
[labex@host scripts]$ chmod +x process_ls.sh
[labex@host scripts]$ ./process_ls.sh
File size: 1300 bytes
File name: process_ls.sh
[labex@host scripts]$
具体的文件大小和名称将取决于你当前目录的内容。
提示
- 你可以使用命令替换(例如
variable=$(command))来捕获命令的输出。 - 要处理命令输出的每一行,可以使用
while read循环。 ls -l命令提供了详细信息。你可能需要使用awk或cut等工具从输出的每一行中提取特定的列(字段)。- 请记住,
ls -l输出的第一行通常以「total」开头,在处理单个文件时应跳过该行。 - 确保你的脚本具有执行权限(
chmod +x)。
总结
在本挑战中,你学习了如何创建 Shell 脚本来处理命令的输出。具体来说,你捕获了 ls -l 的输出,提取了文件大小和名称,并以格式化的方式进行了展示。此练习演示了 Shell 脚本编写的核心概念,如命令替换、while read 循环以及使用 awk 进行文本处理。这些技能对于自动化任务、解析日志文件以及从各种命令行工具中提取特定数据至关重要,也是 RHCSA 考试和日常系统管理工作的常见要求。



