Linux Bash——如何通过符号链接知道我实际位于哪个目录中?

Linux Bash——如何通过符号链接知道我实际位于哪个目录中?

假设我有一个符号链接链 A -> B -> C

当我输入 pwd 时,它可能会显示 A、B 或 C,具体取决于我如何到达这里。

如何显示物理目录地址(即不由任何符号链接表示的地址)?

答案1

你有没有尝试过

pwd -P

它对我有用(使用 zsh)。

$ ls -l

  drwxrwxr-x 2 xxxxxxx xxxxxxx 4096 Aug 28 10:14 a 
  lrwxrwxrwx 1 xxxxxxx xxxxxxx    1 Aug 28 10:15 b -> a

$ cd b

$ pwd
  /home/xxxxxxx/temp/b

$ pwd -P
  /home/xxxxxxx/temp/a

答案2

  • 您正在搜索的命令可能是**pwd -P**
  • 您甚至会发现很有用readlink -f。(man info coreutils readlink)。
  • 在某些系统中你可以找到真实路径 你不仅可以在当前目录调用
    realpath . ,还可以在任何其他文件调用realpath \my\long\path\file.ext

您的shell通常有一个内置 密码用来代替 的命令/bin/pwd
如果你在 shell 中写入,type pwd它会回答你的 shell 是否为你提供了内置版本。

如需正确的帮助,您可以参考

  • man pwd通常用于\bin\pwd命令
  • man bash然后搜索pwd内置版本。
  • man <TheShellName>对于其他 shell (zsh、csh、tcsh……)

例如man bash你可以阅读

密码[-LP]

打印当前工作目录的绝对路径名。 如果提供了 -P 选项,则打印的路径名不包含符号链接或者启用 set 内置命令的 -o 物理选项。如果使用 -L 选项,则打印的路径名可能包含符号链接。除非在读取当前目录名称时发生错误或提供了无效选项,否则返回状态为 0。

答案3

您可以从当前目录使用 readlink(如果您的发行版可用):

$ readlink -f .

或者使用完整路径:

$ readlink -f /my-dir/with-some-link

rhel/centos 在 coreutils pkg.hth 中提供它。

相关内容