Bagaimana mengkonversi jalur Windows (dengan garis miring terbalik) ke format Unix pada Babun / Cygwin

8

Saya menggunakan Windows dan menulis skrip shell untuk dijalankan pada Babun (api POSIX).

Saya perlu membaca path dari variabel environment, $ USERPROFILE, dan mengonversinya menjadi unix style (ganti \ by /, c: \ by / c /) sehingga saya bisa menggunakannya nanti dalam skrip.

Masalahnya adalah setiap kali saya menggemakan konten $ USERPROFILE, garis miring terbalik diartikan sebagai melarikan diri karakter dan saya mendapatkan hasil yang tidak terduga (huruf "acak" berubah menjadi karakter khusus seperti \ n, \ f, dll). Jadi saya tidak bisa menggemakannya menjadi sed misalnya.

Vituel
sumber

Jawaban:

11

Cygwin menyediakan cygpathutilitas yang sangat berguna untuk mengubah jalur format Unix dan Windows. Dari Panduan Pengguna Cygwin

The cygpathProgram adalah utilitas yang mengubah nama file asli Windows untuk Cygwin pathnames POSIX-gaya dan sebaliknya. Ini dapat digunakan ketika program Cygwin perlu memberikan nama file ke program Windows asli, atau mengharapkan untuk mendapatkan nama file dari program Windows asli. Atau, cygpathdapat menampilkan informasi tentang lokasi direktori sistem penting dalam format apa pun.

Itu dapat mengkonversi ke / dari jalur format Windows atau DOS-style, misalnya untuk mencetak format Unix dari jalur Windows:

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

Lihat Panduan Pengguna Cygwin untuk detail lengkap dan cygpath --helpuntuk informasi penggunaan dasar.

Anthony Geoghegan
sumber