2010-04-14 9 views
15

Wenn ich Cygwin verwende, kopiere ich häufig einen Windows-Pfad und bearbeite alle Schrägstriche manuell ins Unix-Format. Zum Beispiel, wenn ich Cygwin verwende und muß Verzeichnis ändern I eingeben:Wie man einen Dos-Pfad zu einem Unix-Pfad in der cygwin-Befehlszeile formatiert

cd C:\windows\path 

dann diese

cd C:/windows/path 

zu

bearbeiten (In der Regel ist der Weg viel länger als das). Gibt es eine Möglichkeit, sed oder etwas anderes zu verwenden, um dies automatisch zu tun? Zum Beispiel habe ich versucht:

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

bekam aber den folgenden Fehler

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

Mein Ziel ist es, die Eingabe zu reduzieren, so vielleicht könnte ich ein Programm schreiben, das ich nennen könnte. Idealerweise würde ich geben:

conversionScript cd C:/windows/path 

und dies entspricht der Eingabe würde:

cd C:\windows\path 
+0

Ihr 'sed' Befehl sollte' sed | \\ |/| g' sein, um diesen Fehler zu vermeiden. –

Antwort

11

Lesen Sie mehr über den cygpath Befehl.

somecommand `cygpath -u WIN_PATH` 

z.B.

+0

Backticks wurden von Markdown-Syntax gegessen. –

1

cmd.exe mag keine einfachen Anführungszeichen. Sie sollten doppelte Anführungszeichen verwenden

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

Vielen Dank. Scheinbar alles, was ich brauche, sind einfache Anführungszeichen um den Pfad:

cd 'C: \ windows \ Pfad'

und Cygwin wird es konvertieren. Cygpath würde auch funktionieren, aber es braucht auch die einfachen Anführungszeichen, um zu verhindern, dass die Shell die Backslash-Zeichen isst.

+1

Das funktioniert auch in mingw32. Groß! – tanascius

1

Sie ersetzen Backslash von slash Unix

sed mit

Below I Stern verwenden "*" Felder in s-Richtlinie trennen

 

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

Der Trick ist, eine verwenden mehr als Sie Backslash könnte denken benötigt