Я пытаюсь определить размер моего диска, поэтому я запустил приведенную ниже команду
$ sudo fdisk -s /dev/sda
976762584
. Я думаю, что размер (976762584
) диска показан в килобайтах. Как преобразовать значение в мегабайты или гигабайты через терминал для лучшего понимания?
Оболочка делает целочисленную арифметику фиксированной ширины без проверки на переполнение. Так, когда выполнение вычисления, которое могло бы включить или большие количества или части, bc
, является хорошим выбором. Получить мегабайты:
$ echo "scale=2; $(sudo fdisk -s /dev/sda6) / 1024" | bc
13641.75
Для получения гигабайтов:
$ echo "scale=2; $(sudo fdisk -s /dev/sda6) / 1024^2" | bc
12.70
присвоение scale=2
говорит bc
отображать два десятичных разряда.
Если размер дан в Килобайтах, необходимо вычислить через Bash встроенные выражения. Принимая размер блока = 512B, необходимо ввести:
echo $((`fdisk -s /dev/sda`*512/1024))
Это покажет размер диска в кибибайте. Для движения далее просто добавьте /1024
до конца выражения:
echo $((`fdisk -s /dev/sda`*512/1024/1024))
Это покажет размер диска в мебибайт и так далее.
, Чтобы найти, что размер диска в Мегабайтах,
$ sudo fdisk -s /dev/sda | awk '{$1=$1/1024; print $1,"MB";}'
953870 MB
находит размер диска в Гигабайтах,
$ sudo fdisk -s /dev/sda | awk '{$1=$1/(1024^2); print $1,"GB";}'
931.513 GB
numfmt
(часть GNU Coreutils), может использоваться здесь:
$ sudo fdisk -s /dev/sda | numfmt --to=iec-i --suffix=B --format="%.2f"
931.52MiB
Можно сделать это исходно с Bash и псевдочислами с плавающей точкой. Определите эту функцию в Вашем ~/.bashrc
и вновь откройте свой терминал:
function BytesToHuman() {
# https://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254
read StdIn
b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)
while ((b > 1024)); do
d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
b=$((b / 1024))
let s++
done
echo "$b$d ${S[$s]}"
} # BytesToHuman ()
Теперь протестируйте его:
$ sudo fdisk -s /dev/sda
976762584
$ sudo fdisk -s /dev/sda | BytesToHuman
931.51 MiB
Есть инструмент под названием units, который можно использовать для преобразования единиц:
$ units -o "%.0f" -t "4 gibibytes" "mebibytes"
4096
Он доступен в виде пакета через apt install units
.
Это довольно стандартный инструмент, который можно найти установленным по умолчанию в различных других UNIX-подобных системах (например, FreeBSD ). Имейте в виду, что синтаксис модулей (1) может отличаться в разных реализациях, доступных в разных операционных системах. Вот то же преобразование, но на этот раз с модулями FreeBSD (1) :
$ units -o "%0.f" -t "4 gigabytes" "megabytes"
4096