- 论坛徽章:
- 0
|
本帖最后由 xinyv 于 2011-06-02 11:59 编辑
1.- find ./* -maxdepth 0 -type d
复制代码 2.
- 通过跟踪可以看到 ed 的操作过程是
- write(4, "a\n1\n", 4)
- close(4)
- 通过跟踪可以看到 sed 的操作过程是 rename("./sed6wKWPx", "aa")
复制代码 总结: ed 是直接编辑文件,sed 是生成临时文件,然后改名实现的。
3.
- #!/bin/bash
- echo -e "Content-type: text/html\n"
- if (( $# == 0 ));then
- # main
- cat <<EOF
- <HTML>
- <H1><center>$(date +%F) 简单发送邮件CGI</center></H1>
- <HR>
- <form action="${HTTP_REFERER}?send" method="POST" enctype="multipart/form-data">
- <p align="left">
- 收件人: <input type="text" name="Address" size="60"><br><br>
- 标    题: <input type="text" name="Subject" size="60"><br><br>
- 正    文: <textarea rows="10" name="Info" cols="50"></textarea><br><br>
- 附    件: <input type="file" name="mf" size=51/><br><br>
- <input type=submit value="send"><input type="reset" value="Clear"> </p>
- </form>
- <HR>
- </HTML>
- EOF
- else
- if [[ ${QUERY_STRING} == "send" ]] && [[ ${REQUEST_METHOD} = POST ]];then
- cd /tmp
- cat - >/tmp/$.mf
- typeset -x _F=$(awk '{if($0~/^Content-Disposition.+filename/)print gensub(".+filename=\"(.+)\".*","\\1","g",$0)}' $.mf)
- typeset -x State="${CONTENT_TYPE##*=}"
- if [ ! -z ${_F} ];then
- typeset -x $(awk 'BEGIN{FS="\r\n";RS=ENVIRON["State"]}{if($2~/Address/)print "rcptto=\x22"$4"\x22";
- if($2~/Subject/)print "subject=\x22"$4"\x22"
- if($2~/Info/)print "info=\x22"$4"\x22"
- if($2~/filename/)printf("%s",$5)>ENVIRON["_F"]
- }' $.mf)
- echo "${info}"|mutt -a ${_F} -s "${subject}" ${rcptto}
- else
- echo "${info}"|mutt -s "${subject}" ${rcptto}
- fi
- rm -f $.mf ${_F}
- fi
- cat <<EOF
- <HTML>
- <H1><center>$(date +%F) 简单发送邮件CGI</center></H1>
- <HR>
- <H2><center>邮件已经发送,请查收.</center></H2>
- <head>
- <title>Redirect</title>
- <meta http-equiv="refresh" content="2;url=${HTTP_REFERER}">
- </head>
- <HR>
- </html>
- EOF
- fi
复制代码 4.
- awk -F '' 可以使用 NULL 为分隔符。
- awk -F'' 不能使用 NULL 为分隔符。起引号内必须赋值.
复制代码 5.
- 按照脚本 scr.sedcc 修改 text.txt 文件。
复制代码 6.
- 这是 tclsh 帮助里的一段话,看过 tclsh 帮助的童鞋们应该都不陌生。
- 这有三个好处
- 1、bash 可以在路径搜索二进制文件存放位置。
- 2、文件名没有30个字符的限制
- 3、tclsh 可以直接运行脚本把 第二行的 \ 当成转义
复制代码 7.
- 不可以,sed 会把后面紧着的当文件名处理,当然空格例外。
复制代码 8.
- $1=$1 用当前的OFS重构 $0 NF 不改变
- $0=$0 用当前的 FS重构 $1..$N NF 会改变
复制代码 9.有两个版打不开,没权限,所以无法统计那两个版面的版主:[频道交流区、版主会议室]
版主里面有个叫"CU管理员" 的占算一名版主名额。
- #!/bin/bash
- #
- PATH=${PATH}:/sbin:/usr/sbin:/usr/local/bin
- Url="http://bbs.chinaunix.net"
- N=0
- curl --connect-timeout 10 -m 60 --retry 5 -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" ${Url} -o /tmp/tempfile 2>/dev/null
- awk '{if($0~"bold subject"){getline;getline;printf("%s %s\n",gensub("href..(.+)\"","\\1","g",$2),gensub(">|<|/a","","g",$3))}}' /tmp/tempfile >/tmp/tempfile1
- while read Url1 Name;do
- let N++
- printf "%-2s -- %-20s%-20s\n" ${N} ${Name} "[${Url}/${Url1}]" >>/tmp/tempfile3
- curl --connect-timeout 10 -m 60 --retry 5 -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" ${Url}/${Url1} -o /tmp/tempfile2 2>/dev/null
- awk 'BEGIN{FS="[<>]"}{if($1=="版主: ")for(i=3;i<NF;i+=4)print "版主: "$i}' /tmp/tempfile2 >>/tmp/tempfile3
- done</tmp/tempfile1
- awk '{printf("%-15s",($1=="版主:")?"["$2"] ":"\n\n"$0"\n")}' /tmp/tempfile3
- echo '#------------------------------------------------------------------#'
- awk '{if($0~/^版主/){A[$0]++}else{B[$0++]}}END{printf("CU现有版面[%d]\t版主[%d]个\n",length(B),length(A))}' /tmp/tempfile3
- rm -f /tmp/tempfile*
复制代码 10.人机对战那部分真的不好写,这个还算凑合能玩,方向键控制移动光标,空格键下子,落子后请耐心等待电脑落子,电脑落子后才可以继续移动光标。
没加任何禁手和其他的规则,就是看谁先连出五子,有时间在慢慢完善吧,这几天功夫也就写这么个玩意啦。
特别提示: 如果你复制网页上面的脚本不能运行,请用如下方法解决。
1、 复制网页上面的代码,保存成一个文件。 urfile
2、 去掉掉多余的空格。( sed 's/^ //' -i urfile)
3、 编辑脚本第三行 E33 变量 为 ^[[ ,注意这里面的第一个 ^[ 的输入方法是 (按住 ctrl 不放,然后按 v 在按 [ 后放开 ctrl ) 就是 ctrl-v + ctrl-[ |
|