I’m testing mobile Android devices and I would like to redirect the device log on a file whose name indicates both the date and time of my test, and the device model that is being tested.
For the first issue, I have already resolved with
now=$(date +"%b_%d_%Y_%k_%M");adb logcat -c;adb logcat|tee $now
So:
$ echo $now
Jan_03_2012_13_09
and the tee command creates a file with this filename.
As for the device model I have written two bash lines that obtain it from adb shell, namely
device=$(adb shell cat /system/build.prop | grep "^ro.product.device=")
deviceshortname=$(echo $device | sed 's/ro.product.device=//g')
(not optimal as I am not very good in bash programming… 🙂 but I manage to get
$ echo $deviceshortname
LT15i
My problem is how to combine $now and $deviceshortname to obtain a filename such as:
LT15i_Jan_03_2012_13_19
I tried to set another variable:
filename=($(echo $deviceshortname"_"$now))
and got:
$ echo $filename
LT15i_Jan_03_2012_13_19
but if I try redirecting the log:
$ adb logcat | tee $filename
I obtain such file:
-rw-r--r--+ 1 ele None 293 Jan 3 13:21 ?[01;31m?[K?[m?[KLT15i_Jan_03_2012_13_19
I don’t know why these strange characters and what I’m doing wrong.
Something is adding color to your output. It might be
grep(1), it mightadb, it might be baked into the/system/build.propresource that you’re reading.If you’re lucky, it is being added by
grep(1)— because that is supremely easy to disable with--color=no:If the colors are being added by
adb, then perhaps it has a command line option that asks it to avoid colorizing the output.If the colors are hard-coded into the
/sys/build.propresource in some way, then you’ll need some little tool that filters out the color codes. I don’t have one handy (and it’s bedtime) but you can probably build one starting withtr(1)to delete\033ASCIIESCcharacters.