LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
置顶的主题 精华主题  
主题工具
旧 05-05-01, 08:43 第 106 帖
旷野奔狼
 
旷野奔狼 的头像
 
 
注册会员  
  注册日期: May 2005
  帖子: 2
  精华: 0
 

倒 都看晕倒了







__________________
吃力的憧憬着理想,努力地坚持着努力,浪漫着平凡的爱情,快乐着琐碎的日子。:)
  旷野奔狼 当前离线   回复时引用此帖
旧 05-05-06, 16:13 第 107 帖
kiron
 
kiron 的头像
 
 
退役版主  
  注册日期: Apr 2003
  帖子: 1,261
  精华: 13
 

比教好玩的东西---shell中的俄罗斯方块

由yuri-master提供,程序作者是飞灰橙网友
多谢飞灰橙的精彩程序:

http://www.linuxsir.org/bbs/showthread.php?t=196041







__________________
深邃的技术不仅表现在敏捷的思维和高超的本领,还有过人的修养。
  kiron 当前离线   回复时引用此帖
旧 05-06-07, 01:28 第 108 帖
crquan
 
 
 
注册会员  
  注册日期: Sep 2002
  帖子: 284
  精华: 1
 

引用:
作者: KornLee
在字符控制台里,锁定控制台,可以起到保护系统不被他人乱动的作用,奉献给兄弟们,请指教!
代码:
for i in 9 8 7 6 5 4 3 2 1 0
介绍在此中使用seq 0 9







