0

最初の質問

現在、bash スクリプトで HAL を使用して、次のコマンドで特定のデバイスのサイズを取得しています。

HAL_SIZE=$(hal-get-property --udi $UDI --key storage.removable.media_size)

結果 (例): 4110188544/

しかし、この値を GB のような人間が読める形式に変換するにはどうすればよいですか。

4 110 188 544 bytes = 3.82791138 gigabytes

2 番目の質問

    for UDI in $(hal-find-by-property --key storage.bus --string usb)
do
    HAL_TMP=`hal-get-property --udi $UDI --key storage.removable.media_available`
    if [ "$HAL_TMP" = "true" ]; then
        HAL_DEV=$(hal-get-property --udi $UDI --key block.device)
        HAL_SIZE=$(hal-get-property --udi $UDI --key storage.removable.media_size)
        HAL_TYPE=$(hal-get-property --udi $UDI --key storage.drive_type)

ほとんどの Linux ディストリビューションでは HAL がサポートされなくなるため、 udisksの有効期限が切れている人はいますか? udisksを使用することを考えています。

上記のコマンドをどのように適応させる必要がありますが、 halの代わりにudisksを使用しますか?

ありがとう!

4

1 に答える 1

1

q1への答え:

>bytes="4110188544/"; echo $(echo "scale=3;${bytes%/*}/1024/1024/1024"|bc)GB
3.827GB

これにより、末尾のスラッシュが削除され、「bc」を使用してバイトが GB に変換されます。精度のためにスケール整数を変更します

于 2012-11-06T15:21:07.953 に答える