在 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 -ip
X-windows 主剪贴板或xsel -ib
Ubuntu 中更现代的类似 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
,如果您出于某种相当奇怪的原因,真的关心保存对话框中没有符号链接!