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 文件操作流程与状态转换

下图展示了文件与目录在生命周期中的状态转换,以及各命令在其中的作用位置。

文件/目录生命周期状态转换图 不存在 空文件/空目录 有内容文件/目录 重命名/移动后 已删除 create / mkdir 写入/复制内容 mv rm / rm -r 彻底消失 不可恢复

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 条件判断来增强脚本的健壮性。