मुझे यह पता नहीं चल सकता है कि मुझे निम्नलिखित परिणाम क्यों मिल रहे हैं:
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
अलग परिणाम! 581944 19 585728 ।
मैंने तुलनात्मक मूल्यों को दूसरे तरीके से उत्पन्न करने की कोशिश की, उपयोग के आसपास -k
, लेकिन मुझे मिलता है:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
फिर से, अलग परिणाम, 569 56 572 ।
मैंने यह निर्दिष्ट करने की कोशिश की - यह सुनिश्चित करने के लिए कि दोनों विकल्प समान पैमाने का उपयोग कर रहे हैं, कोई फायदा नहीं हुआ:
$ 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
, छोटा नहीं होता ।)
इस बीच, यह पृष्ठ कहता है कि
यूनिक्स फ़ाइल छेद का पता लगाने का कोई सुंदर तरीका नहीं है।
तो, मैं इस विसंगति से कैसे निपट सकता हूं? इन मूल्यों में से किसे सही माना जा सकता है? यह संभवतः में एक बग हो सकता है ls
?
ls -s
गिनता?