如何使用简单的命令将DOS风格的路径转换为MSYS下的Unix风格路径?

时间:2015-05-07 16:17:33

标签: bash path dos msys

例如,如果我将其作为输入:

F:\my\path\to\File.TXT

我希望将此作为输出

/f/my/path/to/File.TXT

即使路径不存在,这也应该有效,所以我不能简单地调用

cd $P && pwd -P

编辑:我想避免使用 sed awk ,因为有更简单的命令可以实现这一点,例如 tr 和Bash内置插件。

1 个答案:

答案 0 :(得分:0)

这两个Bash功能将有所帮助:

canondirslashes() { local p; p="$(echo $1 | tr \\ /)" && echo ${p%/}; }

canonpath() { canondirslashes "$( test "${1:1:1}" != : && echo $1 || echo $(echo /${1::1} | tr [A-Z] [a-z])${1:2} )" ; }

以下是一个例子:

bash-3.1$ P=F:\\my\\path\\to\\File.TXT

bash-3.1$ echo $P
F:\my\path\to\File.TXT

bash-3.1$ canonpath $P
/f/my/path/to/File.TXT