【问题标题】:Run sha256sum (from Cygwin) on file with special character and blank (quoting does not work)在具有特殊字符和空白的文件上运行 sha256sum(来自 Cygwin)(引用不起作用)
【发布时间】:2018-11-27 13:23:38
【问题描述】:

我安装了 Cygwin 以便在 Windows 上使用 Linux 命令行工具。我还将它添加到我的 PATH 中。一般来说,它工作正常,但我观察到这种奇怪的行为:

我想在文件C:\Users\s1504gl\Desktop\Täst .txt 上运行sha256sum。注意德语变音符号ä 和文件扩展名前的空格。为了避免路径出现问题,我总是在命令行调用中引用路径,比如:

sha256sum "C:\Users\s1504gl\Desktop\Täst .txt"

但是,PowerShell 会返回

/usr/bin/sha256sum: '"C:\Users\s1504gl\Desktop\T'$'\303\244''st .txt"': 没有这样的文件或目录

当我将文件重命名为 Täst.txtTest .txt 时,它可以工作。所以特殊字符ä 和空格的组合似乎会导致问题。在这种情况下,用单引号交换双引号不会改变任何内容。

我很确定它必须使用 PowerShell,因为该示例在我的 Linux 机器上运行没有任何问题。

是否有其他方法可以转义我不知道的特殊字符和/或空格?

【问题讨论】:

    标签: powershell cygwin sha256


    【解决方案1】:

    从 Cygwin 终端运行

    sha256sum "/cygdrive/C/Users/s1504gl/Desktop/Täst\ .txt"
    

    一般来说 Cygwin 程序不接受 Windows 路径,并且确实可以使用 POSIX 路径

    【讨论】:

    • 这将返回sha256sum: '/cygdrive/C/Users/s1504gl/Desktop/Täst\ .txt': No such file or directory。无论如何,在 Cygwin 终端中,我的代码从上面运行。但我需要一个在 PowerShell 或 cmd.exe 中运行的解决方案...
    【解决方案2】:

    我找到了以下解决方法:

    我从 R 创建了一个临时文件,其中包含所有必要的命令,然后使用 bash 运行这个临时文件,它也包含在 Cygwin 中。这样,我就避免了由于 Windows 中的不同编码和 Cygwin 的 Linux 工具而出现的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多