为什么 pandoc 在 cygwin 上的某些路径上有问题?
Why does pandoc have troubles with certain paths on cygwin?
我已经使用 Windows 安装程序安装了 pandoc.exe 2.10,我正在从 cygwin 3.1.6-1 调用它。与大多数其他命令不同,pandoc 似乎在某些路径上存在问题。当输入或输出文件路径包含以下之一时,我收到错误“openBinaryFile:不存在(没有这样的文件或目录)”:
- A
~
,例如~/myfile.md
.
- A
/cygdrive
,例如/cygdrive/c/Users/me/myfile.md
.
- 网络驱动器,例如
//server/path/myfile.md
.
相比之下,包含以下工作的路径:
- 一个盘符,例如
c:/Users/me/myfile.md
.
- 相对于当前目录的路径,例如
./myfile.md
或简单地 myfile.md
.
- 带反斜杠的网络驱动器,例如
\server\path\myfile.md
.
这是为什么?为什么 pandoc 的行为与其他命令不同?
错误消息的大多数 Google 命中与 R Markdown 相关。在 JDK build-dev 邮件列表中,问题与 pandoc 不是本机 cygwin 应用程序有关(参见 CR: 8180540: Add pandoc build fix for windows)。
正如 /u/matzeri 所说(谢谢!),这是因为 Windows pandoc
是一个 Windows 程序并且不识别 Cygwin 路径样式。
解决此问题的可靠方法可能是将 cygpath
与 --absolute
和 --mixed
标志一起使用,如下所示:
pandoc "$(cygpath -am path/to/file.md)" -o "$(cygpath -am path/to/other_file.html)"
我已经使用 Windows 安装程序安装了 pandoc.exe 2.10,我正在从 cygwin 3.1.6-1 调用它。与大多数其他命令不同,pandoc 似乎在某些路径上存在问题。当输入或输出文件路径包含以下之一时,我收到错误“openBinaryFile:不存在(没有这样的文件或目录)”:
- A
~
,例如~/myfile.md
. - A
/cygdrive
,例如/cygdrive/c/Users/me/myfile.md
. - 网络驱动器,例如
//server/path/myfile.md
.
相比之下,包含以下工作的路径:
- 一个盘符,例如
c:/Users/me/myfile.md
. - 相对于当前目录的路径,例如
./myfile.md
或简单地myfile.md
. - 带反斜杠的网络驱动器,例如
\server\path\myfile.md
.
这是为什么?为什么 pandoc 的行为与其他命令不同?
错误消息的大多数 Google 命中与 R Markdown 相关。在 JDK build-dev 邮件列表中,问题与 pandoc 不是本机 cygwin 应用程序有关(参见 CR: 8180540: Add pandoc build fix for windows)。
正如 /u/matzeri 所说(谢谢!),这是因为 Windows pandoc
是一个 Windows 程序并且不识别 Cygwin 路径样式。
解决此问题的可靠方法可能是将 cygpath
与 --absolute
和 --mixed
标志一起使用,如下所示:
pandoc "$(cygpath -am path/to/file.md)" -o "$(cygpath -am path/to/other_file.html)"