Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用简单命令在MSYS下将DOS样式的路径转换为Unix样式的路径?_Bash_Path_Dos_Msys - Fatal编程技术网

Bash 如何使用简单命令在MSYS下将DOS样式的路径转换为Unix样式的路径?

Bash 如何使用简单命令在MSYS下将DOS样式的路径转换为Unix样式的路径?,bash,path,dos,msys,Bash,Path,Dos,Msys,例如,如果我将此作为输入: F:\my\path\to\File.TXT 我想把它作为输出 /f/my/path/to/File.TXT 即使路径不存在,这也应该有效,所以我不能简单地调用 cd $P && pwd -P 编辑:我希望避免使用sed和awk,因为有更简单的命令可以实现这一点,比如tr和Bash内置。这两个Bash函数将有助于: canondirslashes() { local p; p="$(echo $1 | tr \\ /)" && e

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

F:\my\path\to\File.TXT
我想把它作为输出

/f/my/path/to/File.TXT
即使路径不存在,这也应该有效,所以我不能简单地调用

cd $P && pwd -P

编辑:我希望避免使用sed和awk,因为有更简单的命令可以实现这一点,比如tr和Bash内置。这两个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
可能重复的