Kí hiệu “.” và “..” trong thư mục trên linux là gì ?

Kí hiệu “.” và “..” trong thư mục trên linux là gì ?

15/04/2021 Off By dat09

Hai kí hiệu thư mục này không thể tách rời với hệ thống file trên hệ thống máy tính của chúng ta và bạn có thể thấy nó khi sử dụng các hàm liệt kê thư mục cấp thấp của nhân kernel (kernel’s low-level directory).

Về mặt ý nghĩa trong hệ thống file và thư mục trong linux:
. refers tới thư mục hiện tại(current directory)
.. refers tới thư mục trên nó một cấp(above directory)

Các mục này được tạo tự động khi bạn tạo bất kì một thư mục mới nào, có thể thấy bằng cách sử dụng lệnh ls với tùy chọn -a (hiển thị tất cả nội dung của thư mục, bao gồm cả các thư mục và files ẩn).

Trong cấu thư mục trong linux thì mọi thư mục con chỉ có một thư mục mẹ và dấu “..” trong thư mục con nhằm mục đích để xác định tôi là thư mục con của thư mục trên một cấp. Để hiểu rõ hơn thì bạn có thể tìm hiểu khái niệm links và inodes trong hệ thống file linux (đây là một bài viết có thể tham khảo thêm)

Một số ví dụ thao tác với thư mục

ba_dat@devk2x ~ % pwd
/Users/ba_dat
ba_dat@devk2x ~ % cd Documents
ba_dat@devk2x Documents % cd .
ba_dat@devk2x Documents % pwd
/Users/ba_dat/Documents       <-- vẫn ở thư mục hiện tại
ba_dat@devk2x Documents % cd ..
ba_dat@devk2x ~ % pwd
/Users/ba_dat <-- thư mục trước đó

Ví dụ sử dụng hàm liên quan tới thư mục trong php:

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isDir()) {
        echo $fileinfo->getFilename() . "\n";
    }
}
?>

Kết quả hàm trên sẽ thấy được kí hiệu thư mục ... như bên dưới:

.
..
apples
bananas
pears

Trên một số hệ điều hành về mặt giao diện người dùng thì thường mặc định nhà cũng cấp cũng như nhà phát triển sẽ ẩn hai mục này, vì chúng không thực sự liên quan trong môi trường đồ họa và khía cạnh người dùng, nhưng thật sự chúng vẫn tồn tại mà chúng ta không thấy.