/Users/lukas
là một con đường "tuyệt đối". Hàng đầu /
đại diện cho thư mục gốc của hệ thống tập tin của bạn.
lukas
là một con đường "tương đối". Vì nó không được neo vào thư mục gốc, nó có nghĩa là "tìm kiếm cái này trong thư mục hiện tại ". Trừ khi thư mục hiện tại là /Users
(hoặc một số thư mục khác có lukas
trong đó), điều này sẽ thất bại.
Vì vậy, hãy khám phá các ví dụ của bạn, giả sử bạn đang ở trong /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Đường dẫn tương đối đã cho => thay đổi thư mục "Tài liệu" bên trong /Users/lukas
.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Đường dẫn tuyệt đối đã cho => thay đổi thư mục /Documents
.
$ pwd
/
Điều này cho thấy rằng bạn đã thay đổi thư mục làm việc thành thư mục gốc, /
(mặc dù cd
lệnh để làm điều này không được hiển thị).
$ cd Users
/Users
Đường dẫn tương đối đã cho => thay đổi thư mục "Người dùng" bên trong /
.
$ cd /Users
/Users
Đường dẫn tuyệt đối đã cho => thay đổi thư mục /Users
.
Chìa khóa mỗi lần là hàng đầu /
. Với nó, con đường là tuyệt đối. Không có nó, con đường là tương đối. Quy tắc này không rõ ràng vì tất cả các đường dẫn tuyệt đối bắt đầu bằng /
(vì thư mục gốc luôn được gọi /
).
Đây là một số mã giả mô tả thuật toán đó một cách lỏng lẻo:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
Đối số bạn vượt qua để cd
đi qua thuật toán này; thư mục bạn kết thúc thay đổi là đường dẫn mà thuật toán trả về.
Đọc thêm: