Macos 规范化OSX上bash中的任意文件路径

Macos 规范化OSX上bash中的任意文件路径,macos,bash,file,path,Macos,Bash,File,Path,我正在寻找一种在bash中规范化任意文件路径的方法,将和.解析为它们的绝对值。示例: > cd /foo/bar > normalize_path "." /foo/bar > normalize_path "../baz" /foo/baz > normalize_path "../../folder/that/doesnt/exist/" /folder/that/doesnt/exist 请注意,在上面的示例中,normalize_path返回一个值,即使该

我正在寻找一种在bash中规范化任意文件路径的方法,将
.
解析为它们的绝对值。示例:

> cd /foo/bar
> normalize_path "."   
/foo/bar
> normalize_path "../baz"
/foo/baz
> normalize_path "../../folder/that/doesnt/exist/"
/folder/that/doesnt/exist
请注意,在上面的示例中,
normalize_path
返回一个值,即使该路径与实际文件夹或文件不对应。我在StackOverflow(,)上看到的所有关于绝对路径或规范化路径的问题都假设路径指向真实文件,并使用
realpath
pwd
对其进行规范化,但这对我的用例不起作用


换句话说,我正在寻找一个bash函数,它只将路径作为字符串进行操作,而不实际查看文件系统,这与Java中的类似。

Readlink是一个不错的选择,或者在您的例子中是greadlink。它在GNU核心实用程序包中。“brew安装coreutils”(如果使用家用brew)。然后像rickhg12hs所说的那样使用greadlink-m../my\u duly\u filename.txt。

它必须只在
bash
中使用,或者你可以在这里使用
readlink-m你的想象路径
或者
realpath-m你的想象路径
?@rickhg12hs:我正在寻找在OS X上运行的东西。啊,我不知道
greadlink
有一个
-m
参数!正如许多其他答案中所建议的那样,我尝试了
-f
,如果文件不存在,它就不起作用。但是
-m
,AKA
--规范化缺失
正是我想要的。谢谢