I am LAZY bones ? all linux

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截图


脚本下载地址

最后修改时间: 2008年11月25日 13:47

本文章发表于: 2008年11月20日 14:43 | 所属分类:e-file, gentoo, 精华. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

5 个评论 关于: “e-file 根据文件名查询gentoo包的脚本”

  1. oceanboo 在 2008年11月20日 21:25 说:回复

    骨头,我太崇拜你了。

  2. bones7456 在 2008年11月20日 23:51 说:回复

    哈哈,这个简陋的脚本貌似还挺受欢迎的,发出10个小时已经在gentoo-china overlay里面了.

  3. cbkid 在 2008年11月21日 14:43 说:回复

    顶一下你,还不知道overlay呢,很厉害的东西呢。。。。

  4. bones7456 : 更新了e-file 在 2008年11月25日 13:46 说:回复

    […] 上的 bones7456给 iPod 转视频的脚本 上的 drivel给 iPod 转视频的脚本 上的 drivele-file 根据文件名查询gentoo包的脚本 上的 […]

  5. xiooli 在 2008年12月27日 15:05 说:回复

    骨头的awk貌似很娴熟阿,呵呵,看起来awk很强悍的样子,我awk就会点基本的,看来得花点时间学学awk了:)

发表评论