__________________
[url=http://www.ohloh.net/accounts/19974?ref=Detailed] [img]http://www.ohloh.net/accounts/19974/widgets/account_detailed.gif[/img][/url]
  crquan 当前离线   回复时引用此帖
旧 05-06-20, 16:00 第 109 帖
fanxianbing 帅哥
 
fanxianbing 的头像
 
 
注册会员  
  注册日期: Jan 2004
  帖子: 32
  精华: 0
 

引用:
作者: KornLee
特别感谢作者:tram兄
文件名分析的那里还有点意思。
代码:
#!/bin/bash UNPACK=1 if [ ${1##*.} = bz2 ] ; then TEMP=${1%.*} if [ ${TEMP##*.} = tar ] ; then tar jxvf $1 UNPACK=$? echo This is a tar.bz2 package else bunzip2 $1 UNPACK=$? echo This is a bz2 package fi fi if [ ${1##*.} = gz ] ; then TEMP=${1%.*} if [ ${TEMP##*.} = tar ] ; then tar zxvf $1 UNPACK=$? echo This is a tar.gz package else gunzip $1 UNPACK=$? echo This is a gz package fi fi if [ ${1##*.} = tar ] ; then tar xvf $1 UNPACK=$? echo This is a tar package fi if [ $UNPACK = 0 ] ; then echo Success! else echo Maybe it is not a package or the package is damaged? fi
请解释一下 ${1##*.} 和 ${TEMP##*.}







__________________
[FONT=黑体]凡邦[/FONT][SIZE=3]3[/SIZE][COLOR=Red]Red[/COLOR]
  fanxianbing 当前离线   回复时引用此帖
旧 05-06-25, 15:00 第 110 帖
zengshibin 帅哥
 
zengshibin 的头像
 
 
注册会员  
  注册日期: Jun 2005
  我的住址: 四川.隆昌
  帖子: 82
  精华: 0
 

好东西,下下来,慢慢研究







__________________
Debian+Wmii+Emacs+urxvt
  zengshibin 当前离线   回复时引用此帖
旧 05-07-16, 04:11 第 111 帖
mars_diy
 
mars_diy 的头像
 
 
注册会员  
  注册日期: Aug 2002
  帖子: 460
  精华: 5
 

标题: 百度MP3下载工具


呵呵,其实很简单,就是抓取百度的MP3网页内容再进行过滤处理
代码:
#!/bin/bash ############################################## # # # 百度MP3歌曲下载工具 # # Reort bugs to Martian < Martian2008@gmail.com > # # # ############################################## USAGE="`basename $0`:未指定参数 用法: `basename $0` [选项]\n 请尝试使用“`basename $0` -h”查看更多的选项。" USAGE2="Getmp3 <martian2008@gmail.com>百度MP3歌曲下载工具 用法: `basename $0` [选项]\n 选项 -a top100|top500 选择下载mp3的分类 -b 1-max 下载开始曲目数(default 1) -e 1-max 下载结束曲目数(default max) -g number 下载指定曲目(id编号) -m 交互式选择下载镜像点 -o 覆盖已下载文件 -u 更新数据库 -U 更新下载镜像 -l 打印音乐数据列表 -s [strings] 查找歌曲 -S [PATH] 文件另存为 " M=0 O=0 B=1 E=0 L=0 G=0 U=0 SEARCH="" LYNX="/usr/bin/lynx" WGET="/usr/bin/wget" GET_NUM=102 NUM=1 SOURCE1="http://list.mp3.baidu.com/list/newhits.html" SOURCE2="http://list.mp3.baidu.com/topso/mp3topsong.html" TEMP1="${HOME}/.Getmp3/tmp_mp3_list" TEMP2="${HOME}/.Getmp3/tmp_mp3_list2" TEMP3="${HOME}/.Getmp3/tmp_mp3_down" SAVE1="${HOME}/mp3_new100" SAVE2="${HOME}/mp3_top500" export LESSCHARSET=latin1 export LC_ALL=zh_CN.gbk export LANG=zh_CN.gbk if [ ! -d "${HOME}/.Getmp3" ];then mkdir -p "${HOME}/.Getmp3" fi while getopts a:hmuUob:e:lg:s:S: OPTION; do case "$OPTION" in a) S="$OPTARG" ;; s) SEARCH="$OPTARG" ;; h) echo -e "$USAGE2" exit 0;; m) M=1;; o) O=1;; U) U=1;; l) L=1;; S) if [ -d "$OPTARG" -a -w "$OPTARG" -a -x "$OPTARG" ];then SAVE="$OPTARG" else echo -en "\\033[0;31m" echo -e echo "指定目录:${OPTARG} 权限不正确或者该目录不存在" echo -en "\\033[0;39m" exit 1; fi ;; b)echo "${OPTARG}"|grep -qE '^[0-9]*\.?[0-9]*$' && B="${OPTARG}" || B=1 ;; e)echo "${OPTARG}"|grep -qE '^[0-9]*\.?[0-9]*$' && E="${OPTARG}" || E=0 ;; g)echo "${OPTARG}"|grep -qE '^[0-9]*\.?[0-9]*$' && G="${OPTARG}" || G=0 ;; u) rm -rf "${HOME}"/.Getmp3/tmp_mp3* echo -en "\\033[0;36m" echo "开始下载数据" while [ ! -f "${TEMP1}_top100" ] do $LYNX -source ${SOURCE1} >"${TEMP1}_top100" done while [ ! -f "${TEMP1}_top500" ] do $LYNX -source ${SOURCE2} >"${TEMP1}_top500" done cat "${TEMP1}_top500" |grep --after-context=1 "<tr bgcolor=\"#FFFFFF\"><td width=\"20%\"><font color=\"#3333CC\">1." |\ sed -e 's/<\/a>/\n/g' -e 's/<\/td>//g' -e 's/<\/tr><tr>//g' -e 's/<\/tr><tr bgcolor=\"#FFFFFF\">//g'\ -e 's/<td width=\"20%\"><font color=\"#3333CC\">[0-9]*\.<\/font><a href=\"/http:\/\/list.mp3.baidu.com\/topso\//g'\ -e 's/\" target=_blank>/ /g' -e '/^$/d'|sed -e '/<td/d' >"${TEMP2}_top500" while [ ${GET_NUM} -gt 0 ] do cat "${TEMP1}_top100" |grep --after-context=1 "<div align=\"center\"><font color=\"#3333CC\">${NUM}.</font>" | \ grep --after-context=1 "a href" |sed 's/^$//'| sed -e 's/<[^>][^>]*>//' -e 's/<\/td>//' -e 's/^ *//'| \ sed -e 's/<a href="//g' -e 's/" target="_blank">/ /g' -e 's/<\/a>*/ /g' >> "${TEMP2}_top100" NUM=$((${NUM}+1)) GET_NUM=$((${GET_NUM}-1)) done echo 数据更新完毕 echo -en "\\033[0;39m" exit 0 ;; \?) echo -e "$USAGE" exit 1;; esac done if [ "$#" -eq 0 ] ;then echo -e "${USAGE}" exit 1 fi case "${S}" in top100) SOURCE="${SOURCE1}" : ${SAVE:=${SAVE1}} ;; top500) SOURCE="${SOURCE2}" : ${SAVE:=${SAVE2}} ;; esac if [ -z "$SOURCE" ] ;then echo -e "${USAGE}" exit 1 fi TEMP1=${TEMP1}_${S} TEMP2=${TEMP2}_${S} TEMP3=${TEMP3}_${S} if [ ! -d "${SAVE}" ];then echo -en "\\033[0;36m" echo "创建目录" echo -en "\\033[0;39m" mkdir -p ${SAVE} fi clear echo -e echo -en "\\033[0;36m" echo "正在下载/分析数据" echo -en "\\033[0;39m" #rm -rf ${TEMP1} while [ ! -f ${TEMP1} ] do ${LYNX} -source ${SOURCE} >${TEMP1} done #rm -rf ${TEMP2} if [ "${S}" = "top500" ]; then while [ ! -f "${TEMP2}" ] do cat ${TEMP1} |grep --after-context=1 "<tr bgcolor=\"#FFFFFF\"><td width=\"20%\"><font color=\"#3333CC\">1." |\ sed -e 's/<\/a>/\n/g' -e 's/<\/td>//g' -e 's/<\/tr><tr>//g' -e 's/<\/tr><tr bgcolor=\"#FFFFFF\">//g'\ -e 's/<td width=\"20%\"><font color=\"#3333CC\">[0-9]*\.<\/font><a href=\"/http:\/\/list.mp3.baidu.com\/topso\//g'\ -e 's/\" target=_blank>/ /g' -e '/^$/d'|sed -e '/<td/d' >${TEMP2} done elif [ "${S}" = "top100" ]; then while [ ! -f "${TEMP2}" ] do while [ ${GET_NUM} -gt 0 ] do cat ${TEMP1} |grep --after-context=1 "<div align=\"center\"><font color=\"#3333CC\">${NUM}.</font>" | \ grep --after-context=1 "a href" |sed 's/^$//'| sed -e 's/<[^>][^>]*>//' -e 's/<\/td>//' -e 's/^ *//'| \ sed -e 's/<a href="//g' -e 's/" target="_blank">/ /g' -e 's/<\/a>*/ /g' >> ${TEMP2} NUM=$((${NUM}+1)) GET_NUM=$((${GET_NUM}-1)) done done fi unset NUM : ${NUM:=${B}} if [ "${G}" -gt 0 ];then NUM="${G}" E="${G}" fi while [ -n "`cat ${TEMP2} |sed -n "${NUM}p"`" ] do if [ "${E}" -gt 0 -a "${NUM}" -gt "${E}" ] ;then if [ "${L}" -eq 1 -o -n "${SEARCH}" ];then echo -e "${LIST}" |less fi exit 0 fi PRE=`cat ${TEMP2} |sed -n "${NUM}p"` PRE=(`echo $PRE`) if [ -n "${PRE[0]}" -a -n "${PRE[1]}" ];then if [ -n "${PRE[3]}" ] ;then MP3=${PRE[3]}-${PRE[1]} else MP3=${PRE[1]} fi MP3=`echo ${MP3} |sed 's/\//_/g'` if [ "${L}" -eq 1 -o -n "${SEARCH}" ];then if [ -n "${SEARCH}" ];then SEARCH2=` echo "${NUM} .${MP3}" |grep "${SEARCH}"` if [ -n "${SEARCH2}" ];then LIST="${LIST}\n ${SEARCH2}" fi unset SEARCH2 NUM=$((${NUM}+1)) continue fi LIST="${LIST}\n ${NUM}. ${MP3}" NUM=$((${NUM}+1)) continue fi echo -en "\\033[0;36m" echo "正在处理数据 ${NUM}. ${MP3}" echo -en "\\033[0;39m" if [ "${U}" -eq 1 ];then rm -rf "${TEMP3}_${NUM}" fi while [ ! -f "${TEMP3}_${NUM}" -o ! -s "${TEMP3}_${NUM}" ] do ${LYNX} -source "${PRE[0]}" > "${TEMP3}_${NUM}" cat "${TEMP3}_${NUM}" |grep --before-context=0 --after-context=1 "<td class=r1>" | \ sed -e '/<\/script>*/d' -e '/--/d'| \ sed -e 's/<font[^>][^>].*//g' -e 's/" target=.*//g' -e 's/^.*<a href="//g' >"${TEMP3}_${NUM}" done NUM2=1 echo -en "\\033[0;34m" echo "该文件目前有`cat "${TEMP3}_${NUM}" |wc -l`个下载镜像" echo -en "\\033[0;39m" #交互式下载 if [ "${M}" -eq 1 ];then NUM3=1 SELECT="" while [ -n "`cat "${TEMP3}_${NUM}" |sed -n "${NUM3}p"`" ] do SELECT=${SELECT}"`cat "${TEMP3}_${NUM}" |sed -n "${NUM3}p"` " NUM3=$((${NUM3}+1)) done echo -en "\\033[0;33m" echo "请选择下载镜像" echo -en "\\033[0;39m" select COMPONENT in $SELECT do if [ -z "${COMPONENT}" ];then echo "该镜像地址不存在" echo -en "\\033[0;33m" echo "请选择下载镜像 按回车继续" echo -en "\\033[0;39m" continue else echo -en "\\033[0;36m" echo "开始从镜像站点${REPLY}下载载歌曲 ${NUM}. ${MP3}" echo -en "\\033[0;33m" echo "文件保存在${SAVE}" echo -en "\\033[0;39m" TYPE=`basename ${COMPONENT} |awk -F. '{print $2}'` if [ "${O}" -eq 1 ];then rm -rf "${SAVE}/${MP3}.${TYPE}" fi fi if [ -f "${SAVE}/${MP3}.${TYPE}" ];then echo -en "\\033[0;31m" echo "文件已存在,下载中止" echo -e echo -en "\\033[0;39m" unset TYPE break fi ${WGET} -t 1 -N -O ${SAVE}/${MP3}.${TYPE} ${COMPONENT} ret=$? if [ $ret -eq 0 ]; then unset TYPE break else rm -rf ${SAVE}/${MP3}.${TYPE} echo -en "\\033[0;31m" echo "下载失败!" echo -e echo -en "\\033[0;39m" echo -en "\\033[0;33m" echo "请选择下载镜像 按回车继续" echo -en "\\033[0;39m" unset TYPE continue fi done else while [ -n "`cat "${TEMP3}_${NUM}" |sed -n "${NUM2}p"`" ] do URL=`cat "${TEMP3}_${NUM}"|sed -n "${NUM2}p"` TYPE=`basename ${URL} |awk -F. '{print $2}'` echo -en "\\033[0;36m" echo "开始下载歌曲 ${NUM}. ${MP3}" echo -en "\\033[0;33m" echo "文件保存在${SAVE}" echo -en "\\033[0;39m" if [ "${O}" -eq 1 ];then rm -rf "${SAVE}/${MP3}.${TYPE}" fi if [ -f "${SAVE}/${MP3}.${TYPE}" ];then echo -en "\\033[0;31m" echo "文件已存在,下载中止" echo -e echo -en "\\033[0;39m" unset URL TYPE break fi ${WGET} -t 1 -N -O ${SAVE}/${MP3}.${TYPE} ${URL} ret=$? if [ $ret -eq 0 ]; then unset URL TYPE break else rm -rf ${SAVE}/${MP3}.${TYPE} echo -en "\\033[0;31m" echo "下载失败!" echo -e echo -en "\\033[0;39m" unset URL TYPE fi NUM2=$((${NUM2}+1)) done fi fi NUM=$((${NUM}+1)) unset PRE MP3 done if [ "${L}" -eq 1 -o -n "${SEARCH}" ];then echo -e "${LIST}" |less fi

此帖于 05-07-16 04:16 被 mars_diy 编辑.
  mars_diy 当前离线   回复时引用此帖
旧 05-07-16, 21:19 第 112 帖
mars_diy
 
mars_diy 的头像
 
 
注册会员  
  注册日期: Aug 2002
  帖子: 460
  精华: 5
 

标题: 最新更新


PHP 代码:
#!/bin/bash
#################################################################
#                                #
#        百度MP3歌曲下载工具                #
#    Reort bugs to  Martian < [email]Martian2008@gmail.com[/email] >    #
#        Last Update   2005/07/17            #
#                                #
#################################################################                                                             

USAGE="`basename $0`:未指定参数
用法: `basename $0` [选项]\n
请尝试使用“`basename $0` -h”查看更多的选项。"
USAGE2="
GetMP3 <martian2008@gmail.com>百度MP3歌曲下载工具

用法: `basename $0` [选项]\n
选项
   -a      top100|top500|search        选择下载mp3的分类    
   -b      1-max                下载开始曲目数(default 1)
   -e      1-max                下载结束曲目数(default max)
   -g      number            下载指定曲目(id编号)
   -m                    交互式选择下载镜像点
   -o                    覆盖已下载文件
   -u                    更新 top100/top500 数据
   -U                    更新下载镜像
   -c                    清空 search 历史数据
   -l                    打印音乐数据列表
   -s      [strings]            查找歌曲
   -S      [PATH]            自定义文件保存目录
   -p      number            搜索文件深度 1*30
   -f                    自定义文件名,只在交互模式下起作用
   -t     type                指定下载文件类型:mp3 wma swf asf    
"
M=0
O
=0
B
=1
E
=0
L
=0
G
=0
U
=0
F
=0
SEARCH
=""
WORD=""
TYP=""
LYNX="/usr/bin/lynx"
WGET="/usr/bin/wget"
GET_NUM=102
NUM
=1
PAGE
=2
SOURCE1
="http://list.mp3.baidu.com/list/newhits.html"
SOURCE2="http://list.mp3.baidu.com/topso/mp3topsong.html"
SOURCE3="http://mp3.baidu.com/m?f=ms&rn=&tn=baidump3&ct=134217728&word=WORD&submit=%B0%D9%B6%C8%CB%D1%CB%F7&lm=-1"
TEMP1="${HOME}/.Getmp3/tmp_mp3_list"
TEMP2="${HOME}/.Getmp3/tmp_mp3_list2"
TEMP3="${HOME}/.Getmp3/tmp_mp3_down"
TEMP4="${HOME}/.Getmp3/tmp_mp3_search"
SAVE1="${HOME}/mp3_new100"
SAVE2="${HOME}/mp3_top500"
SAVE3="${HOME}/mp3_search"
export LESSCHARSET=latin1
export LC_ALL
=zh_CN.gbk
export LANG
=zh_CN.gbk
if [ ! -"${HOME}/.Getmp3" ];then
    mkdir 
-"${HOME}/.Getmp3"
fi

while getopts a:hmuUob:e:lg:s:S:p:ft:c  OPTION;
do
    case 
"$OPTION" in
        a
S="$OPTARG" ;;
        
sSEARCH="$OPTARG" ;;
        
h) echo -"$USAGE2" 
           
exit 0;;
        
mM=1;;
             
oO=1;;
             
UU=1;;
             
lL=1;;
             
tTYP="`echo $OPTARG|tr [:upper:] [:lower:]`"
        
;;
             
fF=1;;
        
S) if [ -"$OPTARG" --"$OPTARG" --"$OPTARG" ];then
                   SAVE
