So konvertieren Sie einen Windows-Pfad (mit Backslashes) in das Unix-Format unter Babun / Cygwin

8

Ich verwende Windows und schreibe Shell-Skripte, um sie auf Babun (einer POSIX-API) auszuführen.

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

Das Problem ist, wenn ich den Inhalt von $ USERPROFILE wiedergebe, die Backslashes als Escapezeichen interpretiert werden und ich ein unerwartetes Ergebnis erhalte (Buchstaben "zufällig" werden zu Sonderzeichen wie \ n, \ f usw.). So kann ich es zum Beispiel nicht in sed wiedergeben.

Vituel
quelle

Antworten:

11

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 im Cygwin-POSIX-Stil konvertiert und umgekehrt. Es kann verwendet werden, wenn ein Cygwin-Programm einen Dateinamen an ein natives Windows-Programm übergeben muss oder erwartet, dass ein nativer Windows-Programm einen Dateinamen erhält. Alternativ cygpathkönnen Informationen zum Speicherort wichtiger Systemverzeichnisse in beiden Formaten ausgegeben werden.

Es kann in / von 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 .

Anthony Geoghegan
quelle