Tôi đang tìm cách để chuẩn hóa đường dẫn tệp tùy ý trong bash, giải quyết .
và ..
thành giá trị tuyệt đối của chúng. Ví dụ:Chuẩn hóa đường dẫn tệp tùy ý trong bash trên OSX
> cd /foo/bar
> normalize_path "."
/foo/bar
> normalize_path "../baz"
/foo/baz
> normalize_path "../../folder/that/doesnt/exist/"
/folder/that/doesnt/exist
Chú ý trong các ví dụ trên, normalize_path
trả về một giá trị ngay cả khi con đường không tương ứng với một thư mục thật hay nộp. Tất cả các câu hỏi trước đây về đường dẫn tuyệt đối hoặc chuẩn hóa mà tôi đã thấy trên StackOverflow (example 1, example 2) giả định đường dẫn trỏ đến tệp thực và sử dụng realpath
hoặc pwd
để bình thường hóa, nhưng điều đó sẽ không hoạt động đối với trường hợp sử dụng của tôi.
Nói cách khác, tôi đang tìm một hàm bash hoàn toàn thao túng đường dẫn dưới dạng chuỗi và không thực sự nhìn vào hệ thống tệp, tương tự như File.getCanonicalPath trong Java.
Phải là duy nhất trong 'bash' hoặc bạn có thể sử dụng' readlink -m your_imaginary_path_here' hoặc 'realpath -m your_imaginary_path_here'? – rickhg12hs
@ rickhg12hs: Tôi đang tìm thứ gì đó chạy trên OS X. –