Liên hệProfile
Danh mục

Mục Lục

    Cách dùng lệnh realpath để xác định đường dẫn tuyệt đối chính xác trong Linux

    Nguyễn Hưng

    Ngày đăng:

    13/03/2026

    Cập nhật lần cuối:

    13/03/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (2 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    13/03/2026

    Cập nhật lần cuối:

    13/03/2026

    Mục lục

    Realpath Linux là lệnh dùng để chuyển đường dẫn tương đối hoặc có symlink thành đường dẫn tuyệt đối, đã được chuẩn hóa đầy đủ. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu về chức năng, các tùy chọn phổ biến cũng như hướng dẫn bạn cách sử dụng lệnh realpath chi tiết, hiệu quả qua các ví dụ cụ thể.

    Những điểm chính

    • Khái niệm: Hiểu rõ khái niệm và chức năng của realpath trong việc chuyển đổi đường dẫn tương đối thành tuyệt đối.
    • Các tùy chọn phổ biến: Nắm được bảng tra cứu nhanh các tùy chọn quan trọng như -s, -m và --relative-to để xử lý đường dẫn linh hoạt.
    • Các ví dụ sử dụng thực tế: Thành thạo các kịch bản áp dụng realpath, từ xác định đường dẫn, truy vết symlink đến tích hợp trong script deploy và xử lý file hàng loạt.
    • Lưu ý khi sử dụng: Nắm được các lưu ý quan trọng để sử dụng realpath hiệu quả, so sánh với readlink -f và cách xử lý lỗi.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc thường gặp liên quan đến realpath trong Linux.

    Realpath Linux là gì?

    Realpath là lệnh dùng để chuyển đổi đường dẫn tương đối thành đường dẫn tuyệt đối, đồng thời xử lý các liên kết tượng trưng và loại bỏ các ký tự tham chiếu thư mục (như . hoặc ..). Nếu đường dẫn trỏ tới file hoặc thư mục không tồn tại, lệnh realpath sẽ không trả về kết quả và trả lỗi.

    Realpath là lệnh dùng để chuyển đổi đường dẫn tương đối thành đường dẫn tuyệt đối
    Realpath là lệnh dùng để chuyển đổi đường dẫn tương đối thành đường dẫn tuyệt đối

    Trên vài hệ thống như AIX, MSYS2 hoặc môi trường tối giản, realpath có thể chưa được cài sẵn và bạn sẽ cần phải cài thêm gói phần mềm tương ứng thì mới có thể dùng được. Cú pháp của lệnh realpath như sau:

    realpath <file_or_dir>

    Trong đó, <file_or_dir> là đường dẫn đến một file hoặc thư mục, có thể là tương đối hoặc tuyệt đối.

    Giả sử bạn đang ở trong một thư mục bất kỳ và muốn lấy đường dẫn đầy đủ của file script, hãy thực hiện lệnh sau:

    realpath ./myscript.sh

    Kết quả đầu ra sẽ là:

    /home/user/myscript.sh

    Như vậy, dù đầu vào là đường dẫn tương đối (./myscript.sh), realpath luôn trả về full path bắt đầu từ root (/).

    Các tùy chọn của lệnh realpath trong Linux

    Cú pháp tổng quát của lệnh realpath như sau:

    realpath [OPTION]... FILE...

    Lệnh realpath cung cấp các tùy chọn như:

    Tùy chọnMô tảVí dụ
    -s, –stripKhông kiểm tra sự tồn tại của file, chỉ xử lý chuỗi ký tự.realpath -s missing.txt
    -m, –canonicalize-missingTrả về đường dẫn tuyệt đối ngay cả khi file/thư mục đó không tồn tại.realpath -m ./nofile.txt
    –relative-to=DIRHiển thị đường dẫn tương đối tính từ thư mục đích.realpath --relative-to=/home/user ./myscript.sh
    –zeroKết thúc dòng bằng ký tự NULL hay vì xuống dòng, tối ưu cho xargs.realpath --zero ./*.txt

    1. Xác định đường dẫn tuyệt đối

    Để xác định được chính xác đường dẫn tuyệt đối, bạn thực thi lệnh sau đây:

    realpath ./myscript.sh
    Xác định vị trí của file script
    Xác định vị trí của file script

    Sau đó, hệ thống sẽ trả về đường dẫn đầy đủ dạng /home/user/myscript.sh, luôn bắt đầu từ /, giúp bạn biết chính xác vị trí file script và không bị phụ thuộc vào thư mục hiện tại mà bạn đang cd vào lúc chạy lệnh.

    2. Truy vết file gốc từ Symbolic Link

    Khi bạn có một symlink và cần biết chính xác Symbolic đang trỏ đến đâu để debug cấu hình, hãy thực thi lệnh sau:

    ln -s /etc/nginx/nginx.conf ~/nginx.conf
    realpath ~/nginx.conf

    Kết quả hiển thị sẽ cho bạn biết chính xác file cấu hình gốc nằm ở đâu.

    Truy vết file gốc từ Symbolic Link
    Truy vết file gốc từ Symbolic Link

    3. Dùng trong script deploy

    Trong các script CI/CD, việc sử dụng đường dẫn tương đối có thể gây lỗi nếu thư mục thực thi thay đổi. Do đó, bạn nên sử dụng realpath để chuẩn hoá và cố định đường dẫn tuyệt đối ngay từ đầu, giúp script luôn truy cập đúng tài nguyên bất kể đang được chạy từ ngữ cảnh nào:

    # Lấy đường dẫn tuyệt đối của ./app để link luôn chính xác
    APP_PATH=$(realpath ./app)
    
    # Tạo/ghi đè symlink /var/www/current trỏ tới app
    ln -sfn $APP_PATH /var/www/current

    Sau lệnh APP_PATH=$(realpath ./app), biến $APP_PATH sẽ chứa đường dẫn tuyệt đối.​ Khi tạo symlink /var/www/current, hệ thống sẽ luôn trỏ chính xác đến thư mục build này, bất kể bạn đang đứng ở thư mục nào khi chạy lệnh.

    Dùng realpath trong script deploy
    Dùng realpath trong script deploy

    4. Xử lý file hàng loạt

    Khi xóa hoặc xử lý danh sách file có chứa khoảng trắng hoặc ký tự đặc biệt, bạn có thể kết hợp realpath với tùy chọn --zero với cú pháp lệnh như sau:

    ls *.txt | xargs realpath --zero | xargs -0 rm

    Lúc này, lệnh realpath --zero sẽ chuyển đổi tên file sang đường dẫn tuyệt đối và ngăn cách bằng ký tự NULL. Sau đó, xargs -0 rm sẽ nhận đầu vào NULL-terminated để xóa chính xác file, tránh lỗi do khoảng trắng trong tên file.

    Xử lý file hàng loạt với xargs
    Xử lý file hàng loạt với xargs

    5. Hiển thị path relative

    realpath –relative-to giúp chuyển một đường dẫn tuyệt đối thành đường dẫn tương đối so với một thư mục gốc mà bạn chỉ định. Tính năng này hữu ích khi bạn cần giữ nguyên cấu trúc thư mục tương đối để đóng gói hoặc deploy sang môi trường khác:

    realpath --relative-to=/home/user ./project/file.txt

    Kết quả sẽ được hiển thị như sau:

    Hiển thị path relative
    Hiển thị path relative

    Lưu ý khi sử dụng lệnh realpath

    • So sánh với readlink -f: Trước đây, readlink -f thường được sử dụng để giải quyết đường dẫn theo cách tương tự realpath. Tuy nhiên, realpath là công cụ hiện đại, chuẩn hóa hơn và được khuyên dùng trên các hệ thống Linux mới. Nếu script cần chạy trên các hệ thống cũ, bạn có thể cân nhắc sẻ dụng readlink -f làm phương án dự phòng.
    • Xử lý lỗi: Bạn hãy sử dụng realpath ở đầu script để chuẩn hóa các biến đường dẫn đầu vào, giúp tránh lỗi “No such file or directory” khi script thực hiện lệnh cd hoặc di chuyển file.
    • Kiểm tra file tồn tại: Nếu bạn chỉ muốn lấy đường dẫn tuyệt đối mà không quan tâm file đó có thực sự tồn tại trên ổ cứng hay không, hãy dùng cờ -m.
    Bạn nên sử dụng realpath ở đầu script để tránh lỗi "No such file or directory"
    Bạn nên sử dụng realpath ở đầu script để tránh lỗi “No such file or directory” (Nguồn: Internet)

    Câu hỏi thường gặp

    Sự khác biệt giữa realpath và readlink -f là gì?

    Về chức năng cơ bản, realpath và readlink -f đều trả về đường dẫn tuyệt đối. Tuy nhiên:
    – realpath: Là công cụ hiện đại, chuẩn hóa, hỗ trợ nhiều tính năng mạnh mẽ hơn như —relative-to hay xử lý file hàng loạt với --zero, thường được khuyến nghị sử dụng trên các hệ thống Linux mới.
    – readlink -f: Là cách làm cũ trên một số hệ thống hư macOS/BSD, hành vi của readlink có thể khác biệt so với Linux, dẫn đến script thiếu tính tương thích.

    Tôi muốn lấy đường dẫn tuyệt đối cho một file log chưa được tạo ra, nhưng realpath báo lỗi thì phải xử lý như thế nào?

    Mặc định realpath sẽ kiểm tra sự tồn tại của file. Để bỏ qua bước kiểm tra này, bạn hãy thêm cờ (flag) -m với cú pháp lệnh như sau:
    realpath -m ./logs/future.log
    Kết quả sẽ trả về full path ngay cả khi thư mục logs hoặc file future.log chưa tồn tại trên ổ đĩa.

    realpath có xử lý được tên file chứa khoảng trắng không?

    Có, nhưng bạn cần cẩn thận khi truyền kết quả sang lệnh khác. Để an toàn tuyệt đối khi xử lý file có khoảng trắng hoặc ký tự đặc biệt, bạn hãy dùng cờ –zero kết hợp với xargs -0.
    Ví dụ: ls *.txt | xargs realpath --zero | xargs -0 rm
    Cờ –zero dùng ký tự NULL để ngắt dòng thay vì ký tự xuống dòng, giúp hệ thống hiểu đúng tên file có dấu cách là một file duy nhất.

    realpath đóng vai trò quan trọng trong việc đảm bảo tính chính xác của đường dẫn file trong hệ thống Linux. Việc thành thạo realpath kết hợp với xargs và ln sẽ giúp quy trình quản trị và deploy của bạn trở nên chuyên nghiệp và ít lỗi hơn. Chúc bạn thao tác với lệnh realpath thành công và hẹn gặp lại bạn trong các bài viết tiếp theo. Cảm ơn bạn đã theo dõi bài viết!

    5/5 - (2 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder và Phó giám đốc của Vietnix, Co-Founder của dự án Chống Lừa Đảo.
    0 0 votes
    Đánh giá bài viết
    Subscribe
    Notify of
    guest
    0 Góp ý
    Oldest
    Newest Most Voted
    Inline Feedbacks
    View all comments

    BÀI VIẾT LIÊN QUAN

    AI dạy hiệu suất, ai dạy làm người
    AI dạy hiệu suất, ai dạy làm người

    Ngày 09/10/2026, tôi vinh dự tham gia và chia sẻ tại tọa đàm “AI dạy hiệu suất, ai dạy làm người?” do Báo Tiền Phong phối hợp cùng Trường Đại học Giao thông vận tải TP.HCM (UTH) tổ chức. Sự kiện đã quy tụ nhiều chuyên gia công nghệ, nhà giáo dục, chuyên gia tâm…

    17/10/2026

    KOL Summit 2026

    Ngày 07/09/2026, tôi có cơ hội tham dự Hội nghị KOL toàn quốc lần thứ II – KOL Summit 2026 tại Thisky Hall Sala, TP.HCM với chủ đề “KOL với hành trình kiến tạo niềm tin số”. Sự kiện do Liên minh Niềm tin số dẫn dắt, dưới sự bảo trợ của Bộ Công an,…

    15/09/2026

    Conviction 2026: Ký kết hợp tác giữa Chống Lừa Đảo x Ninety Eight

    Ngày 14/08/2026, trong khuôn khổ Ngày hội Công nghệ TP.HCM – Conviction 2026, tôi rất vinh dự được cùng đội ngũ Chống Lừa Đảo tham gia lễ ký kết Biên bản ghi nhớ hợp tác (MOU) với Ninety Eight – hệ sinh thái công nghệ blockchain tại Việt Nam. Đây là một cột mốc ý…

    14/08/2026

    Tham gia Hội nghị KOL & Lễ ra mắt Câu lạc bộ Niềm Tin Số TP.HCM: Chung tay xây dựng không gian mạng xanh, sạch và có trách nhiệm

    Ngày 10/08/2026, tôi vinh dự tham dự Hội nghị KOL & Lễ ra mắt Câu lạc bộ Niềm Tin Số TP.HCM do Công an TP.HCM phối hợp cùng các đơn vị liên quan tổ chức. Chương trình quy tụ đại diện Cục An ninh mạng và Phòng, chống tội phạm sử dụng công nghệ cao…

    11/08/2026

    linux

    lenh

    text