对于不存在的文件,Linux 的“readlink -e”替代方案

对于不存在的文件,Linux 的“readlink -e”替代方案

在 Windows 上,我经常创建一个不存在的文件的完整路径,以便可以将其提供给文件保存对话框,从而告诉主机应用程序在哪里保存文件。使用 Cygwin,这可以完成:

cygpath -au Some/Relative/Path.blah # For Cygwin apps
cygpath -aw Some/Relative/Path.blah # For Windows apps

我经常将生成的完整路径通过管道传输到 Cygwin,putclip以便我可以将其粘贴到相关应用程序的文件保存对话框中。更准确地说,我将它通过管道传输到我自己的函数putclp(没有“i”),这会删​​除终止回车符。

我发现的 Linux 最接近的对应物是

readlink -e Some/Relative/Path.blah

我将其通过管道连接到xsel -ipX-windows 主剪贴板或xsel -ibUbuntu 中更现代的类似 Windows 的剪贴板。

不幸的是,readlink -e只返回一条路径现存的文件。我经常需要为不存在的文件创建完整路径,因为我告诉应用程序在哪里创建文件。

cygpath/是否有一个对应项readlink,可以根据指定的相对路径创建不存在的文件的完整路径?

如果我们假设所需的命令被调用GetFullPath,则以下是所需功能的示例:

GetFullPath Relative/Path/To/Nonexistent/File

标准输出的结果将是/The/Full/Path/To/Nonexistent/File.

答案1

realpath -m Some/Relative/Path.blah

就足够了——不需要解析 Linux 上的符号链接,涉及链接的路径和不涉及链接的路径之间实际上没有使用差异。您可以对后者执行的所有操作也适用于前者。保存对话框不介意!

相同的-m选项也适用于readlink -e Some/Relative/Path.blah,如果您出于某种相当奇怪的原因,真的关心保存对话框中没有符号链接!

相关内容