Как форматировать путь dos к пути unix в командной строке cygwin

15

При использовании 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
    
задан Jennette 15.04.2010 в 00:05
источник
  • Ваша команда sed должна быть sed | \\ | / | g, чтобы избежать этой ошибки. –  Dennis Williamson 15.04.2010 в 00:45

4 ответа

27

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

cd 'C: \ windows \ path'

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

    
ответ дан Jennette 15.04.2010 в 02:50
  • Это работает и в mingw32. Большой! –  tanascius 06.07.2011 в 21:37
12

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

somecommand 'cygpath -u WIN_PATH'

например.

    
ответ дан bmargulies 15.04.2010 в 00:09
  • backticks были съедены синтаксисом уценки. –  Pasi Savolainen 15.04.2010 в 00:12
1

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

C:\test>echo C:\windows\path|sed "s|\|/|g"
C:/windows/path
    
ответ дан ghostdog74 15.04.2010 в 01:34
1

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

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

     sed "s*\\*/*g"

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

    
ответ дан anders 16.05.2014 в 21:19