Параметр «-h» для «ls» отображает размер в МБ или МБ и согласуется ли он с системами на основе Unix? [дубликат]

Параметр «-h» для «ls» отображает размер в МБ или МБ и согласуется ли он с системами на основе Unix? [дубликат]
На чтение
8 мин.
Просмотров
11
Дата обновления
11.11.2024

Обычная команда ls может отображать размер файлов с опцией -h , и я есть небольшие сомнения относительно его отображения в МБ или MIB.

Например:

  $ ls -lhadrwxr-xr-x 2 группа пользователей  4.0K 2 апреля 21:49.  drwxr-xr-x 5 группа пользователей 4.0K 2 апреля 21:49 ..- rw-r - r-- 1 группа пользователей 129M 2 апреля 21:49 2018-04-02T21: 49: 08.981976.hdf5   

Итак, это оставляет мне 2 вопроса:

  • Отображает ли ls -lha размер в МБ или MiB?
  • Согласован ли он с течением времени для операционных систем на базе Unix и их собственных версий?

NB: Не только коммерческие операционные системы на основе Unix при ответе на этот вопрос следует рассмотреть системы.


Из справочной страницы ls:

  -h, --human-readable с -l и -s, размеры печати, такие как 1K 234M 2G и т. д. - si аналогично, но используйте степень 1000, а не 1024  

Итак, если вы просто используете -h, вы получите MiB (^ 1024). Если вы добавите —si к параметрам, он будет использовать MB (^ 1000). Проверено на ubuntu, debian и redhat. На данный момент у меня нет доступа к коммерческим операционным системам UNIX, но они обычно не включают опцию -h.

6



Разница в размере файла между МБ и байтами

Я пытаюсь понять следующую проблему. Я читаю информацию о файле следующим образом:

  FileInfo info = new FileInfo (path);  

Код затем возвращает 16599774 байта для моего файла, когда я выполняю info.Length . Когда я конвертирую байты в МБ , я получаю 15,8 МБ .

Может кто-нибудь объяснить мне разницу между размером в байтах и ​​в МБ?


Обычно файловые системы вычисляют размеры файлов в мебибайтах (МиБ), но сообщают результаты в мегабайтах (МБ). Разница между этими единицами в том, что МБ — это единица с базовыми 10, которая, как вы и ожидали, имеет 1000000 байт (один миллион). Но MiB — это базовая 2 единица, которая содержит 1024 * 1024 байта (1048576 байтов). Если вы разделите 16599774 байта на 1048576 (байтов на мебибайт), вы получите 15,8 мебибайт (MiB). Но, опять же, ОС сообщает это число как мегабайты (МБ).

Обратите внимание, что обычно производители жестких дисков используют этот прием base10/base2 и сообщают размеры дисков в гигабайтах (ГБ) или терабайтах (ТБ). И вы увидите точно такое же «уменьшение» размера при проверке размера жесткого диска в файловой системе. Например. 5 ТБ на самом деле составляет 4,5 ТиБ. Но файловая система покажет вам 4,5 ТБ.

4


Думаю, вы думают, что это ровно 1 миллион байтов, но на самом деле это 1 мегабайт = 1048 576 байтов


Мебибайт является кратным байту единицы для количества цифровой информации.

Вот об этом страница в Википедии.

Мебибайт составляет 2 ^ 20 байт, или 1 048 576 байт. Вы конвертируете не в мегабайты, а в мебибайты.

Количество байтов (16 599 774), разделенное на байты/MiB (1048 576) = 15,8308 MiB.

0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий