如何在dosgwin命令行上将dos路径格式化为unix路径

时间:2010-04-14 22:05:13

标签: unix path sed cygwin dos

使用Cygwin时,我经常复制Windows路径并手动编辑所有斜杠到Unix格式。例如,如果我正在使用Cygwin并且需要更改目录,请输入:

cd C:\windows\path 

然后将其编辑为

cd C:/windows/path  

(通常,路径比这长得多)。有没有办法使用sed或其他东西自动执行此操作?例如,我试过:

echo C:\windows\path|sed 's|\\|g'  

但出现以下错误

sed: -e expression #1, char 7: unterminated `s' command

我的目标是减少输入,所以也许我可以编写一个我可以调用的程序。理想情况下我会输入:

conversionScript cd C:/windows/path 

这相当于输入:

cd C:\windows\path

5 个答案:

答案 0 :(得分:27)

谢谢大家。显然我只需要在路径上单引号:

cd'C:\ windows \ path'

和Cygwin将转换它。 Cygpath也可以工作,但它也需要单引号来防止shell使用反斜杠字符。

答案 1 :(得分:12)

阅读cygpath命令。

somecommand `cygpath -u WIN_PATH`

e.g。

答案 2 :(得分:1)

cmd.exe不喜欢单引号。你应该使用双引号

C:\test>echo C:\windows\path|sed "s|\\|/|g"
C:/windows/path

答案 3 :(得分:1)

使用unix sed

用斜杠替换反斜杠

下面我使用star" *"在s指令中分隔字段


     sed "s*\\\*/*g"

诀窍是使用一个比你想象的更多的反斜杠

答案 4 :(得分:0)

回答您要实现的问题

cd C:\ windows \ path

由于您正在使用bash,因此可以根据需要进行操作-但添加单引号

cd 'C:\windows\path'

如@bmargulies和@Jennette所述-cygpath是您的朋友-阅读cygwin手册页是值得的

man cygpath