ฉันไม่สามารถทราบสาเหตุที่ฉันได้รับผลลัพธ์ต่อไปนี้:
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นับเช่นนั้น