Я не могу понять, почему я получаю следующие результаты:
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
in 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
считается?