답변:
셸은 오버플로 확인없이 고정 너비 정수 산술을 수행합니다. 따라서 많은 수 또는 분수가 포함될 수있는 계산을 수행 할 때 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
소수점 이하 두 자리를 표시하도록 지시 합니다.
bc <<<"scale=2; $(sudo fdisk -s /dev/sda6) / 1024^2"
numfmt
( GNU Coreutils의 일부 )는 여기에서 사용할 수 있습니다 :
$ sudo fdisk -s /dev/sda | numfmt --to=iec-i --suffix=B --format="%.2f"
931.52MiB
디스크 크기 (MB)를 찾으려면
$ 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
sudo fdisk -s /dev/sda
사용할 수 있습니다df | grep ^\/dev.*/\$
sudo fdisk
는 문제의 프로젝트 범위였습니다.
크기가 킬로바이트로 제공되면 Bash 내장 표현식을 통해 계산해야합니다. 블록 크기가 512B라고 가정하면 다음을 입력해야합니다.
echo $((`fdisk -s /dev/sda`*512/1024))
KiB의 디스크 크기가 표시됩니다. 더 나아가려면 /1024
식 끝에 추가하십시오 .
echo $((`fdisk -s /dev/sda`*512/1024/1024))
디스크 크기가 MiB 등으로 표시됩니다.
$[...]
형식은 더 이상 사용되지 않으며 man bash
"다가오는 버전에서는 제거 될 것입니다." 쉘 산술에 현재 선호되는 형식은 $((...))
입니다.
sudo
누락되어 오류 가 발생합니다 . 또한 측정 단위가 인쇄되지 않습니다.
echo $((($(cat /sys/block/sda/size)*512)/1024**3))GB
기본적으로 Bash 및 의사 부동 소수점 숫자를 사용하여이 작업을 수행 할 수 있습니다. 이 기능을 정의 ~/.bashrc
하고 터미널을 다시여십시오.
function BytesToHuman() {
# /unix/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 -o "%.0f" -t "4 gibibytes" "mebibytes"
4096
를 통해 패키지로 제공됩니다 apt install units
.
이 도구는 상당히 다른 표준 도구이며, 다양한 다른 UNIX 계열 시스템 (예 : FreeBSD ) 에 기본적으로 설치되어 있습니다 . units (1) 구문은 다양한 운영 체제에서 사용 가능한 구현마다 다를 수 있습니다. 다음은 동일한 변환이지만 이번에는 FreeBSD units (1) 사용합니다 .
$ units -o "%0.f" -t "4 gigabytes" "megabytes"
4096
df -h /
. 의 크기를 표시/
A의-h
잃어버린 읽을 수있는 형식.