如何在 Linux / UNIX 中使用 pwd 命令{附示例}
是print working directory的pwd缩写。该命令与 ls 和 cd 命令一起被视为 Linux、AIX、HP-UX、*BSD 和其他类 UNIX 操作系统上最常用的命令之一。 它可以在 Apple OS X 或 UNIX或Linux 操作系统下用于以下目的:pwd
=> 查找当前目录的完整路径。
=> 将当前目录的完整路径存储在 shell 变量中。
=> 验证绝对路径。
=> 验证物理路径,即排除符号链接。
当前目录
当前目录就是您在使用 bash 或 ksh 或 zsh 或 tcsh/csh shell 时当前操作的目录。您需要打开终端 (GUI) 或登录控制台才能使用命令行。
句法
语法是:
pwd pwd [options] var=$(pwd) echo "The current working directory $var."
示例
要打印当前工作目录,请输入:
$ pwd
示例输出:
/home/vivek
在此示例中,/home/vivek是您的当前目录。类 Unix 操作系统下的任何目录的完整路径始终以正斜杠开头。简而言之:
- /– 正斜杠 – 系统或文件系统的根目录。
- home– 子目录
- vivek– 子目录
要将当前目录存储在名为 x 的 shell 变量中,请输入:
x=$(pwd)
要打印当前目录,请使用 printf 命令或 echo 命令:
echo "The current working directory : $x"
或者
printf "The current working directory : %s" $x
使用 pwd 的典型 Linux/Unix shell 会话
大多数 Unix 用户将 pwd 命令与 ls 和 cd 命令一起使用:
## Where am I? pwd ## List the contents of the current directory ls ls -l # Change the current directory to Videos cd Videos pwd
示例输出:
图 01:带有 pwd、ls 和 cd 命令的典型 shell 用户会话。
Shell pwd 与 /bin/pwd
您的 shell 可能有自己的 pwd 版本,该版本通常会取代下面描述的版本。要查看包含名为 pwd 的可执行文件的所有位置,请输入:
$ type -a pwd
示例输出:
pwd is a shell builtin pwd is /bin/pwd
通过输入
pwd
要使用二进制版本,请键入完整路径 /bin/pwd:
/bin/pwd
请注意,这两个命令都会打印当前/工作目录。但是,/bin/pwd 还有更多选项,如下所述。
pwd 选项
要显示逻辑当前工作目录,请输入:
$ pwd -L
该-L选项使 pwd 使用环境中的 $PWD,即使它包含符号链接。如果环境变量 PWD 的内容提供了当前目录的绝对名称,没有 . 或 .. 部分,但可能有符号链接,则输出这些内容。否则,返回默认的 -P 处理:
$ pwd -P
显示物理当前工作目录(所有符号链接均已解析)。例如,~/bin/ 是符号链接:
示例输出:
$ pwd
$ ls -l ~/bin/
lrwxrwxrwx 1 vivek vivek 35 May 13 2012 /home/vivek/bin -> /home/vivek/realdata/scripts/utils/
cd 到 ~/bin/ 并使用 pwd 验证当前工作目录:
示例输出:
要查看实际的物理当前工作目录并避免所有名为 /home/vivek/bin 的符号链接,请输入:
示例输出:
$ cd ~/bin/
$ pwd
/home/vivek/bin
$ pwd -P
/home/vivek/realdata/scripts/utils
/bin/pwd 选项
/bin/pwd 版本的 pwd 命令还有两个附加选项。要显示 pwd 命令版本,请输入:
$ /bin/pwd --version
示例输出:
pwd (GNU coreutils) 8.5 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Jim Meyering.
要查看有关 pwd 的信息,请输入:
$ /bin/pwd --help
示例输出:
Usage: /bin/pwd [OPTION]... Print the full filename of the current working directory. -L, --logical use PWD from environment, even if it contains symlinks -P, --physical avoid all symlinks --help display this help and exit --version output version information and exit NOTE: your shell may have its own version of pwd, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports. Report pwd bugs to bug-coreutils@gnu.org GNU coreutils home page: <http://www.gnu.org/software/coreutils/> General help using GNU software: <http://www.gnu.org/gethelp/> For complete documentation, run: info coreutils 'pwd invocation'
Shell 脚本示例
基本版本:
#!/bin/bash ## Get the working dir _d="$(pwd)" ## cd to target cd /nas03/example/images/today ## do something echo "Uploading data to cdn..." ## get back to old dir cd "$_d"
一个完整的工作示例,使用 pwd 命令在设置目录权限之前通知用户当前的工作目录。
#!/bin/bash # Purpose: Set secure read-only permission for web-server DocumentRoot # Author: example < webmaster@example.com> under GPL v2.x+ # Usage: ./script # ./script /var/www #------------------------------------------------------- ## Get dir name from command line args # if $1 not passed, fall back to current directory _dir="${1:-.}" ## get the current working dir _pwd="$(pwd)" ## Permissions _dp="0544" _fp="0444" # Change me to Apache/Lighttpd/Nginx user:group names _user="www-data" _group="www-date" ## Die if _dir not found [ ! -d "$_dir" ] && { echo "Directory $_dir not found."; exit 1; } echo "Chaning file permissions for webserver directory and files to restrctive read-only mode for \"$_dir\"" read -p "Your current working directory is ${_pwd}. Are you sure (y / n) ?" ans if [ "$ans" == "y" ] then echo "Working on $_dir, please wait..." chown -R ${_user}:${_group} "$_dir" chmod -R $_fp "$_dir" find "$_dir" -type d -print0 | xargs -0 -I {} chmod $_dp "{}" fi
示例输出:
关于 bash/ksh 工作目录 shell 变量的说明
bash 和 ksh(以及其他 shell)在使用 cd 命令时设置以下环境变量:
- OLDPWD– cd 命令设置的上一个工作目录。
- PWD– cd 命令设置的当前工作目录。
要打印环境变量,请输入:
$ echo "$PWD $OLDPWD"
要使用环境变量,请输入:
$ pwd
/home/accounts/office/b/bom/f/2/2008/10/
$ cd /home/sales/pdfs
$ ls
$ vi sample.broacher.txt
# go back to /home/accounts/office/b/bom/f/2/2008/10/
$ cd "$OLDPWD"
$ pwd