1. 命令概述
- 命令名称:
pwd(英文全拼:print working directory) - 核心功能:显示当前工作目录的绝对路径
- 主要用途:查看当前所在的目录位置
- 特点:简单易用,无参数,直接显示当前目录路径
2. 语法格式
pwd [选项]
3. 常用选项
| 选项 | 说明 |
|---|---|
-L | 显示逻辑路径(默认) |
-P | 显示物理路径,不跟随符号链接 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
4. 基本操作
(1) 基本使用
# 显示当前工作目录
pwd
# 显示当前工作目录的物理路径
pwd -P
# 显示当前工作目录的逻辑路径
pwd -L
# 显示帮助信息
pwd --help
# 显示版本信息
pwd --version
(2) 符号链接处理
# 创建符号链接
ln -s /path/to/target linkname
# 切换到符号链接
cd linkname
# 显示逻辑路径(符号链接路径)
pwd -L
# 显示物理路径(实际路径)
pwd -P
5. 常用实例详解
(1) 基本使用示例
# 显示当前工作目录
pwd
# 输出:/home/user
# 显示当前工作目录的物理路径
pwd -P
# 输出:/home/user
# 显示当前工作目录的逻辑路径
pwd -L
# 输出:/home/user
# 切换到其他目录后显示
cd /etc
pwd
# 输出:/etc
# 切换到根目录后显示
cd /
pwd
# 输出:/
# 切换到用户主目录后显示
cd ~
pwd
# 输出:/home/user
(2) 符号链接处理示例
# 创建符号链接
ln -s /etc link_to_etc
# 切换到符号链接
cd link_to_etc
# 显示逻辑路径(符号链接路径)
pwd -L
# 输出:/home/user/link_to_etc
# 显示物理路径(实际路径)
pwd -P
# 输出:/etc
# 显示默认路径(逻辑路径)
pwd
# 输出:/home/user/link_to_etc
# 切换到实际目录
cd /etc
# 显示当前目录
pwd
# 输出:/etc
# 显示物理路径
pwd -P
# 输出:/etc
# 显示逻辑路径
pwd -L
# 输出:/etc
(3) 组合使用示例
# 在脚本中使用pwd
#!/bin/bash
CURRENT_DIR=$(pwd)
echo "当前目录:$CURRENT_DIR"
# 在命令中使用pwd
cd $(pwd)/subdir
# 保存当前目录
SAVE_DIR=$(pwd)
cd /tmp
# 执行操作
cd "$SAVE_DIR"
# 显示当前目录的父目录
cd $(dirname $(pwd))
# 显示当前目录的绝对路径
echo "当前目录:$(pwd)"
# 显示当前目录的物理路径
echo "物理路径:$(pwd -P)"
# 显示当前目录的逻辑路径
echo "逻辑路径:$(pwd -L)"
6. 实际应用场景
场景一:脚本中的目录操作
#!/bin/bash
# 保存当前目录
ORIGINAL_DIR=$(pwd)
# 切换到工作目录
cd /path/to/workdir
# 执行操作
ls -l
# 返回原目录
cd "$ORIGINAL_DIR"
# 或者使用pushd/popd
pushd /path/to/workdir
ls -l
popd
场景二:日志记录
# 记录当前目录到日志
echo "$(date): 当前目录 $(pwd)" >> /var/log/myapp.log
# 记录操作日志
echo "$(date): 在目录 $(pwd) 执行了操作" >> /var/log/operation.log
# 记录错误日志
echo "$(date): 在目录 $(pwd) 发生错误" >> /var/log/error.log
# 记录调试信息
echo "DEBUG: 当前目录 $(pwd)" >> /var/log/debug.log
场景三:文件路径操作
# 获取当前目录的绝对路径
CURRENT_DIR=$(pwd)
# 获取文件的绝对路径
FILE_PATH="$CURRENT_DIR/file.txt"
# 获取目录的绝对路径
DIR_PATH="$CURRENT_DIR/subdir"
# 获取父目录的绝对路径
PARENT_DIR=$(dirname "$CURRENT_DIR")
# 获取当前目录的目录名
DIR_NAME=$(basename "$CURRENT_DIR")
# 获取当前目录的物理路径
PHYSICAL_PATH=$(pwd -P)
# 获取当前目录的逻辑路径
LOGICAL_PATH=$(pwd -L)
场景四:系统管理
# 检查当前目录是否为根目录
if [ "$(pwd)" = "/" ]; then
echo "当前在根目录"
else
echo "当前不在根目录"
fi
# 检查当前目录是否为用户主目录
if [ "$(pwd)" = "$HOME" ]; then
echo "当前在用户主目录"
else
echo "当前不在用户主目录"
fi
# 检查当前目录是否为指定目录
if [ "$(pwd)" = "/etc" ]; then
echo "当前在/etc目录"
else
echo "当前不在/etc目录"
fi
# 检查当前目录是否包含指定字符串
if [[ "$(pwd)" == *"home"* ]]; then
echo "当前目录包含home"
else
echo "当前目录不包含home"
fi
7. 与其他命令的区别
| 命令 | 特点 | 适用场景 |
|---|---|---|
pwd | 显示当前工作目录 | 查看当前目录路径 |
cd | 切换当前工作目录 | 改变当前目录 |
ls | 列出目录内容 | 查看文件列表 |
dirs | 显示目录栈内容 | 查看目录栈 |
pushd | 压入目录到栈 | 将目录添加到目录栈 |
popd | 弹出目录从栈 | 从目录栈中移除目录 |
8. 注意事项
- 符号链接:默认显示逻辑路径,使用
-P选项显示物理路径 - 权限问题:普通用户只能查看有权限的目录
- 环境变量:可以使用
$PWD环境变量获取当前目录 - 脚本中使用:在脚本中使用
$(pwd)获取当前目录 - 相对路径:
pwd总是显示绝对路径
9. 常见问题解决
(1) 权限不足
# 错误:权限不足
cd /root
pwd # 报错:Permission denied
# 正确:使用sudo
sudo pwd
# 正确:切换到有权限的目录
cd /tmp
pwd
# 正确:使用当前用户的主目录
cd ~
pwd
# 正确:使用公共目录
cd /var/log
pwd
(2) 目录不存在
# 错误:目录不存在
cd /nonexistent
pwd # 报错:No such file or directory
# 正确:检查目录是否存在
ls -d /path/to/dir
# 正确:使用存在的目录
cd /home
pwd
# 正确:使用当前目录
pwd
# 正确:使用根目录
cd /
pwd
(3) 符号链接问题
# 错误:符号链接指向不存在的目录
ln -s /nonexistent broken_link
cd broken_link
pwd # 报错:No such file or directory
# 正确:检查符号链接
ls -l linkname
# 正确:修复符号链接
ln -sf /path/to/target linkname
# 正确:使用物理路径
pwd -P
# 正确:使用绝对路径
cd /path/to/target
pwd
(4) 选项错误
# 错误:选项错误
pwd -x # 报错:无效选项
# 正确:使用支持的选项
pwd -L
pwd -P
# 错误:缺少参数
pwd -- # 报错:缺少参数
# 正确:使用正确的选项
pwd --help
pwd --version
# 错误:选项冲突
pwd -L -P # 可能报错
# 正确:使用不冲突的选项
pwd -L
pwd -P
核心要点总结:
pwd是显示当前工作目录的命令,简单易用- 常用选项:
-L(显示逻辑路径)、-P(显示物理路径) - 实际应用:脚本中的目录操作、日志记录、文件路径操作、系统管理
- 注意事项:默认显示逻辑路径,使用
-P选项显示物理路径
pwd命令是Linux系统目录管理的基础工具,熟练掌握可以大大提高系统管理效率。