Non riesco a capire perché sto ottenendo i seguenti risultati:
ls -l
mi dice che la dimensione di un determinato file (HISTORY) è "581944":
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
dice che è "572":
$ ls -s HISTORY
572 HISTORY
Devo ovviamente fare in modo che i valori utilizzino una scala comparabile. Quindi prima confermo che l'utilizzo di --block-size 1
in ls -l
mi dà lo stesso risultato di prima:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Quindi faccio lo stesso per ls -s
ottenere un valore nella stessa scala:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Risultati diversi! 581944 ≠ 585728 .
Ho provato a generare valori comparabili viceversa, usando -k
, ma ottengo:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Ancora una volta, risultati diversi, 569 ≠ 572 .
Ho provato a specificare --si per assicurarmi che entrambe le opzioni stessero usando la stessa scala, senza risultati:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... ancora, valori diversi: 582k ≠ 586k .
Ho provato a cercare sul web, ma l'unica cosa che ho trovato che sembrava rilevante era questa :
In alcuni file sono presenti "buchi", pertanto l'utilizzo elencato da
ls -s
(...) è inferiore alla dimensione del file elencata dals -l
. "
(nota che nei miei risultati accade il contrario: ls -s
restituisce dimensioni maggiori di ls -l
, non inferiori.)
Nel frattempo, questa pagina dice questo
non esiste un modo elegante per rilevare buchi di file Unix.
Quindi, come posso affrontare questa discrepanza? Quale di questi valori può essere considerato corretto? Questo potrebbe forse essere un bug ls
?
ls -s
conta questo?