2012-11-06 28 views
0

首先問HAL - UDISKS,人類可讀的,將字節轉換爲千兆字節的bash腳本

我目前使用HAL在bash腳本下面的命令來獲得特定設備的大小

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

的結果(例如):4110188544/

但我怎麼能轉換這個值到人類可讀的格式一樣GB:

4 110 188 544 bytes = 3.82791138 gigabytes 

第二個問題

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) 

確實任何人有一些expirence與udisks,因爲HAL不會再支持最Linux發行版,所以我想到的是使用udisks

如何必須適應上述命令,但使用udisks而不是hal

謝謝!

+0

我認爲q2比'stackoverflow'更'服務器故障'。但也許我認爲這是因爲我只能回答q1! – elbeardmorez

+0

我也在serverfault上發佈了它;) – MeJ

回答

1

回答Q1:

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

這條後正斜槓和使用 'BC' 的字節轉換爲GB。修改比例整數的準確性