从bash中的相对路径获取文件父级的父级的完整路径

从bash中的相对路径获取文件父级的父级的完整路径,bash,filesystems,Bash,Filesystems,我正在bash中寻找一种方法来获取给定文件的父级的完整路径。例如user@host:~/grandparent/parent${get grandparent}文件应返回/home/user/grandparent/ 我已经多次尝试使用dirname,但显然它只是分割传递的字符串并返回倒数第二条路径dirname$(dirname parent/file)返回,就像dirname$(dirname$(dirname parent/file))一样,因此它只有在传递完整路径时才起作用 实现这一点的

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

我已经多次尝试使用
dirname
,但显然它只是分割传递的字符串并返回倒数第二条路径
dirname$(dirname parent/file)
返回
,就像
dirname$(dirname$(dirname parent/file))
一样,因此它只有在传递完整路径时才起作用


实现这一点的最佳方法是什么?

调用dirname一次以获取父paht

$ pwd
/opt
$ dirname mediawiki/maintenance
mediawiki
$ dirname mediawiki/maintenance/mssql/
mediawiki/maintenance
要获得文件夹或文件相对路径的完整路径,请使用以下命令之一

1-realpath

$ realpath mediawiki/LocalSettings.php
/opt/mediawiki/LocalSettings.php
2-读链接

$ readlink -m mediawiki/LocalSettings.php
/opt/mediawiki/LocalSettings.php
对于内置解决方案,您必须具有创造性

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

我根据@JoaoVitorino的答案提出了解决方案

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

dirname
不返回完整路径。至少在Ubuntu17.04上没有。你的回答没有给出我所问的“父母的父母”,但它足以解释我的问题。我会接受的。