实战指南filesystem
文件与目录安全练习
在家目录的隔离练习区完成创建、查看、复制、改名、文本替换和受控删除,并验证每一步结果。
所有改动限制在 $HOME/practice/file-operations,完成后能够查看结果或交互式清理整个练习区。
- 使用普通用户登录 GNU/Linux 或 Raspberry Pi OS。
- 家目录至少有少量可用空间。
- 系统提供 GNU Coreutils;文本替换步骤使用 GNU
sed。 - 下面的
rm会删除练习文件,执行清理前必须核对路径和内容。
-
创建名称唯一的隔离目录并确认当前位置:
Terminal window mkdir -p -- "$HOME/practice"WORK_DIR="$(mktemp -d "$HOME/practice/file-operations.XXXXXX")"mkdir -- "$WORK_DIR/empty-dir"cd -- "$WORK_DIR"pwdmktemp -d每次创建新目录,避免重复练习时覆盖旧文件。后续步骤必须在同一个终端会话执行。 -
创建并查看文本文件:
Terminal window touch -- note.txtprintf '%s\n' 'first line' 'second line' > note.txtcat -n -- note.txt -
复制备份并改名:
Terminal window cp -i -- note.txt note.txt.copymv -i -- note.txt note-renamed.txtls -la -- . -
修改第二行,同时让 GNU
sed创建备份:Terminal window sed -i.bak '2c\second line updated' -- note-renamed.txtcat -n -- note-renamed.txt -
删除空目录:
Terminal window rmdir -- empty-dir
pwdls -la -- .cat -n -- note-renamed.txt应看到 note-renamed.txt 的第二行为 second line updated,并存在 note-renamed.txt.bak 与 note.txt.copy;empty-dir 已不存在。
确认变量仍指向本次由 mktemp 创建的目录,先离开练习目录,再交互式删除:
case "$WORK_DIR" in "$HOME"/practice/file-operations.*) cd -- "$HOME" ls -la -- "$WORK_DIR" rm -ri -- "$WORK_DIR" ;; *) printf '%s\n' 'Refusing unsafe cleanup path' >&2 ;;esac变量为空、Shell 会话已经更换或路径不匹配时,保护分支会拒绝清理。rm 不会把文件移入回收站,对每个询问确认目标后再回答。
| 现象 | 原因 | 处理 |
|---|---|---|
Permission denied |
不在自己的目录或父目录不可写 | 运行 pwd,回到 $HOME 下重新创建练习区;不要直接加 sudo。 |
sed: invalid option |
当前系统不是 GNU sed |
运行 sed --help 确认实现,改用该平台支持的备份语法。 |
rmdir: Directory not empty |
目录仍有内容 | 用 ls -la -- empty-dir 检查,不要盲目改用递归删除。 |
cp 询问是否覆盖 |
目标备份已存在 | 核对旧备份后选择是否覆盖,或更换文件名。 |