วิธีแปลงเส้นทาง Windows (พร้อมแบ็กสแลช) เป็นรูปแบบ Unix บน Babun / Cygwin


8

ฉันใช้ Windows และเขียนเชลล์สคริปต์เพื่อทำงานบน Babun (POSIX api)

ฉันต้องอ่านเส้นทางจากตัวแปรสภาพแวดล้อม $ USERPROFILE และแปลงเป็นรูปแบบ unix (แทนที่ \ by /, c: \ by / c /) เพื่อให้ฉันสามารถใช้ในสคริปต์ในภายหลัง

ปัญหาคือเมื่อใดก็ตามที่ฉันสะท้อนเนื้อหาของ $ USERPROFILE แบ็กสแลชจะถูกตีความว่าเป็นอักขระที่หลบหนีและฉันได้รับผลลัพธ์ที่ไม่คาดคิด (ตัวอักษร "สุ่ม" เปลี่ยนเป็นอักขระพิเศษเช่น \ n, \ f ฯลฯ ) ดังนั้นฉันจึงไม่สามารถสะท้อนให้เป็นตัวอย่างได้

คำตอบ:


11

Cygwin มีเครื่องมือที่มีประโยชน์มากcygpathสำหรับการแปลงพา ธ รูปแบบ Unix และ Windows จากคู่มือผู้ใช้ Cygwin

cygpathโปรแกรมยูทิลิตี้ที่แปลงของ Windows ชื่อไฟล์พื้นเมือง Cygwin pathnames POSIX สไตล์และในทางกลับกัน สามารถใช้เมื่อโปรแกรม Cygwin ต้องส่งชื่อไฟล์ไปยังโปรแกรม Windows ดั้งเดิมหรือคาดว่าจะได้รับชื่อไฟล์จากโปรแกรม Windows ดั้งเดิม หรือcygpathสามารถส่งออกข้อมูลเกี่ยวกับตำแหน่งของไดเรกทอรีระบบที่สำคัญในรูปแบบใดรูปแบบหนึ่ง

มันสามารถแปลงเป็น / จากทั้งเส้นทางรูปแบบ Windows หรือ DOS เช่นการพิมพ์รูปแบบ Unix ของเส้นทาง Windows:

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

ดูคู่มือผู้ใช้ Cygwinสำหรับรายละเอียดและcygpath --helpข้อมูลการใช้งานขั้นพื้นฐาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.