ฉันเพิ่งค้นพบว่า/dev/null
เป็นไฟล์และไม่ใช่ไดเรกทอรี
ฉันแค่สงสัยว่ามันมีขนาดไฟล์จริง
ฉันเพิ่งค้นพบว่า/dev/null
เป็นไฟล์และไม่ใช่ไดเรกทอรี
ฉันแค่สงสัยว่ามันมีขนาดไฟล์จริง
คำตอบ:
/dev/null
ไม่ใช่ไฟล์จริงๆ มันเป็นอุปกรณ์ตัวละคร !
$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null
ตัวอักษรตัวแรกc
ของสตริงการอนุญาต ( crw-rw-rw-
) ระบุสิ่งนี้ สำหรับไฟล์ปกติมันจะเป็น-
แทน
ดังนั้นในคำง่าย: /dev/null
ไม่ใช่ไฟล์ แต่อุปกรณ์เสมือนที่แมปไปยังเส้นทางนี้ในระบบไฟล์ซึ่งมีวัตถุประสงค์เพียงอย่างเดียวที่จะกลืนและหายไปข้อมูล - เหมือนหลุมดำ
นอกจากนี้ยังสามารถใช้เป็นอินพุตได้จากนั้นจะทำหน้าที่เหมือนไฟล์เปล่า (ขนาด 0) และส่งคืน EOF (สิ้นสุดไฟล์) ทันที
ดังนั้นคุณไม่สามารถพูดได้เลยว่า/dev/null
มีขนาดไฟล์เฉพาะเนื่องจากไม่ใช่ไฟล์ปกติในสื่อจัดเก็บข้อมูลใด ๆ
/dev/null
เป็นไฟล์ชนิดพิเศษที่เรียกว่า " ไฟล์อุปกรณ์ "
ไฟล์อุปกรณ์ทำหน้าที่เป็นส่วนต่อประสานกับฟังก์ชั่นเคอร์เนล พวกเขาเพียงแค่ใช้พื้นที่ที่จำเป็นสำหรับรายการไดเรกทอรี (" inode ") แต่ไม่มีเนื้อหาจริงและไม่มีขนาดไฟล์จริง
ไฟล์อุปกรณ์อื่น ๆ เช่น/dev/sda
(โดยทั่วไปคือ HDD หรือ SSD), /dev/zero
(ไฟล์ที่สร้างศูนย์เมื่ออ่าน) หรือ/dev/random
(ไฟล์ที่สร้างข้อมูลแบบสุ่มเมื่ออ่าน) ที่จริงแล้วเกี่ยวกับไฟล์ทั้งหมดใน/dev/
นั้นคือไฟล์อุปกรณ์หรือลิงก์ที่ชี้ไปยังไฟล์อุปกรณ์
mknod
เพื่อสร้างไฟล์อุปกรณ์ได้ทุกที่ที่คุณต้องการ) สำหรับระบบไฟล์เสมือนเช่น/dev/
inode ไม่ได้ใช้พื้นที่ดิสก์ แต่มีหน่วยความจำบางส่วน
ls
และdu
จะรายงานขนาดของอุปกรณ์อักขระพิเศษเช่น/dev/null
หรือ/dev/random
อัตราผลตอบแทน 0