02 目录与路径
学习目标
- 能判断当前所在目录。
- 能列出目录内容并切换目录。
- 能理解绝对路径、相对路径、家目录和上级目录。
命令总览
| 命令 | 用途 | 含义 | 基本用法 | 例子 |
|---|---|---|---|---|
pwd | 显示当前目录 | print working directory,打印当前工作目录 | pwd | pwd |
ls | 列出文件和目录 | list,查看目录内容 | ls [选项] [路径] | ls -lah |
cd | 切换目录 | change directory,改变当前目录 | cd 路径 | cd /var/log |
tree | 树状显示目录 | 以层级结构展示目录内容 | tree [路径] | tree . |
dirname | 取路径中的目录部分 | 从路径里去掉最后的文件名或目录名 | dirname 路径 | dirname /tmp/a.txt |
basename | 取路径中的文件名部分 | 从路径里取最后一段名称 | basename 路径 | basename /tmp/a.txt |
realpath | 规范化并解析路径 | 在 GNU/Linux 上输出 canonical absolute path | realpath [选项] 路径 | realpath -e -- . |
readlink | 读取符号链接 | 查看链接目标;选项依实现不同 | readlink 路径 | readlink /proc/self/exe |
常用场景
查看当前位置和当前目录文件:
pwd
ls -lah -- .切换到常见目录:
cd ~
cd ..
cd /var/log
cd -查看目录层级:
tree .
tree -L 2 .拆分路径:
dirname /home/user/project/app.py
basename /home/user/project/app.py
realpath -e -- .新手注意
/开头的是绝对路径,例如/home/user。- 不以
/开头的是相对路径,例如./data、../logs。 ~表示当前用户的家目录。.表示当前目录,..表示上一级目录。ls -lah很常用:-l显示详细信息,-a显示隐藏文件,-h使用易读大小。tree有些系统默认没有安装;没有时先用ls。- 符号链接显示的路径与最终对象可能不同;写入、删除和递归操作前要解析并核对绝对路径。
- WSL 的
/mnt/c/...指向 Windows 文件系统;权限、大小写和 I/O 性能可能与 Linux 家目录不同。 - 变量和带空格路径要引用,例如
cd -- "$HOME/My Project"。
临时目录练习
先按 安全实验环境 创建唯一目录,然后运行:
path_lab=$(mktemp -d "$lab_real/path-lab.XXXXXX") || exit 1
mkdir -- "$path_lab/real dir"
ln -s -- "$path_lab/real dir" "$path_lab/link dir"
cd -- "$path_lab/link dir"
printf 'logical=%s\n' "$PWD"
printf 'physical=%s\n' "$(pwd -P)"
realpath -e -- .
cd -- "$lab_real"解释 logical path、physical path 与符号链接解析的区别,并用 readlink -- "$path_lab/link dir" 检查链接保存的目标文本。$lab_real 来自导论,不要在新的 Shell 中凭空假设它仍存在;练习目录保留供人工检查,不自动递归删除。