Câu trả lời:
/dev/null
không thực sự là một tập tin. Đó là một thiết bị nhân vật !
$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null
Chữ cái đầu tiên c
của chuỗi quyền ( crw-rw-rw-
) chỉ ra điều này. Đối với các tập tin thông thường, nó sẽ là một -
thay thế.
Vì vậy, nói một cách dễ dàng: /dev/null
không phải là một tệp mà là một thiết bị ảo được ánh xạ tới đường dẫn này trong hệ thống tệp, mục đích duy nhất là nuốt và biến mất dữ liệu - giống như một lỗ đen.
Nó cũng có thể được sử dụng làm đầu vào, sau đó nó hoạt động như một tệp trống (kích thước 0) và ngay lập tức trả về EOF (End Of File).
Do đó, bạn không thể thực sự nói rằng /dev/null
có kích thước tệp cụ thể, vì đó không phải là tệp thông thường trên bất kỳ phương tiện lưu trữ nào.
/dev/null
là một loại tệp đặc biệt gọi là " tệp thiết bị ".
Các tập tin thiết bị hoạt động như một giao diện cho một số chức năng kernel. Họ chỉ chiếm không gian cần thiết cho một mục nhập thư mục (" inode ") nhưng không có bất kỳ nội dung thực sự nào và không có kích thước tệp thực tế.
Các tệp thiết bị khác là ví dụ /dev/sda
(nói chung là ổ cứng hoặc SSD), /dev/zero
(tệp tạo ra số 0 khi đọc) hoặc /dev/random
(tệp tạo dữ liệu ngẫu nhiên khi đọc). Trên thực tế về tất cả các tệp trong /dev/
là tệp thiết bị hoặc liên kết trỏ đến tệp thiết bị.
mknod
để tạo tệp thiết bị ở bất cứ đâu bạn muốn). Đối với các hệ thống tệp ảo như /dev/
inode không chiếm dung lượng đĩa mà chỉ có một số bộ nhớ.
ls
và du
báo cáo kích thước của một thiết bị đặc biệt như /dev/null
hoặc /dev/random
mang lại 0 .