วัตถุประสงค์ / dev / ศูนย์?


49

ฉันพยายามcat /dev/zeroและดูเหมือนจะไม่ทำอะไรเลย ฉัน googled /dev/zeroและมันบอกว่ามันเป็นไฟล์เปล่าที่มีขนาดไม่ จำกัด มีการcatพิมพ์จำนวนอนันต์ของตัวละครที่ไม่มีอยู่จริง? มันทำงานอย่างไร มันให้ข้อมูลที่ไม่สิ้นสุดได้อย่างไรถ้ามันเป็น 0 ไบต์? ไฟล์นี้มีประโยชน์อะไรถ้าใครสามารถสร้างไฟล์เปล่าได้?


11
เรียกใช้cat -v /dev/zeroเพื่อดูสิ่งที่กำลังทำ ดูล้างพื้นที่ที่ไม่ได้ใช้ด้วยค่าศูนย์ (ext3, ext4)สำหรับวัตถุประสงค์ทั่วไป
จัดการ

นอกจากนี้ยังมี/ dev / nullซึ่งทำหน้าที่เหมือนไฟล์ว่างถ้าคุณต้องการอ่านมันและเป็นหลุมดำถ้าคุณเขียนมัน
jofel

@jofel แต่คุณไม่สามารถใช้ / dev / null สำหรับ 0 บิตไม่ จำกัด ใช่มั้ย cat foo > /dev/nullและcat foo > /dev/zeroเหมือนกัน แต่cat /dev/nullและcat /dev/zeroไม่เหมือนกันถูกต้องไหม
tkbx

@tkbx ใช่ถูกต้อง /dev/nullส่งคืนEOFทันทีหากโปรแกรมต้องการอ่านจากมัน /dev/zeroส่งกลับ 0- ไบต์อนันต์
jofel

คำตอบ:


53

/dev/zeroเป็นไฟล์พิเศษ (ในกรณีนี้อุปกรณ์หลอก) ที่ให้กระแสของอักขระ null ไม่มีที่สิ้นสุด (ดังนั้น hex 0x00 ดังนั้น) นั่นเป็นสาเหตุที่คุณcatไม่ได้แสดงผลอะไร (แต่ลองเรียกใช้ผ่านทางod(ฐานแปด))

'ไฟล์เปล่าที่มีขนาดไม่ จำกัด ' ไม่ถูกต้อง 100%: ไม่ใช่ไฟล์ปกติ แต่เป็นไฟล์พิเศษ (เช่น 'สตรีม' หรือเครื่องกำเนิดไฟฟ้า) คุณสามารถอ่านได้มากเท่าที่คุณต้องการตัวอย่างเช่นกับdd(เช่นdd if=/dev/zero of=yourfile count=1024 bs=1024)

ไม่ใช่ไฟล์เปล่าจริง ๆหรือไม่เคยใช้สร้างไฟล์เปล่ามันใช้เพื่อสร้างไฟล์หรือเพจหน่วยความจำที่เต็มไปด้วยเลขศูนย์เท่านั้น นอกจากนี้คุณยังสามารถเขียนถึงมันทำให้มันทำงานเหมือนมี้ระบาย (พี่ชายที่/dev/nullเป็นที่นิยมมากกว่านั้นใช้กันมากกว่านี้)


ทำไมบางคนถึงต้องการเติมพื้นที่ว่างให้เต็ม
tkbx

5
ตัวอย่างเช่นการลบสิ่งที่เคยมีมาก่อน หรือเมื่อส่งสัญญาณ
Konerak

4
ฉันไม่ได้อ่านsrmคู่มือหรือแหล่งที่มา แต่ 'ยางลบที่ปลอดภัย' ส่วนใหญ่ชอบเขียน (หลอก) ข้อมูลสุ่มแทนที่จะเป็นไดรฟ์ zero-ing เนื่องจากการส่งผ่านหนึ่งครั้งของ zero-ing ไม่ปลอดภัยพอ (เอเจนซี่สามตัวอักษรบางตัว ยังสามารถหักเนื้อหาต้นฉบับของฮาร์ดดิสค์ที่มีค่าศูนย์เนื่องจากแต่ละบิตจะไม่ได้ 100% อย่างแท้จริง 1 หรือ 0 แต่เพียงแค่ "ส่วนใหญ่ 1" หรือ "ส่วนใหญ่ 0" เปรียบเทียบกับคันโยกซึ่งคุณสามารถใส่ได้ "ตลอดทาง "หรือ 'ทุกทางที่ถูกต้อง' แต่มักจะเป็นเพียงแค่การแกว่งไปด้านอื่น ๆ เป็นพอ.
Konerak

11
@tkbx พยายามddพาร์ติชันคุณอาจต้องการเติมพื้นที่ว่างทั้งหมดเป็น 0 แทนที่จะเป็นแบบสุ่มเพื่อรับไฟล์บีบอัดขนาดเล็กในภายหลัง
neurino

1
@ Konerak ฉันค่อนข้างน่าสงสัย ฉันเคยได้ยินมันพูดทั่วสถานที่และฉันไม่เคยเห็นหลักฐานว่ามันเป็นไปได้ในฮาร์ดไดรฟ์ใหม่จากระยะไกลใด ๆ (ทำใน 10 ปีที่ผ่านมาอย่างน้อย)
Rob
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.