Терминал Mac df команда является инструментом, который я использую для получения дискового пространства. Например, прежде чем я получаю новое программное обеспечение или обновление, я также обращаю внимание на свое пространство HD прежде и после установки.
Я помню, что использовал эту команду с-b,-k,-m или-g опциями получить размер в 512 блоках байтов, килобайтах, мегабайтах или гигабайтах. По словам человека (ручное описание) df, те опции могут изменить BLOCKSIZE также так, чтобы, если я использую "df-h" или "df-H" впоследствии, результатом был размер или в двоичном основании или в десятичной основе. Я помню, что попробовал это прежде, и это хорошо работало.
Недавно, я пытаюсь использовать "df-b" для сброса BLOCKSIZE. Я затем пробую "df-h" или "df-H" снова, я получаю значения размера все как гигабайты (двоичный файл или десятичное число), не ожидаемый в 512 байтах. Затем я пытаюсь использовать "df-hb" или "df-Hb", значения результата - тот же (512 блоков байтов).
Вот некоторые примеры, которые я имел прежде:
$ 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 ...
....
Как вышеупомянутый пример, "df-k" сбрасывает BLOSKSIZE к килобайтам. Однако теперь я повторяю эти те же команды, но я не могу получить те же результаты:
$ 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 ...
....
Я не уверен, что предотвращает значение BLOCKSIZE, не сбрасываемое. В результате я не могу получить размер в десятичной основе (1000 для Килобайтов в десятичной основе, 1,000,000 для Мегабайтов в десятичной основе...).
Между прочим, я получаю информацию об использовании df и BLOCKSIZE от:
$ man df
Я думаю Ваша память того, как команда раньше работала, является неправильным; df
никогда не изменялся BLOCKSIZE
, только переопределенный это временно. На самом деле это не может измениться BLOCKSIZE
для чего-либо кроме себя - если Вы работаете df
3 раза каждый экземпляр получает свою собственную копию среды Вашей оболочки, и может изменить его собственную копию, но ничего не может сделать к среде оболочки (или другие экземпляры ни один).
Тем не менее я думаю единственный способ получить поведение, которое Вы хотите, должен на самом деле измениться BLOCKSIZE
в среде оболочки:
export BLOCKSIZE=1000000 # Base-10 Megabytes
df # No flags, so it uses the inherited BLOCKSIZE
Обратите внимание, что этот способ сделать вещи дает персистентное поведение, которое Вы описываете; после установки BLOCKSIZE
для родительской оболочки это передается всем командам, которые Вы выполняете в той оболочке от той точки на (пока/если Вы не изменяете его снова). Если Вы только хотите изменить его для конкретной команды, используйте это вместо этого:
BLOCKSIZE=1000000 df # Displays in base-10 Megabytes
df # Displays in the default format
Это должно использовать 512-байтовые блоки по умолчанию:
df -P
При использовании человекочитаемого формата, когда-то показанная сумма достаточно для следующего измерения, которое это отобразит в том (например, 1024M-> 1G)
df -P -H
кажется ближе к тому, что Вы ищете.-P указывает 512-байтовые блоки по умолчанию, и-H человекочитаем для основы 10 размеров.
– John T
25.09.2009, 08:00