4. 文件操作命令:创建、复制、移动、删除文件与目录
在 UEFI Shell 环境中,文件与目录的管理是脚本开发的基础。本章将系统讲解 create、cp、mv、rm、mkdir 五个核心命令的用法、参数差异及典型场景。掌握这些命令后,你可以在 Shell 脚本中高效地组织文件系统结构、备份配置数据或清理临时文件。
4.1 命令概览与功能对比
下表列出了五个命令的基本功能、常用参数及注意事项,便于快速查阅。
| 命令 | 功能 | 常用参数 | 注意事项 |
|---|---|---|---|
| create | 创建空文件 | 无参数 | 文件已存在时不会覆盖,仅更新时间戳 |
| cp | 复制文件或目录 | -r(递归复制目录) |
目标路径需有写权限;同名文件直接覆盖 |
| mv | 移动或重命名文件/目录 | 无递归参数,自动处理目录 | 跨文件系统移动时可能失败 |
| rm | 删除文件或目录 | -r(递归删除目录) |
删除后不可恢复,谨慎使用 |
| mkdir | 创建目录 | 无参数 | 父目录不存在时创建失败 |
提示: UEFI Shell 的命令行参数风格与 Linux Shell 类似,但部分命令(如
create)是 UEFI 特有的,在 Linux 中对应 touch。注意区分。
4.2 命令详解与示例
4.2.1 create — 创建空文件
create 命令用于生成一个空文件。如果文件已存在,则更新其最后修改时间,但不会清空内容。
Shell> create startup.nsh
Shell> create config.txt
执行后,当前目录下会生成两个空文件。常用于初始化日志文件或占位文件。
4.2.2 mkdir — 创建目录
mkdir 命令用于创建新目录。一次只能创建一个层级,父目录必须存在。
Shell> mkdir logs
Shell> mkdir fs0:\backup\2025
若 fs0:\backup 不存在,第二条命令会报错。建议先检查父目录是否存在。
4.2.3 cp — 复制文件与目录
cp 命令用于复制文件或目录。复制目录时必须加 -r 参数。
Shell> cp startup.nsh startup_backup.nsh
Shell> cp -r logs logs_backup
Shell> cp fs0:\config.ini fs1:\config.ini
跨文件系统复制时,目标路径需指定完整设备标识符(如 fs1:)。
4.2.4 mv — 移动与重命名
mv 命令同时支持移动和重命名。移动目录时无需递归参数。
Shell> mv startup.nsh old_startup.nsh # 重命名
Shell> mv logs fs0:\backup\ # 移动到其他目录
Shell> mv fs0:\temp\*.log fs1:\archive\ # 批量移动
批量移动时支持通配符 * 和 ?,但目标路径必须以 \ 结尾。
4.2.5 rm — 删除文件与目录
rm 命令用于删除文件或目录。删除目录必须加 -r 参数,且删除后不可恢复。
Shell> rm temp.txt
Shell> rm -r logs
Shell> rm -r fs0:\temp\*
警告: UEFI Shell 没有回收站机制。执行
rm -r 前务必确认路径正确,建议先使用 ls 查看内容。
4.3 文件操作流程与状态转换
下图展示了文件与目录在生命周期中的状态转换,以及各命令在其中的作用位置。
4.4 常见错误与避坑指南
- 路径分隔符: UEFI Shell 使用反斜杠
\作为路径分隔符,与 Windows 一致。在脚本中注意不要混用正斜杠。 - 设备标识: 跨文件系统操作时,必须指定设备名(如
fs0:、fs1:),否则默认操作当前设备。 - 通配符范围:
cp和mv支持通配符,但rm的通配符展开可能包含隐藏文件,建议先用ls预览。 - 目录递归:
cp -r和rm -r会递归处理所有子目录,务必确认目标路径无误。
4.5 综合脚本示例
以下脚本演示了在 UEFI Shell 中创建备份目录、复制配置文件、重命名旧日志并清理临时文件的全流程。
@echo -off
echo "=== 系统备份脚本开始 ==="
set target_dir fs0:\backup\%date%
mkdir %target_dir%
cp fs0:\config.ini %target_dir%\config_backup.ini
mv fs0:\logs\*.log %target_dir%\
rm -r fs0:\temp\
echo "备份完成,目标路径:%target_dir%"
echo "=== 脚本结束 ==="
关键点: 脚本中使用
%date% 动态生成备份目录名,避免覆盖历史备份。注意 mkdir 前需确保 fs0:\backup 已存在。
4.6 命令参数速查表
| 命令 | 参数 | 说明 | 示例 |
|---|---|---|---|
| cp | -r |
递归复制目录及其内容 | cp -r dir1 dir2 |
| rm | -r |
递归删除目录及其内容 | rm -r dir |
| mv | 无 | 自动处理文件与目录 | mv old new |
| mkdir | 无 | 创建单层目录 | mkdir newdir |
| create | 无 | 创建空文件或更新时间戳 | create file.txt |
通过本章的学习,你已经掌握了 UEFI Shell 中文件与目录操作的核心命令。在实际脚本开发中,建议将 cp、mv、rm 组合使用,并配合 if exist 条件判断来增强脚本的健壮性。