Wie konvertiert man einen Windows-Pfad (mit Backslashes) in das Unix-Format unter Babun / Cygwin?

4392
Vituel

Ich benutze Windows und schreibe Shell-Skripte, um auf Babun (einer POSIX-API) zu laufen.

Ich muss einen Pfad aus einer Umgebungsvariablen, $ USERPROFILE, lesen und in den Unix-Stil konvertieren (\ durch /, c: \ durch / c / ersetzen), damit ich ihn später im Skript verwenden kann.

Das Problem ist, wenn ich den Inhalt von $ USERPROFILE wiederhole, die Backslashes als Escape-Zeichen interpretiert werden und ich ein unerwartetes Ergebnis bekomme (Buchstaben "zufällig" werden zu Sonderzeichen wie \ n, \ f usw.). Ich kann es zum Beispiel nicht in sed wiederholen.

8

1 Antwort auf die Frage

9
Anthony Geoghegan

Cygwin bietet das sehr nützliche cygpathDienstprogramm zum Konvertieren von UNIX- und Windows-Formatpfaden. Aus dem Cygwin-Benutzerhandbuch

Das cygpathProgramm ist ein Dienstprogramm, das native Windows-Dateinamen in Pfadnamen von Cygwin POSIX-Format konvertiert und umgekehrt. Es kann verwendet werden, wenn ein Cygwin-Programm einen Dateinamen an ein systemeigenes Windows-Programm übergeben muss oder erwartet, dass er einen Dateinamen von einem systemeigenen Windows-Programm erhält. Alternativ cygpathkönnen Sie Informationen zum Speicherort wichtiger Systemverzeichnisse in beiden Formaten ausgeben.

Es kann in / aus Windows- oder DOS-Formatpfaden konvertieren, z. B. um das Unix-Format eines Windows-Pfads zu drucken:

$ cygpath -u "$USERPROFILE" /cygdrive/c/Users/anthony 

Ausführliche Informationen und grundlegende Informationen zur Verwendung finden Sie im Cygwin-Benutzerhandbuchcygpath --help .