![如何在 Babun/Cygwin 上将 Windows 路径(带反斜杠)转换为 Unix 格式](https://linux22.com/image/1480286/%E5%A6%82%E4%BD%95%E5%9C%A8%20Babun%2FCygwin%20%E4%B8%8A%E5%B0%86%20Windows%20%E8%B7%AF%E5%BE%84%EF%BC%88%E5%B8%A6%E5%8F%8D%E6%96%9C%E6%9D%A0%EF%BC%89%E8%BD%AC%E6%8D%A2%E4%B8%BA%20Unix%20%E6%A0%BC%E5%BC%8F.png)
我正在使用 Windows 并编写在 Babun(POSIX api)上运行的 shell 脚本。
我需要从环境变量 $USERPROFILE 中读取路径,并将其转换为 unix 样式(将 \ 替换为 /,将 c:\ 替换为 /c/),以便稍后在脚本中使用它。
问题是,每当我回显 $USERPROFILE 的内容时,反斜杠都会被解释为转义字符,并且我会得到意外的结果(字母“随机”变成特殊字符,如 \n、\f 等)。因此,例如,我无法将其回显到 sed 中。
答案1
Cygwin 提供了非常有用的cygpath
实用程序来转换 Unix 和 Windows 格式的路径。从Cygwin 用户指南
该
cygpath
程序是一个实用程序,可将 Windows 本机文件名转换为 Cygwin POSIX 样式的路径名,反之亦然。当 Cygwin 程序需要将文件名传递给本机 Windows 程序,或希望从本机 Windows 程序获取文件名时,可以使用它。或者,cygpath
可以以任一格式输出有关重要系统目录位置的信息。
它可以转换为 Windows 或 DOS 风格格式的路径,例如打印 Windows 路径的 Unix 格式:
$ cygpath -u "$USERPROFILE"
/cygdrive/c/Users/anthony
查看Cygwin 用户指南了解完整详情和cygpath --help
基本使用信息。