【问题标题】:Bug in GnuWin32 port of mkdir?mkdir 的 GnuWin32 端口中的错误?
【发布时间】:2021-03-29 15:45:32
【问题描述】:

我似乎遇到了 GnuWin32 的 mkdir 的奇怪行为(来自 here):

C:\sandbox>"C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE" --verbose -p Q:/scratch/foo/bar
C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE: created directory `Q:/scratch'
C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE: created directory `Q:/scratch/foo'
C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE: created directory `Q:/scratch/foo/bar'

在上面,当前驱动器是C,目标驱动器是Q。 正如预期的那样,层次结构在Q:/scratch/foo/bar中创建

现在,几乎相同的示例,但当前驱动器和目标驱动器都是 C。

C:\sandbox>"C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE" --verbose -p C:/scratch/foo/bar
C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE: created directory `C:/scratch'
C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE: created directory `C:/scratch/foo'
C:\Program Files (x86)\GnuWin32\bin\mkdir.EXE: created directory `C:/scratch/foo/bar'

mkdir 的输出看起来正确且非常可预测。 但是,C:/scratch/foo/bar 并没有真正创建任何内容。相反,目录层次结构是使用当前目录作为根创建的,即创建的是C:/sandbox/scratch/foo/bar

谁能确认?这是一个错误吗? 如果我有时间,我会看看源代码,但是......

有人知道比 5.3.0 更新的 CoreUtils 版本已移植到 Win32 吗?

【问题讨论】:

    标签: gnuwin32


    【解决方案1】:

    看起来确实是个小错误。似乎 GnuWin32 的端口不喜欢驱动器号后面的冒号后面的正斜杠。使用反斜杠,它的行为都正确

    C:\sandbox> mkdir --verbose -p Q:\scratch/foo/bar
    

    C:\sandbox> mkdir --verbose -p C:\scratch/foo/bar
    

    但是(据报道)当使用正斜杠时,它只有在

    C:\sandbox> mkdir --verbose -p Q:/scratch/foo/bar
    

    在上面,请注意目标与提示位于不同的驱动器上)但不是

    C:\sandbox> mkdir --verbose -p C:/scratch/foo/bar
    

    在上面,注意目标与提示符在同一个驱动器上

    来自UnxUtils 的真正旧的 mkdir 端口始终具有正确的行为。这是我能找到的唯一可行的替代方案。

    【讨论】:

      猜你喜欢
      • 2011-02-28
      • 2013-07-02
      • 2011-02-14
      • 2013-01-27
      • 2018-03-09
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      相关资源
      最近更新 更多