freeコマンドをちょっとだけ正確にしてみた
linuxのfreeコマンド(メモリの使用状況を表示する)で、-h --siオプションをつけたときの表示が、どうにもおかしかった(接頭辞が1000ベースでなく1024ベースで表示される)ので、シェルスクリプトを書いてみました。
-h --siオプション以外のオプションがあるときは、freeコマンドを呼び出しています。
#!/bin/bash
OPT="$@";
OPT1=`echo $OPT|grep -e "-h" |grep -e "--si"`;
if [ ${#OPT1} -gt 0 ]
then
CNT=1;
CNT1=0;
printf "%8s";
for LINE in `free -b`
do
if [ $CNT1 -eq 0 ]
then
printf "%12s" $LINE;
else
if [ $CNT -eq 0 ]
then
printf "%-8s" $LINE
else
if [[ "$LINE" =~ ^[0-9]{10,12}$ ]]
then
LINE=`echo "scale=1;$LINE/1000000000" | bc`
printf "%11.1fG" $LINE;
else
if [[ "$LINE" =~ ^[0-9]{7,9}$ ]]
then
LINE=`echo "scale=1;$LINE/1000000" | bc`
printf "%11.1fM" $LINE;
else
if [[ "$LINE" =~ ^[0-9]{4,6}$ ]]
then
LINE=`echo "scale=1;$LINE/1000" | bc`
printf "%11.1fk" $LINE;
else
if [[ "$LINE" =~ ^[0-9]{1,3}$ ]]
then
printf "%12dB" $LINE;
fi
fi
fi
fi
fi
fi
CNT=`expr $CNT + 1`;
if [ $CNT -eq 7 ]
then
printf "\n";
CNT=0;
CNT1=`expr $CNT1 + 1`;
fi
done
printf "\n";
else
free "$@";
fi
実行結果(及びfree -h --siとの比較)はこんな感じです。
![](https://assets.st-note.com/img/1661742912335-d06ek9AH40.png?width=800)
この記事が気に入ったらサポートをしてみませんか?