Je n'arrive pas à comprendre pourquoi j'obtiens les résultats suivants:
ls -l
me dit que la taille d'un fichier donné (HISTORY) est "581944":
$ ls -l HISTORY
-rw-rw-r-- 1 waldir waldir 581944 Feb 22 10:59 HISTORY
ls -s
dit que c'est "572":
$ ls -s HISTORY
572 HISTORY
Je dois évidemment faire en sorte que les valeurs utilisent une échelle comparable. Donc, tout d'abord, je confirme que l'utilisation de --block-size 1
en ls -l
me donne le même résultat qu'auparavant:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldir waldir 581944 Feb 22 10:59 HISTORY
Ensuite, je fais la même chose avec ls -s
pour obtenir une valeur de la même échelle:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Des résultats différents! 581944 <585728 .
J'ai essayé de générer des valeurs comparables dans l'autre sens, en utilisant -k
, mais j'obtiens:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldir waldir 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Encore une fois, différents résultats, 569 ≠ 572 .
J'ai essayé de spécifier --si pour s’assurer que les deux options utilisaient la même échelle, sans succès:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldir waldir 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... encore une fois, différentes valeurs: 582k <586k .
J'ai essayé de chercher sur le Web, mais la seule chose que je pouvais trouver pertinente était this :
Certains fichiers comportent des "trous", de sorte que l’utilisation indiquée par
ls -s
(...) est inférieure à la taille de fichier indiquée parls -l
. "
(notez que dans mes résultats, le contraire se produit: ls -s
renvoie des tailles supérieures à ls -l
, et non plus petites.)
Entre-temps, cette page indique que
il n'y a pas de moyen élégant pour détecter les trous de fichiers Unix.
Alors, comment puis-je gérer cette divergence? Laquelle de ces valeurs peut être considérée comme correcte? Est-ce que cela pourrait être un bogue dans ls
?