I am LAZY bones? AN ancient AND boring SITE

2008年 11月 20日 的归档

e-file 根据文件名查询gentoo包的脚本

一直想在gentoo下实现一个类似ubuntu的apt-file的功能,幸好已经有 http://www.portagefilelist.de 这个网站了,就花了2小时写了个小脚本直接到这个站取数据了,感觉效果还可以,先发出来,算是预览版吧,以后会再完善的.
输出格式参考了 eix ,代码如下:

#!/bin/sh
#AUTHOR: bones7456 (bones7456<at>gmail<dot>com)
#VERSION: 20081120
##License: GPL
#e-file is like apt-file for gentoo, but data is online
 
if [[ $# -ne 1 ]];then
	echo "Usage: `basename $0` filename"
	exit 1
fi
 
URL="http://www.portagefilelist.de/index.php/Special:PFLQuery2?file=$1&searchfile=lookup&lookup=file#result"
 
w3m -dump -cols 3000 $URL | awk '
BEGIN{
	FLAG=0
	FOUND=0
}
{
	if($1=="dir" && $2=="package"){
		FLAG=1
		next
	}
	if($1=="Retrieved" && $2=="from"){
		if(FOUND){
			for(i in ver){
				split(i,ii,/\//)
				printf("%c[%d;%d;%dm* ",27,2,0,32)
				printf("%c[0m%s/",27,ii[1])
				printf("%c[%d;%d;%dm%s\n",27,2,1,29,ii[2])
				printf("%c[%d;%d;%dm\t",27,2,0,32)
				printf("Available versions:\t%s\n",ver[i])
				printf("\tMatched File:\t\t")
				printf("%c[0m",27)
				printf("%s\n\n",file[i])
			}
		}else{
			print "No matches found."
		}
		exit
	}
	if(FLAG==1 && NF!=0){
		ver[$1 "/" $2]=$NF " " ver[$1 "/" $2]
		file[$1 "/" $2]=$3 "/" $4
		FOUND=1
	}
}'

截个图:

e-file截图

e-file截图


脚本下载地址