Surprising to me this isnt a program yet…
Anyhow the credit goes all to: http://www.linuxjournal.com/article/9293?page=0,1 – Simon Sweetwater is the author of this script – good job if your reading this 🙂
#!/bin/ksh
bytestohr()
{
# Convert input parameter (number of bytes)
# to Human Readable form
#
SLIST="bytes,KB,MB,GB,TB,PB,EB,ZB,YB"
POWER=1
VAL=$( echo "scale=2; $1 / 1" | bc)
VINT=$( echo $VAL / 1024 | bc )
while [ $VINT -gt 0 ]
do
let POWER=POWER+1
VAL=$( echo "scale=2; $VAL / 1024" | bc)
VINT=$( echo $VAL / 1024 | bc )
done
echo $VAL$( echo $SLIST | cut -f$POWER -d, )
}
This worked with bash - as is, or can change it to #!/bin/bash instead of #!/bin/ksdh #!/bin/bash
bytestohr()
{
# Convert input parameter (number of bytes)
# to Human Readable form
#
SLIST="bytes,KB,MB,GB,TB,PB,EB,ZB,YB"
POWER=1
VAL=$( echo "scale=2; $1 / 1" | bc)
VINT=$( echo $VAL / 1024 | bc )
while [ $VINT -gt 0 ]
do
let POWER=POWER+1
VAL=$( echo "scale=2; $VAL / 1024" | bc)
VINT=$( echo $VAL / 1024 | bc )
done
echo $VAL$( echo $SLIST | cut -f$POWER -d, )
}
PS he did mention there is a slight mistake in the script:
Oops mistake aboveSubmitted by Simon Sweetman (not verified) on Fri, 09/17/2010 – 20:22.
As soon as you make a post you find a mistake, the above while statement should be changed to while [ ! $VINT = "0" ] To avoid numeric overflows in some Korn shell implementations.
My modifications b2h – bytes to hr – no difference between b2h and bytestohr()
k2h – the kilobytes that it takes in are base 2 kilobytes (or in other words they are technically kibibytes) – where 1 kilobyte = 1024 bytes
#!/bin/bash
b2h()
{
# By: Simon Sweetwater
# Spotted Script @: http://www.linuxjournal.com/article/9293?page=0,1
# Convert input parameter (number of bytes)
# to Human Readable form
#
SLIST=”bytes,KB,MB,GB,TB,PB,EB,ZB,YB”
POWER=1
VAL=$( echo “scale=2; $1 / 1” | bc)
VINT=$( echo $VAL / 1024 | bc )
while [ $VINT -gt 0 ]
do
let POWER=POWER+1
VAL=$( echo “scale=2; $VAL / 1024” | bc)
VINT=$( echo $VAL / 1024 | bc )
done
echo $VAL$( echo $SLIST | cut -f$POWER -d, )
}
k2h()
{
# Convert input parameter (number of kilobytes)
# Spotted Script @: http://www.linuxjournal.com/article/9293?page=0,1
# to Human Readable form
# MODIFIED BY infotinks
SLIST=”bytes,KB,MB,GB,TB,PB,EB,ZB,YB”
POWER=1
VAL=$( echo “scale=2; $1 * 1024 / 1” | bc)
VINT=$( echo $VAL / 1024 | bc )
while [ $VINT -gt 0 ]
do
let POWER=POWER+1
VAL=$( echo “scale=2; $VAL / 1024” | bc)
VINT=$( echo $VAL / 1024 | bc )
done
echo $VAL$( echo $SLIST | cut -f$POWER -d, )
}
If you get an overflow error try this: #!/bin/bash
b2h()
{
# By: Simon Sweetwater
# Spotted Script @: http://www.linuxjournal.com/article/9293?page=0,1
# Convert input parameter (number of bytes)
# to Human Readable form
#
SLIST=”bytes,KB,MB,GB,TB,PB,EB,ZB,YB”
POWER=1
VAL=$( echo “scale=2; $1 / 1” | bc)
VINT=$( echo $VAL / 1024 | bc )
while [ ! $VINT = “0” ]
do
let POWER=POWER+1
VAL=$( echo “scale=2; $VAL / 1024” | bc)
VINT=$( echo $VAL / 1024 | bc )
done
echo $VAL$( echo $SLIST | cut -f$POWER -d, )
}
k2h()
{
# Convert input parameter (number of kilobytes)
# Spotted Script @: http://www.linuxjournal.com/article/9293?page=0,1
# to Human Readable form
# MODIFIED BY infotinks
SLIST=”bytes,KB,MB,GB,TB,PB,EB,ZB,YB”
POWER=1
VAL=$( echo “scale=2; $1 * 1024 / 1” | bc)
VINT=$( echo $VAL / 1024 | bc )
while [ ! $VINT = “0” ]
do
let POWER=POWER+1
VAL=$( echo “scale=2; $VAL / 1024” | bc)
VINT=$( echo $VAL / 1024 | bc )
done
echo $VAL$( echo $SLIST | cut -f$POWER -d, )
}
example of use: # b2h 5000 4.88KB
# k2h 5000 4.88MB
to unset the functions from the shell – so they dont work anymore and they are out of memory:
# unset k2h
# unset b2h
likewise for the very top scripts
# unset bytestohr
|