进入通过链接链接的目录


12

当我cd链接时,当前路径的前缀是链接的路径,而不是链接链接到的目录的路径。例如

~/dirlinks/maths$ ls -l logic
lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic

~/dirlinks/maths$ cd logic
~/dirlinks/maths/logic$ pwd
/home/tim/dirlinks/maths/logic

~/dirlinks/maths/logic$ cd ..
~/dirlinks/maths$

我想将当前路径更改为链接目录的路径,以便我也可以使用链接目录的父目录。除了ls找到链接目录然后cd进入目录的链接之外,还有哪些更简单的方法可以实现该目的?例如,cd进入链接后,如何将当前路径更改为链接目录的路径?

Answers:


22

使用POSIX shell,可以使用cd内置-P选项:

cd -P <link>

随着bash来自man bash

-P选项说使用物理目录结构,而不是跟随符号链接(另请参阅set Builtin命令的-P选项)


7
您可以cd -P .在原始文件之后执行此操作cd
ctrl-alt-delor 2014年

5

您可以readlink用来确定链接指向的位置,并将此输出作为的目标cd

cd "$(readlink <link>)"

如果有其他指向符号链接的符号链接,readlink则仅提供目标,除非您指定其中一个选项以遵循符号链接到规范文件目标,例如readlink -f <link>

readlink-符号链接或规范文件名的打印值

-f,--
canonicalize通过递归跟随给定名称的每个组件中的每个符号链接来规范化;除最后一个组件外的所有组件都必须存在

-e,--
canonicalize -existing canonicalize通过递归跟随给定名称的每个组件中的每个符号链接,所有组件必须存在

-m,--
canonicalize -missing 通过递归跟随给定名称的每个组件中的每个符号链接来规范化,而无需组件存在


5

类似Korn的外壳程序会跟踪到当前目录的路径中的符号链接(这称为逻辑当前目录跟踪)。如果要展开所有符号链接,请将选项传递-Pcd内置函数(用于物理当前目录跟踪):

cd -P logic

如果您在通过符号链接访问的目录中,并且想要将跟踪的当前目录切换到扩展了符号链接的路径,请运行

cd -P .

如果要使用扩展的符号链接来打印当前目录的路径,请运行pwd -P。在bash中,如果要关闭逻辑跟踪,请运行set -P; 在zsh中,运行set -wsetopt chase_links

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.