从bash

时间:2018-01-09 10:54:02

标签: bash filesystems

我在bash中寻找一种方法来获取给定文件的父级父级的完整路径。例如,user@host:~/grand-parent/parent $ {get-grand-parent} file应该返回/home/user/grand-parent/

我已多次尝试使用dirname,但显然它只是拆分传递的字符串并返回第二个最后一个路径。 dirname $(dirname parent/file)就像.一样返回dirname $(dirname $(dirname parent/file)),所以只有在我传递完整路径时才会有效。

实现这一目标的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

调用dirname一次以获取父paht。

$ realpath mediawiki/LocalSettings.php
/opt/mediawiki/LocalSettings.php

要获取提供文件夹或文件相对路径的完整路径,请使用以下

之一

1 - realpath

$ readlink -m mediawiki/LocalSettings.php
/opt/mediawiki/LocalSettings.php

2 - readlink

echo "$(cd "$(dirname "mediawiki/LocalSettings.php")"; pwd)/$(basename "mediawiki/LocalSettings.php")"

对于内置解决方案,您必须具有创造性

call to "Mat" is ambiguous

答案 1 :(得分:0)

解决方案我基于@JoaoVitorino回答了。

$ pwd
/home/user/grand-parent/parent
$ dirname $(dirname $(realpath file))
/home/user/grand-parent