Как отформатировать путь DOS к пути Unix в командной строке Cygwin - PullRequest
15 голосов
/ 15 апреля 2010

При использовании 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

Ответы [ 4 ]

27 голосов
/ 15 апреля 2010

Спасибо всем. Видимо, все, что мне нужно, это одинарные кавычки по пути:

cd 'C: \ windows \ path'

и Cygwin преобразует его. Cygpath тоже будет работать, но ему также нужны одинарные кавычки, чтобы оболочка не поедала символы обратной косой черты.

12 голосов
/ 15 апреля 2010

Читайте о команде cygpath.

somecommand `cygpath -u WIN_PATH`

, например

1 голос
/ 16 мая 2014

Вы заменяете обратную косую черту на косую черту, используя unix sed

Ниже я использую звездочку "*" для разделения полей в директиве s


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

Хитрость в том, чтобы использовать на обратную косую черту больше, чем вы могли бы подумать

1 голос
/ 15 апреля 2010

cmd.exe не любит одинарные кавычки. Вы должны использовать двойные кавычки

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