如何将相对符号链接路径更改为“实际”路径(在 Ranger 或终端中)

如何将相对符号链接路径更改为“实际”路径(在 Ranger 或终端中)

什么是实际路径?考虑文件夹A在文件系统和符号链接中到它。考虑当前在 Ranger(或终端)内的子目录中/home/B/sub1/sub2事实上就是这样/another_but_actual_path/A/sub1/sub2。我想要的是有一个工具/命令/脚本将相对路径转换为实际路径。我的意思是在pwd显示时/home/B/sub1/sub2,我想访问该路径/another_but_actual_path/A/sub1/sub2

ps我尝试过readlink,但它无法给我实际的路径。

ps我不知道所谓的实际路径是否有名称。

答案1

标准Linux“coreutils”包包含一个命令realpath

这将遵循指定路径的所有符号链接,并返回与其关联的“真实”路径。

所以:

$ mkdir -p /tmp/foo/bar
$ ln -s /tmp/foo $HOME/foo
$ realpath $HOME/foo
/tmp/foo
$ realpath $HOME/foo/bar
/tmp/foo/bar
$ realpath $HOME/foo/bar/baz
/tmp/foo/bar/baz

我们可以看到该链接$HOME/foo正在被替换为 的真实路径/tmp/foo

最后一个条目不必存在,但所有中间点必须存在。

$ realpath $HOME/foo/bar/baz/qux
realpath: '/home/sweh/foo/bar/baz/qux': No such file or directory

那是因为没有baz目录。

答案2

在 Ranger 中,您可以使用glgL命令。输入g,然后:

key          command
 L           cd -r %f
 l           cd -r .

相关内容