如何在 Babun/Cygwin 上将 Windows 路径(带反斜杠)转换为 Unix 格式

如何在 Babun/Cygwin 上将 Windows 路径(带反斜杠)转换为 Unix 格式

我正在使用 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基本使用信息。

相关内容