="$OPTARG"
           
else 
                echo -
en "\\033[0;31m"
             
echo -e
             
echo "指定目录:${OPTARG} 权限不正确或者该目录不存在"
                  
echo -en "\\033[0;39m"
             
exit 1;
           
fi        
        
        
;;
        
b)echo "${OPTARG}"|grep -qE '^[0-9]*?[0-9]*$' && B="${OPTARG}" || B=
        
;; 
        
e)echo "${OPTARG}"|grep -qE '^[0-9]*?[0-9]*$' && E="${OPTARG}" || E=
        
;; 
        
g)echo "${OPTARG}"|grep -qE '^[1-9]*?[0-9]*$' && G="${OPTARG}" || G=
        
;;
        
p)echo "${OPTARG}"|grep -qE '^[0-9]*?[0-9]*$' && PAGE="${OPTARG}" || PAGE=
        
;;
        
crm -rf  "${TEMP4}"*
           echo -
en "\\033[0;36m"
           
echo  "Search 数据清除完成"  
           
echo -en "\\033[0;39m"
           
exit 0
        
;;
        
urm -rf  "${TEMP1}"*
           
rm -rf "${TEMP2}"*
           
rm -rf "${TEMP3}"*
           echo -
en "\\033[0;36m"
           
echo "开始下载数据"
           
