Я не можу зрозуміти, чому я отримую такі результати:
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 ≠ 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
рахується?