我正在尝试符号链接,但遇到了几个问题。第一个是在跟随目录的符号链接后如何显示实际工作目录而不是相对于符号链接的目录(pwd
例如,使用时)。第二个是如何“备份”到文件系统中的实际目录,而不是备份到符号链接。
答案1
你想要的是pwd -P
。
从man pwd
CentOS 6 开始:
-L, --logical use PWD from environment, even if it contains symlinks -P, --physical avoid all symlinks
或者,来自 BSDpwd
手册页,措辞稍微更有帮助:
-L Display the logical current working directory. -P Display the physical current working directory (all symbolic links resolved).
我不是 100% 确定“备份”是什么意思,但假设您的意思是“将目录更改为当前目录的父目录”,您可以使用:
cd "$(dirname "$(pwd -P)")"
这相当于cd ..
您当前的工作路径不包含符号链接。
或者,您可以使用cd "$(pwd -P)"
转到当前逻辑目录的物理路径,然后cd ..
根据需要使用。
答案2
来自man pwd
我的 Ubuntu:
你的 shell 可能有自己的 pwd 版本
我用bash
。简单的pwd
命令给了我一个关于符号链接的路径;但/bin/pwd
返回实际路径。该cd
命令也是 bash 内置命令。
换句话说:这是 shell 特定的。
编辑:thrig 的评论(见下文)似乎是我在这一行下面写的所有内容的更好替代方案。
要“备份”到实际目录中,请尝试cd "$(/bin/pwd)/.."
或cd "$(/bin/pwd)"; cd ..
.我认为可以调整第二种形式来构建 的别名cd
:
alias cd='cd "$(/bin/pwd)"; cd'
以类似的方式你可以摆脱 bashpwd
内置:
alias pwd=`/bin/pwd`