while [ ! -"${TEMP1}_top100" ]
           do
               
$LYNX -source ${SOURCE1} >"${TEMP1}_top100"
           
done
           
           
while [ ! -"${TEMP1}_top500" ]
           do
           
$LYNX -source ${SOURCE2} >"${TEMP1}_top500"
              
done
cat 
"${TEMP1}_top500" |grep --after-context="<tr bgcolor=\"#FFFFFF\"><td width=\"20%\"><font color=\"#3333CC\">1." |
 
sed -'s/<\/a>/\n/g' -'s/<\/td>//g' -'s/<\/tr><tr>//g' -'s/<\/tr><tr bgcolor=\"#FFFFFF\">//g'
     
-'s/<td width=\"20%\"><font color=\"#3333CC\">[0-9]*\.<\/font><a href=\"/http:\/\/list.mp3.baidu.com\/topso\//g'
     
-'s/\" target=_blank>/ /g' -e  '/^$/d'|sed  -'/<td/d'  >"${TEMP2}_top500"
     
    
while [ ${GET_NUM} -gt  0 
    do
    
cat  "${TEMP1}_top100" |grep --after-context="<div align=\"center\"><font color=\"#3333CC\">${NUM}.</font>" 
    
grep --after-context="a href" |sed 's/^$//'sed  -'s/<[^>][^>]*>//' -'s/<\/td>//' -'s/^ *//'
    
sed -'s/<a href="//g' -e  's/" target="_blank">/ /g'  -'s/<\/a>*/ /g'   >> "${TEMP2}_top100"

    
NUM=$((${NUM}+1))
    
GET_NUM=$((${GET_NUM}-1))
    
done
           
echo 数据更新完毕
           
echo -en "\\033[0;39m"
           
exit 
           
;;
           ?) echo -
"$USAGE"
             
exit 1;;
    
esac
done

if [ "$#" -eq 0 ] ;then
    
echo -"${USAGE}"
    
exit 1
fi
case "${S}" in
    top100
SOURCE="${SOURCE1}" 
        
: ${SAVE:=${SAVE1}}
        ;;
    
top500SOURCE="${SOURCE2}" 
        
: ${SAVE:=${SAVE2}}
        ;;

    
searchSOURCE="${SOURCE3}" 
        
: ${SAVE:=${SAVE3}}
        if [ ! -
"${SEARCH}" ];then
            
echo "-a search 参数必须附带 -s 选项"
            
echo -e
            
exit 1    
        
else
            
WORD="`echo "${SEARCH}" | tr -d "n" | xxd -i | sed -e "s0x/%/g" | tr -d " ,n"`"
            
B=1
        fi
        
;;
esac
if [ -"$SOURCE"  ] ;then
        
echo -"${USAGE}"
        
exit 1
fi
TEMP1
=${TEMP1}_${S}
TEMP2=${TEMP2}_${S}
TEMP3=${TEMP3}_${S}
TEMP4=${TEMP4}_${WORD}
if [ ! -
"${SAVE}" ];then
    
echo -en "\\033[0;36m"
    
echo "创建目录"
    
echo -en "\\033[0;39m"
    
mkdir -${SAVE}
fi
#clear
echo -e
echo -en "\\033[0;36m"
echo "正在下载/分析数据"
echo -en "\\033[0;39m"
#rm -rf ${TEMP1}
if [ "${S}" != "search" ];then
while [ ! -${TEMP1} ]
do
${
LYNX} -source ${SOURCE} >${TEMP1}
done
else touch ${TEMP2}
    echo 
"test" >${TEMP2}
fi
#rm -rf ${TEMP2}

