Tôi sử dụng realpathlệnh, nhưng nó luôn thêm đầu vào ban đầu ở cuối đường dẫn:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Tôi sử dụng realpathlệnh, nhưng nó luôn thêm đầu vào ban đầu ở cuối đường dẫn:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Câu trả lời:
Bạn đã đưa ra realpathmột đường dẫn tương đối, đến một tệp trong thư mục hiện tại.
Các tập tin (có thể là một thư mục) có thể hoặc không tồn tại. realpathkhông quan tâm theo mặc định. Nó báo cáo đường dẫn bất kể yếu tố cuối cùng của nó có tồn tại hay không.
Nếu bạn muốn nó chỉ báo cáo các đường dẫn tồn tại, hãy sử dụng -ecờ:
zanna@toaster:~/playground$ realpath playground
/home/zanna/playground/playground
zanna@toaster:~/playground$ realpath ~/playground
/home/zanna/playground
zanna@toaster:~/playground$ realpath -e playground
realpath: playground: No such file or directory
Đó là bởi vì bạn đang cho nó một đường dẫn không tồn tại, vì vậy nó chỉ cần in ra thư mục hiện tại và bất cứ thứ gì bạn đưa ra, giả sử đó sẽ là đường dẫn. Lưu ý rằng trang man chỉ định rằng:
In tên tập tin tuyệt đối được giải quyết; tất cả trừ thành phần cuối cùng phải tồn tại
Vì vậy, nó cho phép thực hiện với một mục tiêu không tồn tại. Để minh họa, hãy xem xét các ví dụ sau:
$ pwd
/home
$ ls
lost+found terdon
$ realpath terdon
/home/terdon
$ realpath nonExistentDir
/home/nonExistentDir
Hoặc, để sao chép những gì bạn đã làm:
$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
realpath .