2010-04-14 11 views
15

Podczas korzystania z Cygwin, często kopiuję ścieżkę Windows i ręcznie edytuję wszystkie ukośniki w formacie Unix. Na przykład, jeśli używam Cygwin i trzeba zmienić katalog wejdę:Jak sformatować ścieżkę dos do ścieżki unix na linii poleceń cygwin

cd C:\windows\path 

następnie zmodyfikować, aby

cd C:/windows/path 

(Zazwyczaj ścieżka jest znacznie dłuższy niż czas). Czy istnieje sposób, aby użyć sed, lub coś innego, aby to zrobić automatycznie? Na przykład, próbowałem:

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

ale mam następujący błąd

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

Moim celem jest zmniejszenie pisać, więc mógłbym napisać program, który można nazwać. Idealnie chciałbym wpisać:

conversionScript cd C:/windows/path 

a to byłoby równoznaczne z typowania:

cd C:\windows\path 
+0

Twoje polecenie 'sed' powinno być' sed | \\ |/| g', aby uniknąć tego błędu. –

Odpowiedz

11

Przeczytaj o poleceniu cygpath.

somecommand `cygpath -u WIN_PATH` 

np.

+0

backticks zostały zjedzone przez składnię markdown. –

1

cmd.exe nie lubi pojedynczych cudzysłowów. Powinieneś używać podwójnych cytatów

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

Dzięki wszystkim. Podobno wszystko czego potrzebuję to pojedyncze cudzysłowy wokół ścieżki:

cd 'C: \ Windows \ ścieżka'

i Cygwin będzie go przekonwertować. Cygpath też by działał, ale potrzebuje też pojedynczych cudzysłowów, aby uniemożliwić powłoce odżywianie znaków ukośnika odwrotnego.

+1

To działa również w mingw32. Wspaniały! – tanascius

1

zastąpić back-slash Slash użyciu unix sed

Poniżej używam gwiazdkę "*", aby oddzielić pola ws dyrektywy

 

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

Sztuką jest wykorzystanie jednego back-slash więcej niż ty może potrzebować

Powiązane problemy