我安装了Cygwin以便在Windows上使用Linux命令行工具。我也将它添加到了我的PATH。通常,它可以正常工作,但我观察到这种奇怪的行为:
我要在文件sha256sum
上运行C:\Users\s1504gl\Desktop\Täst .txt
。注意文件扩展名前的德语Umlaut ä
和空格。为了避免路径问题,我总是在命令行调用中引用路径,例如:
sha256sum "C:\Users\s1504gl\Desktop\Täst .txt"
但是,PowerShell返回
/ usr / bin / sha256sum:'“ C:\ Users \ s1504gl \ Desktop \ T'$'\ 303 \ 244''st .txt”':没有这样的文件或目录
当我将文件重命名为Täst.txt
或Test .txt
时,它可以工作。因此,特殊字符ä
和空格的组合似乎引起了问题。在这种情况下,将双引号替换为单引号不会更改任何内容。
我非常确定必须使用PowerShell,因为该示例在Linux机器上没有任何问题。
还有其他不知道的转义特殊字符和/或空格的方法吗?
答案 0 :(得分:0)
从Cygwin终端运行
sha256sum "/cygdrive/C/Users/s1504gl/Desktop/Täst\ .txt"
一般Cygwin程序不接受Windows路径,并且可以与POSIX路径一起正常使用
答案 1 :(得分:0)
我发现了以下解决方法:
我从R创建一个包含所有必要命令的临时文件,然后使用bash
运行此临时文件,该文件也包含在Cygwin中。这样,我就避免了由于Windows和Cygwin的Linux工具中的编码不同而导致的问题。