|
|
首发和以后更新都在我的blog: http://li2z.cn/category/e-file/
一直想在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
- }
- }'
复制代码 脚本下载地址: http://linuxfire.com.cn/~lily/e-file
截图如下:

=====20081125添加=====
ChangeLog:
20081125:
优化代码结构
增加本地已安装版本的显示
增加Homepage和Description的显示
http://li2z.cn/2008/11/25/e-file-20081125/ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|