端末でキロバイトをメガバイトまたはギガバイトに変換する方法は?


15

私は自分のディスクのサイズを見つけようとするので、以下のコマンドを実行しました

$ sudo fdisk -s /dev/sda
976762584

上記のように表示されます。976762584ディスクのサイズ()はキロバイトで表示されていると思います。理解を深めるために、ターミナルで値をメガバイトまたはギガバイトに変換するにはどうすればよいですか?


1
これはトリックを実行します:df -h /。のサイズを人間が読める形式/で表示し-hます。
blade19899

fdisk -sも非推奨になっているので、おそらく使用する方が良いでしょうblockdev --getsize64
bac0n

@ blade19899はディスク全体ではなくパーティションのサイズを取得します
bac0n

回答:


9

シェルは、オーバーフローのチェックなしで固定幅整数演算を行います。したがって、大きな数または分数を含む可能性のある計算を行う場合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=2bc、小数点以下2桁を表示するよう指示します。


私はこのような場合にherestringsを使用するのが好きです:bc <<<"scale=2; $(sudo fdisk -s /dev/sda6) / 1024^2"
dimo414


3

awkで

ディスクのサイズをメガバイトで確認するには、

$ 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.*/\$
Dean Rather

@DeanRather sudo fdiskは、問題に定義されたプロジェクトスコープでした。
WinEunuuchs2Unix

3

サイズがキロバイトで指定されている場合は、Bash組み込み式を使用して計算する必要があります。ブロックサイズを512Bとすると、次のように入力する必要があります。

echo $((`fdisk -s /dev/sda`*512/1024))

ディスクサイズがKiBで表示されます。さらに進むには、/1024式の最後に追加します。

echo $((`fdisk -s /dev/sda`*512/1024/1024))

これにより、ディスクサイズがMiBなどで表示されます。


2
よくできました。マイナーなメモとして、この$[...]形式は廃止されておりman bash、「今後のバージョンでは削除される予定です」と言われています。シェル演算で現在推奨されている形式は$((...))です。
John1024 2014

@ John1024メモをありがとう。二重括弧の構文が適切であるとは思いませんでした。
Danatela 2014

sudoが見つからないため、2つのコマンドをコピーして貼り付けるとエラーが発生します。また、測定単位は印刷されません。
WinEunuuchs2Unix

測定が間違っています。
bac0n

でもできますecho $((($(cat /sys/block/sda/size)*512)/1024**3))GB
bac0n

1

これは、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

1

単位と呼ばれるツールがあり、単位の変換に使用できます。

$ 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.