if [ "${S}" "top500" ]; then
while [ ! -"${TEMP2}" ]
do
cat ${TEMP1} |grep --after-context="<tr bgcolor=\"#FFFFFF\"><td width=\"20%\"><font color=\"#3333CC\">1." |
 
sed -'s/<\/a>/\n/g' -'s/<\/td>//g' -'s/<\/tr><tr>//g' -'s/<\/tr><tr bgcolor=\"#FFFFFF\">//g'
     
-'s/<td width=\"20%\"><font color=\"#3333CC\">[0-9]*\.<\/font><a href=\"/http:\/\/list.mp3.baidu.com\/topso\//g'
     
-'s/\" target=_blank>/ /g' -e  '/^$/d'|sed  -'/<td/d'  >${TEMP2
done
elif   
"${S}" "top100" ]; then
      
while [ ! -"${TEMP2}" ]
    do
    while [ ${
GET_NUM} -gt  0 
    do
    
cat  ${TEMP1} |grep --after-context="<div align=\"center\"><font color=\"#3333CC\">${NUM}.</font>" 
    
grep --after-context="a href" |sed 's/^$//'sed  -'s/<[^>][^>]*>//' -'s/<\/td>//' -'s/^ *//'
    
sed -'s/<a href="//g' -e  's/" target="_blank">/ /g'  -'s/<\/a>*/ /g'   >> ${TEMP2}

    
NUM=$((${NUM}+1))
    
GET_NUM=$((${GET_NUM}-1))
    
done
     done
fi
unset NUM
: ${NUM:=${B}}
if [ 
"${G}"  -gt 0  ] && [  "${S}" != "search" ];then
    NUM
="${G}"
    
E="${G}"
fi    

while [ -"`cat ${TEMP2} |sed  -n "${NUM}p"`" ]  
do
    if [ 
"${E}" -gt 0  -"${NUM}" -gt "${E}" ] ;then
        
if [ "${L}" -eq 1 -o  -"${SEARCH}"  ]  && [ "${S}" !="search" ] ;then
            
echo -"${LIST}" |less  
        fi    
        
exit 0
    fi
    PRE
=`cat ${TEMP2} |sed  -n "${NUM}p"`
    
PRE=(`echo $PRE`)
    if [ 
"${S}" "search" ];then
        SOURCE
="`echo ${SOURCE}|sed -e "s/WORD/${WORD}/g"`"
        
PRE=(`echo "${SOURCE}" "${SEARCH}"`)
        
TEMP3="${TEMP4}"
    
fi
  
if [ -"${PRE[0]}" -a  -"${PRE[1]}" ];then
        
if [ -"${PRE[3]}" ] ;then
            MP3
=${PRE[3]}-${PRE[1]}
        else
            
MP3=${PRE[1]}
        
fi
    MP3
=`echo ${MP3} |sed  's/\//_/g'`        
    if [ 
"${L}" -eq 1 -o  -"${SEARCH}"  ] && [ "${S}" != "search" ];then
        
if [ -"${SEARCH}" ];then
            SEARCH2
=` echo  "${NUM}.    ${MP3}" |grep "${SEARCH}"`
            if [ -
"${SEARCH2}" ];then
                
LIST="${LIST}\n ${SEARCH2}"
            
fi
            
unset SEARCH2
            NUM
=$((${NUM}+1))
            continue
        
fi
        
LIST="${LIST}\n ${NUM}. ${MP3}"
        
NUM=$((${NUM}+1))
        continue
    
fi
    
if [  "${S}" "search" ];then
    
echo -en "\\033[0;36m"
    
echo "正在搜索数据: ${SEARCH}"
    
else    
    echo -
en "\\033[0;36m"
    
echo "正在处理数据 ${NUM}. ${MP3}"
    
fi
    
    
if [ "${U}" -eq 1 ];then
        rm 
-rf  "${TEMP3}_${NUM}"
    
fi
    
while [ ! -"${TEMP3}_${NUM}" -! -"${TEMP3}_${NUM}" ]
    do
    ${
LYNX} -source "${PRE[0]}" "${TEMP3}_${NUM}"
    
PAGE_NUM=`cat ${TEMP3}_${NUM} | grep --after-context=1 "<ol><font class=p1>" | sed -e '/<br><br><font class=f9>/d' -e 's/<ol><font class=p1>//g' -e 's/<\/a>/\n/g' -e 's/<\/font>//g'|sed -e '/\[下一页\]/d'|wc -l`
    : ${
PAGE_NUM:=1}
    
NEXTURL=`cat  ${TEMP3}_${NUM} |grep --after-context=1 "<ol><font class=p1>" | sed -e '/<br><br><font class=f9>/d' -e 's/<ol><font class=p1>//g' -e 's/<\/a>/\n/g' -e 's/<\/font>//g' |grep "[下一页]" |sed -e 's/&nbsp\;<a href=//g' -e 's/>\[下一页\]//'`
    echo -
en "\\033[0;34m"
    
if [ "${PAGE_NUM}" -eq 0 ];then
        
echo "没有找到数据"
        
rm -rf "${TEMP3}_${NUM}"
        
exit 0
    fi
    
echo "正在处理第1页数据,统计大约有${PAGE_NUM}页,本次最大处理数${PAGE}页"
    
cat "${TEMP3}_${NUM}" |grep --before-context=0  --after-context="<td class=r1>" 
        
sed -'/<\/script>*/d' -'/--/d'|sed -'s/\" target=_blank><font style=color:#e10900>/ /g' -'s/<\/font><\/td>//g' -'s/<\/a><br><font color=\"#999999\" class=f10>//g' -'s/<font style=color:#e10900>[^>][^>]*<[^<]*//g' -'s/<a href=\"//g' -'s/ - / /g' -'s/" target=_blank>/ /g' -'s/<\/font>//g' "${TEMP3}_${NUM}"
    
    
#sed -e '/<\/script>*/d' -e '/--/d'| \
           #sed -e 's/<font[^>][^>].*//g' -e 's/" target=.*//g' -e 's/^.*<a href="//g' >"${TEMP3}_${NUM}"
    
NUM4=2
    
    
while [ "${PAGE}" -ge "${NUM4}"  -a  "${PAGE_NUM}" -gt 1 --"${NEXTURL}" ]
    do
        ${
LYNX} -source "${NEXTURL}" >"${TEMP3}_${NUM}_c"
            
ret=$?
            if [ 
$ret -ne 0 ]; then
            
echo -en "\\033[0;31m"
            
echo "无法获取数据,搜索中止!"
            
echo -en "\\033[0;31m"
            
break
        
fi    
           PAGE_NUM
=`cat "${TEMP3}_${NUM}_c" | grep --after-context=1 "<ol><font class=p1>" | sed -e '/<br><br><font class=f9>/d' -e 's/<ol><font class=p1>//g' -e 's/<\/a>/\n/g' -e 's/<\/font>//g'|sed -e '/\[上一页\]/d'|sed -e '/\[下一页\]/d'|wc -l`
           : ${
PAGE_NUM:=1}
           
NEXTURL=`cat  "${TEMP3}_${NUM}_c" |grep --after-context=1 "<ol><font class=p1>" | sed -e '/<br><br><font class=f9>/d' -e 's/<ol><font class=p1>//g' -e 's/<\/a>/\n/g' -e 's/<\/font>//g'|sed -e '/\[上一页\]/d' |grep "[下一页]" |sed -e 's/&nbsp\;<a href=//g' -e 's/>\[下一页\]//'`
    echo 
"正在处理第${NUM4}页数据,统计大约有${PAGE_NUM}页,本次最大处理数${PAGE}页"
    
cat "${TEMP3}_${NUM}_c" |grep --before-context=0  --after-context="<td class=r1>" 
        
sed -'/<\/script>*/d' -'/--/d'|sed -'s/\" target=_blank><font style=color:#e10900>/ /g' -'s/<\/font><\/td>//g' -'s/<\/a><br><font color=\"#999999\" class=f10>//g' -'s/<font style=color:#e10900>[^>][^>]*<[^<]*//g' -'s/<a href=\"//g' -'s/ - / /g' -'s/" target=_blank>/ /g' -'s/<\/font>//g' >> "${TEMP3}_${NUM}"    
    
#sed -e '/<\/script>*/d' -e '/--/d'| \
           #sed -e 's/<font[^>][^>].*//g' -e 's/" target=.*//g' -e 's/^.*<a href="//g' >>"${TEMP3}_${NUM}"
    
rm -rf "${TEMP3}_${NUM}_c"
    
NUM4=$((${NUM4}+1))
    
done    
    
    
echo -en "\\033[0;39m"
    
    
echo -en "\\033[0;34m"
    
echo "总共搜索到`cat "${TEMP3}"_"${NUM}" |wc -l` 个下载文件"
    
done

    
if [ -"${TYP}" ]; then
    
echo "正在搜索指定类型数据"
    
echo -en "\\033[0;39m"
    
while [ ! -"${TEMP3}_${NUM}_${TYP}_${NUM}" -! -"${TEMP3}_${NUM}_${TYP}_${NUM}" ]
    do
        
NUM7=1
        
while [ -"`cat "${TEMP3}_${NUM}" | sed -n "${NUM7}p"`" 
        do   
          
TYP2="`cat "${TEMP3}_${NUM}" | sed -n "${NUM7}p" | cut -d\  -f 1`"
          
TYP2="`basename "${TYP2}" |awk -F. '{print $2}'| tr [:upper:] [:lower:]`"
          
if [ "${TYP}" "${TYP2}" ];then
            cat 
"${TEMP3}_${NUM}" sed -"${NUM7}p" >> "${TEMP3}_${NUM}_${TYP}_${NUM}"
              
fi
          
unset TYP2
        NUM7
=$((${NUM7}+1))    
        
done            
        
break
    
done
        
if [ ! -"${TEMP3}_${NUM}_${TYP}_${NUM}" -! -"${TEMP3}_${NUM}_${TYP}_${NUM}" ];then
            
echo "在指定类型中没有找到任何数据,使用全部已知类型."
        
else  
            echo 
"在指定类型中总共搜索到`cat "${TEMP3}_${NUM}_${TYP}_${NUM}" |wc -l`个下载文件"
            
TEMP3="${TEMP3}_${NUM}_${TYP}"
        
fi
    fi
    
    
#交互式下载
    
if [ "${M}" -eq 1 ];then
        NUM3
=1
        SELECT
=""
        
NUM5=1
        
while [ -"`cat "${TEMP3}_${NUM}" |sed  -n "${NUM3}p"`" -"${NUM5}" -le 20 ]
        do
            unset 
P2
                P
=(`cat "${TEMP3}_${NUM}" |sed  -n "${NUM3}p"`)
                
NUM6=1
                
while [ -"${P[$NUM6]}" ]
                do
                    
P2="${P2}|${P[$NUM6]}"
                    
NUM6=$((${NUM6}+1))
                
done
                SELECT
="${SELECT} ${P[0]}|${P2}"
                
NUM3=$((${NUM3}+1))
                
NUM5=$((${NUM5}+1))
        if [ 
"${NUM5}" -le 20 -a  -"`cat "${TEMP3}_${NUM}" |sed  -n "${NUM3}p"`" ];then
            
continue
        
fi
        
if [  "${NUM3}" -gt 21 ];then
            
if [ "${NUM3}" -lt 30 ];then
                T_NUM3
=1
            
else
                
T_NUM3=$((${NUM3}-20-${NUM5}+1))
            
fi
            SELECT
="${SELECT} 上一页|${T_NUM3}"
        
fi
            
        
if [ "`cat "${TEMP3}_${NUM}" |wc -l`" -gt "${NUM3}" ];then
            SELECT
="${SELECT} 下一页|${NUM3}"
        
fi
        clear
        
echo -en "\\033[0;34m"
        
echo "总共搜索到`cat "${TEMP3}"_"${NUM}" |wc -l` 个下载文件"
        
echo -en "\\033[0;33m"
        
echo "歌曲: ${MP3}"
        
echo "请选择下载镜像"
        
echo -en "\\033[0;39m"
        
select COMPONENT in $SELECT
        
do
            if [ -
"${COMPONENT}" ];then
                   
echo "该镜像地址不存在"    
                   
echo -en "\\033[0;33m"
                   
echo "请选择下载镜像 按回车继续"
                           
echo -en "\\033[0;39m"
                   
continue
               else
                
DOWN=`echo "${COMPONENT}" | cut -d\| -f 1 `
                
TYPE=`basename "${DOWN}" |awk -F. '{print $2}'`
                if [ -
"`echo "${COMPONENT}" | cut -d\| -f 4 |sed -e 's/\r//g' `" ];then 
                ATTR
="(`echo "${COMPONENT}" | cut -d\| -f 4 |sed -e 's/\r//g' `)"
                
else
                
ATTR=""
                
fi
                
                
if [ "${DOWN}" "下一页" -"${DOWN}" "上一页" ];then
                    NUM3
=`echo "${COMPONENT}" | cut -d\| -f 2 `
                    
NUM5=1
                    
unset SELECT
                           
echo -en "\\033[0;33m"
                           
echo "正在跳转到${DOWN}"
                                   
echo -en "\\033[0;39m"
                    
break
                
fi    
         
if [ "${F}" -eq 1 ];then
            
echo -en "\\033[0;33m"
        
while :
        do
         echo 
"请输入保存的文件名,不需要加扩展名"
         
read CMD
          
if [ -"${CMD}" ];then
            
echo ${CMD} |grep -qE '^[^\/\~\^\&\*\@\#\$\%\|\!\?\`\.]*$' &&  break ||echo 文件名错误 && continue  
          
fi    
        done        
            
echo -en "\\033[0;33m"
          
fi
                
echo -en "\\033[0;36m"
                
echo "开始从镜像站点${REPLY}下载载歌曲 ${NUM}.  ${MP3}"
                
echo -en "\\033[0;33m"
                
MP3=${CMD:=${MP3}}
                echo 
"文件保存在${SAVE}"
                
echo -en "\\033[0;39m"
                
if [ "${O}" -eq 1 ];then
                      rm 
-rf "${SAVE}/${MP3}${ATTR}.${TYPE}"
                      
fi                                           
            fi
                                                   
                
if [ -"${SAVE}/${MP3}${ATTR}.${TYPE}" ];then
                    
echo -en "\\033[0;31m"
                    
echo "文件: ${SAVE}/${MP3}${ATTR}.${TYPE} 已存在,下载中止"
                    
echo -e
                    
echo -en "\\033[0;39m"
                    
unset  TYPE DOWN
                    
break
                
fi

                
echo $ATTR
                
${WGET} -t 1 -N  -"${SAVE}/${MP3}${ATTR}.${TYPE}"  ${DOWN}    
                    
ret=$?
                    if [ 
$ret -eq 0 ]; then
                    
if [ "`file -b "$SAVE/${MP3}${ATTR}.${TYPE}"`" "empty" ] || 
                       [  
"`file -b "$SAVE/${MP3}${ATTR}.${TYPE}"`" "HTML document text" ];then
                    rm 
-rf ${SAVE}/${MP3}${ATTR}.${TYPE}
                    echo -
en "\\033[0;31m"
                    
echo "下载失败!"
                    
echo -e
                    
echo -en "\\033[0;39m"
                           
echo -en "\\033[0;33m"
                           
echo "请选择下载镜像 按回车继续"
                                   
echo -en "\\033[0;39m"
                    
unset TYPE DOWN
                    
continue
                    
fi
                    
break
                else
                    
rm -rf ${SAVE}/${MP3}${ATTR}.${TYPE}
                    echo -
en "\\033[0;31m"
                    
echo "下载失败!"
                    
echo -e
                    
echo -en "\\033[0;39m"
                           
echo -en "\\033[0;33m"
                           
echo "请选择下载镜像 按回车继续"
                                   
echo -en "\\033[0;39m"
                    
unset TYPE DOWN
                    
continue
                
fi
               
        done
    done
    
else               
    
NUM2=1    
    
while [ -"`cat "${TEMP3}_${NUM}" |sed  -n "${NUM2}p"`" ]
    do            
        
URL=`cat "${TEMP3}_${NUM}"|sed  -n "${NUM2}p"| cut -d\  -f 1`
        
TYPE=`basename "${URL}" |awk -F. '{print $2}'`
        echo -
en "\\033[0;34m"
        
echo "总共搜索到`cat "${TEMP3}"_"${NUM}" |wc -l` 个下载文件"
        
echo -en "\\033[0;36m"
        
echo "开始下载歌曲 ${NUM}.  ${MP3}"    
        
echo -en "\\033[0;33m"
        
echo "文件保存在: ${SAVE}"
        
echo -en "\\033[0;39m"
        
if [ "${O}" -eq 1 ];then
            rm 
-rf "${SAVE}/${MP3}.${TYPE}"
        
fi
        
if [ -"${SAVE}/${MP3}.${TYPE}" ];then
            
echo -en "\\033[0;31m"
            
echo "文件: ${SAVE}/${MP3}.${TYPE} 已存在,下载中止"
            
echo -e
            
echo -en "\\033[0;39m"
            
unset URL TYPE
            
break
        
fi
        
${WGET} -t 1 -N  -${SAVE}/${MP3}.${TYPE} ${URL}    
            
ret=$?
            if [ 
$ret -eq 0 ]; then
            
unset URL TYPE
            
break
        else
            
rm -rf ${SAVE}/${MP3}.${TYPE}
            echo -
en "\\033[0;31m"
            
echo "下载失败!"
            
echo -e
            
echo -en "\\033[0;39m"
            
unset URL TYPE
        fi
         NUM2
=$((${NUM2}+1))
     
done
          fi
                
    fi
    NUM
=$((${NUM}+1))
    unset 
PRE MP3
done    
if [ "${L}" -eq 1 --"${SEARCH}" ] && [ "${S}" != "search" ];then
    
echo -"${LIST}" |less 
fi 

此帖于 05-07-17 13:26 被 mars_diy 编辑.
  mars_diy 当前离线   回复时引用此帖
旧 05-07-23, 10:47 第 113 帖
romantic2008
 
romantic2008 的头像
 
 
注册会员  
  注册日期: Jul 2004
  帖子: 37
  精华: 0
 

好东东啊, 可惜没有时间学习了。







__________________
下辈子努力 ? 思考
自己为什么是一个穷人? ? ?
  romantic2008 当前离线   回复时引用此帖
旧 05-07-23, 13:36 第 114 帖
whlmylove
 
whlmylove 的头像
 
 
注册会员  
  注册日期: May 2004
  帖子: 4
  精华: 0
 

引用:
作者: fanxianbing
请解释一下 ${1##*.} 和 ${TEMP##*.}
字符匹配
#:从左边开始取最小匹配并删除
##:从左边开始取最大匹配并删除
例:
i=/home/abc/def
则:
${i#/}后i的值为:/abc/def
${i##/}后i的值为:def

%和%%同上,只不过是从右边开始匹配
  whlmylove 当前离线   回复时引用此帖
旧 05-08-04, 10:32 第 115 帖
qsblj
 
 
 
注册会员  
  注册日期: Jan 2005
  帖子: 35
  精华: 0
 

标题: 一个关于安全的简单脚本。检查非root,但UID和GID为0的用户。


代码:
#!/bin/bash # #################################################### # Purpose: check ! root # Author: Kook.liu , E-Mail ( qsblj AT yahoo DOT com) # Date: 2005/08/04 #################################################### # #################################################### for id in $(awk -F: '{ if($3 == 0 && $1 != "root") print $1 }' /etc/passwd) do mail -s "Root Access Alert" root@minix.com << EOF ********************************************* *ALERT! Longin ID $(echo ${id}) has uid 0 *$(date "+Dectected on Date:%Y%m%d Time:%r") ********************************************* EOF done

此帖于 05-08-04 10:42 被 qsblj 编辑.
  qsblj 当前离线   回复时引用此帖
旧 05-08-15, 11:26 第 116 帖
foolgenius 帅哥
 
foolgenius 的头像
 
 
注册会员  
  注册日期: Mar 2005
  帖子: 60
  精华: 0
 

标题: 本人写的一个可以从文件中读取特定行的一个脚本,欢迎指教


#!/bin/sh
#set -x
if [ "$#" -lt 1 ];then
echo "Usage $0 [file] "
exit 1
fi
echo "Enter the line you want to choose from:"
read FromLine
echo "Enter the line you want to choose to:"
read ToLine

rm -rf temp.txt
Line=`echo "$ToLine-$FromLine" | bc`

x=0
exec < $i # opens the file you want choose the line from
while read line # read from the file
do
if [ $x -lt $Line ];then
printf "%s\n" "$line" >>temp.txt
x=`expr $x + 1`
else
echo "DONE"
exit 1
fi
done

#set +x







__________________
intel4 2.0G 256M CD-ROM
redhat 9.0 2.4内核
XP
  foolgenius 当前离线   回复时引用此帖
旧 05-08-17, 15:05 第 117 帖
linuxcqq
 
linuxcqq 的头像
 
 
注册会员  
  注册日期: Aug 2005
  帖子: 2
  精华: 0
 

..头看晕 扔筛子来决定看第几页第几个吧~~~!
  linuxcqq 当前离线   回复时引用此帖
旧 05-08-17, 17:08 第 118 帖
yaop
 
yaop 的头像
 
 
注册会员  
  注册日期: Jul 2005
  帖子: 34
  精华: 0
 

标题: 大家来丢硬币阿!!我写的一个丢硬币的脚本


#!/bin/bash


MAXTHROWS=$1
HEADS=0
TAILS=0
throw=0

print_result(){
echo the HEADS = $HEADS
echo the TAILS = $TAILS
echo
}

update_count(){
case $1 in
0)let " HEADS += 1";;
1)let " TAILS += 1" ;;
esac
}

echo

while [ "$throw" -lt "$MAXTHROWS" ]
do
let "coin = $RANDOM % 2 "
update_count $coin
let "throw += 1"
done

print_result
  yaop 当前离线   回复时引用此帖
旧 05-08-31, 09:25 第 119 帖
home_king
 
home_king 的头像
 
 
临时退役版主  
  注册日期: Mar 2003
  帖子: 2,759
  精华: 15
 

将一个大文件分割成N个小文件
命令格式:
./split filename N dest_path
代码:
#!/bin/sh # # home_king@163.com # do_help() { echo "syntax:" echo "split <orig_file> <split_num> <dest_path>" } orig_file=$1 split_num=${2:-2} dest_path=${3:-.} if ! ( [ -f "$orig_file" ] && [ -r "$orig_file" ] && [ -s "$orig_file" ] ); then echo "file $orig_file is invalid." do_help exit 1 fi if ! [ $split_num -gt 1 ]; then echo "split_num is invalid." do_help exit 1 fi if ! ( [ -d $dest_path ] && [ -x $dest_path ] );then echo "dest_path is invalid." do_help exit 1 fi size=$(ls -l $orig_file | awk '{print $5}') split_size_avr=$(($size/$split_num)) bs=1 if [ $size -gt $((1024*1024)) ]; then bs=1024 split_size_avr=$(($split_size_avr/1024)) fi for i in $(seq $split_num);do if [ $i -eq 1 ]; then dd if=$orig_file \ of=$dest_path/${orig_file}.$i bs=$bs count=$split_size_avr elif [ $i -eq $split_num ];then dd if=$orig_file \ of=$dest_path/${orig_file}.$i bs=$bs \ skip=$(($split_size_avr*$(($i-1)))) \ count=$(( $size - $(($split_size_avr*$(($i-1)))) )) else dd if=$orig_file \ of=$dest_path/${orig_file}.$i bs=$bs \ skip=$(($split_size_avr*$(($i-1)))) \ count=$split_size_avr fi done
合并N个小文件为一个大文件:
代码:
cat $(ls |grep -E 'filename\.') > filename







__________________
IBOX, a LiveCD distribution based on Gentoo, is fit for newbie.

IBOX brings to you:
- knoppix-style harddisk installation tool, by which you can install Gentoo in 20 minutes.
- hardware auto-configuration. You can run into X desktop directly.
- all-round software set, including OpenOffice, azureus.
- LiveCD-create-tools. Step-by-step, custom a LiveCD yourself with ease.

Any questions and feedbacks is welcome to home_king at 163 dot com
  home_king 当前离线   回复时引用此帖
旧 05-10-08, 22:22 第 120 帖
wert999
 
 
 
注册会员  
  注册日期: Oct 2005
  帖子: 1
  精华: 0
 

哈哈,我相信我有一天也能掌握的.
  wert999 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 12:06


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org