Nie mogę zrozumieć, dlaczego otrzymuję następujące wyniki:
ls -l
mówi mi, że rozmiar danego pliku (HISTORIA) to „581944”:
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
mówi, że jest to „572”:
$ ls -s HISTORY
572 HISTORY
Oczywiście muszę zastosować wartości w porównywalnej skali. Najpierw potwierdzam, że użycie --block-size 1
in ls -l
daje taki sam wynik jak poprzednio:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Następnie robię to samo, aby ls -s
uzyskać wartość w tej samej skali:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Różne wyniki! 581944 585728 .
Próbowałem wygenerować porównywalne wartości na odwrót, używając -k
, ale otrzymuję:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Ponownie różne wyniki, 569 ≠ 572 .
Próbowałem podać --si, aby upewnić się, że obie opcje używają tej samej skali, ale bezskutecznie:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... znowu, różne wartości: 582 tys . ≠ 586 tys .
Próbowałem przeszukać sieć, ale jedyne, co wydawało mi się istotne, to :
Niektóre pliki mają „dziury”, więc użycie wymienione przez
ls -s
(...) jest mniejsze niż rozmiar pliku wymienione przezls -l
. ”
(zauważ, że w moich wynikach dzieje się odwrotnie: ls -s
zwraca rozmiary większe niż ls -l
, nie mniejsze).
Tymczasem ta strona to mówi
nie ma eleganckiego sposobu na wykrycie dziur w plikach uniksowych.
Jak więc poradzić sobie z tą rozbieżnością? Które z tych wartości można uznać za prawidłowe? Czy to może być błąd ls
?
ls -s
liczy?