ฉันไม่สามารถทราบสาเหตุที่ฉันได้รับผลลัพธ์ต่อไปนี้:
ls -l
บอกขนาดของไฟล์ที่กำหนด (ประวัติ) คือ "581944":
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
บอกว่ามันคือ "572":
$ ls -s HISTORY
572 HISTORY
เห็นได้ชัดว่าฉันต้องทำให้ค่าใช้มาตราส่วนเทียบเคียง ดังนั้นก่อนอื่นฉันยืนยันว่าการใช้--block-size 1
ในls -l
ให้ผลลัพธ์เหมือนเดิมกับฉันก่อนหน้านี้:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
จากนั้นฉันก็ทำแบบเดียวกันเพื่อls -s
ให้ได้ค่าในระดับเดียวกัน:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
ผลลัพธ์ที่แตกต่าง! 581,944 ≠ 585728
ฉันพยายามสร้างค่าเทียบเคียงวิธีอื่น ๆ โดยใช้-k
แต่ฉันได้รับ:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
อีกครั้งผลที่แตกต่างกัน569 ≠ 572
ฉันพยายามระบุ --si เพื่อให้แน่ใจว่าตัวเลือกทั้งสองใช้ขนาดเท่ากันโดยไม่มีประโยชน์:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... ค่าอีกครั้งที่แตกต่างกัน: 582k 586k
ฉันพยายามค้นหาเว็บ แต่สิ่งเดียวที่ฉันสามารถหาที่ดูเหมือนเกี่ยวข้องเป็นนี้ :
บางไฟล์มี "ช่อง" ในไฟล์ดังนั้นการใช้งานที่แสดงโดย
ls -s
(... ) นั้นน้อยกว่าขนาดไฟล์ที่ระบุโดยls -l
"
(โปรดทราบว่าในผลลัพธ์ของฉันสิ่งที่ตรงกันข้ามเกิดขึ้น: ls -s
ส่งคืนขนาดที่ใหญ่กว่าls -l
ไม่เล็กลง)
ในขณะเดียวกันหน้านี้บอกว่า
ไม่มีวิธีที่สง่างามในการตรวจจับหลุมไฟล์ Unix
ดังนั้นฉันจะจัดการกับความคลาดเคลื่อนนี้ได้อย่างไร ค่าใดที่พิจารณาว่าถูกต้อง นี่อาจเป็นข้อผิดพลาดls
หรือไม่?
ls -s
นับเช่นนั้น