Cách chuyển đổi đường dẫn Windows (có dấu gạch chéo ngược) sang định dạng Unix trên Babun / Cygwin


8

Tôi đang sử dụng Windows và viết các kịch bản shell để chạy trên Babun (api POSIX).

Tôi cần đọc một đường dẫn từ một biến môi trường, $ USERPROFILE và chuyển đổi nó thành kiểu unix (thay thế \ by /, c: \ by / c /) để tôi có thể sử dụng nó sau này trong tập lệnh.

Vấn đề là bất cứ khi nào tôi lặp lại nội dung của $ USERPROFILE, dấu gạch chéo ngược được hiểu là các ký tự thoát và tôi nhận được một kết quả không mong muốn (các chữ cái "ngẫu nhiên" biến thành các ký tự đặc biệt như \ n, \ f, v.v.). Vì vậy, tôi không thể lặp lại nó vào sed chẳng hạn.

Câu trả lời:


11

Cygwin cung cấp cygpathtiện ích rất hữu ích để chuyển đổi các đường dẫn định dạng Unix và Windows. Từ Hướng dẫn sử dụng Cygwin

Các cygpathchương trình là một tiện ích có thể chuyển đổi tên tập tin nguồn gốc Windows để Cygwin pathnames POSIX-phong cách và ngược lại. Nó có thể được sử dụng khi chương trình Cygwin cần truyền tên tệp cho chương trình Windows gốc hoặc mong muốn nhận được tên tệp từ chương trình Windows gốc. Ngoài ra, cygpathcó thể xuất thông tin về vị trí của các thư mục hệ thống quan trọng ở định dạng.

Nó có thể chuyển đổi sang / từ các đường dẫn định dạng kiểu Windows hoặc DOS, ví dụ để in định dạng Unix của đường dẫn Windows:

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

Xem Hướng dẫn sử dụng Cygwin để biết chi tiết đầy đủ và cygpath --helpđể biết thông tin sử dụng cơ bản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.