La commande df Terminal Mac est un outil que j’utilise pour obtenir de l’espace disque. Par exemple, avant de recevoir un nouveau logiciel ou une mise à jour, je prends aussi note de mon espace disque dur avant et après l'installation.
Je me souviens d'avoir utilisé cette commande avec les options -b, -k, -m ou -g pour obtenir une taille de 512 octets par blocs, kilooctets, mégaoctets ou gigaoctets. Selon man (description manuelle) de df, ces options peuvent également changer BLOCKSIZE. Ainsi, si j'utilise ensuite "df -h" ou "df -H", le résultat sera une taille en base binaire ou décimale. Je me souviens que j'ai déjà essayé et que cela a bien fonctionné.
Récemment, j'ai essayé d'utiliser "df -b" pour réinitialiser BLOCKSIZE. J'essaie ensuite à nouveau "df -h" ou "df -h", j'obtiens des valeurs de taille exprimées en gigaoctets (binaires ou décimaux), ce qui n'est pas prévu dans 512 octets. Ensuite, j'essaie d'utiliser "df -hb" ou "df -Hb", les valeurs obtenues sont les mêmes (bloc de 512 octets).
Voici quelques exemples que j'avais auparavant:
$ df -k # this command I get the expected result: 1024-block
Filesystem 512-blocks Used Available ...
/dev/disk1s2 97101344 403566296 572023048 ...
....
$ df -h # the result in binary base, value in 1024-block
Filesystem 1024-blocks Used Avail ...
/dev/disk1s2 97101344 403566296 572023048 ...
....
$ df -H # the result in decimal base, value in 1,000 base
Filesystem Size Used Avail ...
/dev/disk1s2 99431776 413251887 585751601 ...
....
Comme dans l'exemple ci-dessus, "df -k" réinitialise le BLOSKSIZE en kilo-octets. Cependant, maintenant, je répète les mêmes commandes, mais je ne peux pas obtenir les mêmes résultats:
$ df -k # this command I get the expected result: 1024-block
Filesystem 512-blocks Used Avail ...
/dev/disk1s2 97101344 403566296 572023048 ...
...
$ df -h # the result in binary base but values in Gigabytes
Filesystem Size Used Avail ...
/dev/disk1s2 465Gi 192Gi 273Gi ...
....
$ df -H # the result in decimal base by values in Gigabytes
Filesystem Size Used Avail ...
/dev/disk1s2 500G 207G 293G ...
....
Je ne suis pas sûr de ce qui empêche la valeur BLOCKSIZE de ne pas être réinitialisée. Par conséquent, je ne peux pas obtenir la taille en base décimale (1 000 pour les kilo-octets en base décimale, 1 000 000 pour les mégaoctets en base décimale, ...).
En passant, je reçois les informations sur l’utilisation de df et de BLOCKSIZE auprès de:
$ man df
Réponses:
Je pense que votre mémoire de la façon dont la commande fonctionnait était fausse;
df
n'a jamais changéBLOCKSIZE
, l'a seulement remplacé temporairement. En fait, il ne peut pas changerBLOCKSIZE
pour rien sauf lui-même - si vous exécutezdf
3 fois, chaque instance obtient sa propre copie de l'environnement de votre shell, et peut modifier sa propre copie, mais ne peut rien faire à l'environnement du shell (ou à l'autre). instances 'non plus).Cela dit, je pense que le seul moyen d'obtenir le comportement que vous souhaitez est de changer réellement
BLOCKSIZE
l'environnement du shell:Notez que cette façon de faire donne le comportement persistant que vous décrivez. après avoir été défini
BLOCKSIZE
pour le shell parent, il est transmis à toutes les commandes que vous exécutez à partir de ce shell (jusqu'à ce que / à moins que vous ne le changiez à nouveau). Si vous voulez seulement le changer pour une commande particulière, utilisez ceci à la place:la source
echo $BLOCKSIZE
affichera sa valeur, s’il existe une variable d’environnement portant ce nom (vous pouvez également utiliserprintenv
pour afficher toutes les variables d’environnement. Normalement, il est peu probable qu’elle soit définie, auquel cas elledf
utilise sa valeur par défaut, celle de blocs de 512 octets. Je précise que: si une unité est spécifiée avec un indicateur de ligne de commande (comme-k
ou-h
), l’df
utilise, sinon elle cherche BLOCKSIZE, et si elle est définie l’utilise, sinon elle utilise des blocs de 512 octets.Cela devrait utiliser des blocs par défaut de 512 octets:
Si vous utilisez un format lisible par l'homme, une fois que la quantité affichée est suffisante pour la prochaine mesure, elle s'affichera ainsi (par exemple, 1024M -> 1G)
la source
df -P -H
semble plus proche de ce que vous recherchez. -P spécifie les blocs par défaut de 512 octets et -H est lisible par l'homme pour les tailles de base 10.