bash脚本输出到另一个文件,由conky读取

时间:2014-05-28 07:17:54

标签: bash

我该如何制作

echo 'kindle' - `( du -sh /media/boudiccas/back1/obkindle |awk '{ print $1; }' )`

输出到另一个文件只是给出一个名字和一个数字和一个gb [例如2.0gb]然后可以被conky读取吗?所以最终的输出会显示出类似的东西

kindle - 2.0gb

这是“baksize”的完整脚本,每5分钟调用一次(仅用于测试)来自cron作业

 echo 'kindle' - ` du -sh /media/boudiccas/back1/obkindle |awk '{ print $1; }'`>~/bin/backshow 'kindle-rsync' - `du -sh /media/boudiccas/back1/Kindle |awk '{ print $1; }'`>~/bin/backshow
 echo 'home' - `du -sh /media/boudiccas/back1/obnam-home |awk '{ print $1; }'`>~/bin/backshow 'back4' - `du -sh /media/boudiccas/back1/obnam-back4 |awk '{ print $1; }'`>~/bin/backshow
 echo 'blog' - `du -sh /media/boudiccas/back1/obblog |awk '{ print $1; }'`>~/bin/backshow  'blogrs' - `du -sh /media/boudiccas/back1/blogback |awk '{ print $1; }'`>~/bin/backshow
 echo 'galaxyrs' - `du -sh /media/boudiccas/back1/galaxy |awk '{ print $1; }'`>~/bin/backshow 'back2a' - `du -sh /media/boudiccas/back1/ob-back2a |awk '{ print $1; }'`>~/bin/backshow
 echo 'back2b' - `du -sh /media/boudiccas/back1/ob-back2b |awk '{ print $1; }'`>~/bin/backshow 'back2c' - `du -sh /media/boudiccas/back1/ob-back2c |awk '{ print $1; }'`>~/bin/backshow

这是“backshow”

 ob-home      204.83gb  music            325.08gb   
 ob-blog        23.92gb   rsync-blog       .70gb           
 2a               671.92gb  2b                   244.23gb          
 2c               28.01gb   2d                    469.98gb         
 ob-kindle     2.56gb    rsync-kindle     .97gb 

2 个答案:

答案 0 :(得分:1)

您的要求并非100%明确,因此此解决方案涵盖少数变体

#!/bin/bash

file=~/bin/backshow
if ! >$file; then
        echo "Error: Access issue while creating file";
        exit 1;
fi

function ComposeFile() { #arg1 friendly_name; arg2 dir
        size_kb=`(du -s $2 | awk '{print $1}') 2>/dev/null`;
        if [ -n "${size_kb}" ]; then
                #calculate into gb with 2 floting ponts controlled by scale
                gb=`echo "scale=2; $size_kb / 1024 / 1024" | bc -l`;
                #if you need wider columns change 25 into i.e. 35
                printf '%-25s %-25s\n' "$1" "${gb}gb" >> $file
        fi
}

ComposeFile temp /var/tmp
ComposeFile doesnt_exist /dummy
ComposeFile another_dir /opt
ComposeFile dell /opt/dell
ComposeFile blahblah /opt
ComposeFile ufffff /opt

#joins every second line
sed -i '$!N;s/\n/ /' $file
cat $file

exit 0;

新产品:

-bash-4.1$ ./stackoverflow.sh
temp                 0gb                  another_dir          3.41gb
dell                 .30gb                blahblah             3.41gb
ufffff               3.41gb

答案 1 :(得分:0)

使用> filename重定向到文件:

echo 'kindle' - `du -sh /media/boudiccas/back1/obkindle |awk '{ print $1; }'` > filename