Jak przekonwertować ścieżkę systemu Windows (z odwrotnymi ukośnikami) do formatu Unix na Babun / Cygwin

8

Korzystam z systemu Windows i piszę skrypty powłoki, aby działały na Babun (interfejs API POSIX).

Muszę odczytać ścieżkę ze zmiennej środowiskowej $ USERPROFILE i przekonwertować ją na styl unixowy (zamień \ na /, c: \ na / c /), aby móc później użyć jej w skrypcie.

Problem polega na tym, że gdy echo treści $ USERPROFILE, odwrotne ukośniki są interpretowane jako znaki ucieczki i otrzymuję nieoczekiwany wynik (litery „losowo” zamieniają się w znaki specjalne, takie jak \ n, \ f itp.). Nie mogę na przykład powtórzyć echa w sed.

Vituel
źródło

Odpowiedzi:

11

Cygwin zapewnia bardzo przydatne cygpathnarzędzie do konwersji ścieżek formatu Unix i Windows. Z podręcznika użytkownika Cygwin

cygpathProgram to narzędzie, które konwertuje rodzimych nazw systemu Windows Cygwin ścieżek POSIX stylu i odwrotnie. Można go użyć, gdy program Cygwin musi przekazać nazwę pliku do rodzimego programu Windows lub spodziewa się uzyskać nazwę pliku z rodzimego programu Windows. Alternatywnie cygpathmoże wyświetlać informacje o lokalizacji ważnych katalogów systemowych w dowolnym formacie.

Może konwertować na / ze ścieżek formatu Windows lub DOS, np. Aby wydrukować uniksowy format ścieżki Windows:

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

Aby uzyskać szczegółowe informacje i podstawowe informacje na temat użytkowania, zobacz Podręcznik użytkownika Cygwincygpath --help .

Anthony Geoghegan
źródło