免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zooyo

[游戏娱乐] 2012年ChinaUnix社区Shell编程大赛 [结束评审 公布部分答案](获奖名单已公布-5-24) [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2012-03-10 22:41 |显示全部楼层
本帖最后由 hq8318 于 2012-03-26 04:39 编辑

第一题:awk -F ' ',awk -F '[ ]',awk -F '[ ]+' 三者有区别么?
答:选项-F 后面跟分隔符,'[ ]'可指定多个分隔符,现只有一空格,所以awk -F ' '与awk -F '[ ]'的作用一样:以一个空格为分隔符,最后的awk -F '[ ]+'则有区别,可匹配多个空格。

第二题:awk '/foo1/,/foo2/'
        sed -n '/foo1/,/foo2/p'
        实现的功能一样么?
答:两个语句的功能一样,都是打印foo1至foo2的所有行。[ PS:如果文件的末尾无换行标记,且最后一次匹配不到foo2,则awk的会比sed的多打印一空行(这个已测试证明)]

第三题:如何用最简单的方法列举出 "a b c e f" 和"1 2 3" 的所有组合?
答:echo {a,b,c,e,f}{1,2,3}

第四题:字符串 'aaabcccaaabbbccc',连续的字母作为一个子字符串,从左往右,去重复后,变为 'aaabcccbbb' , awk或sed实现,不使用管道。
答:echo "aaabcccaaabbbccc" | sed ':a;s/\(\(\w\)\2\+\)\(.*\)\1/\1\3/;ta'
通过正则处理,处理上并没使用管道,上面一个管道只是演示方便。正则是 ((\w)\2+)(.*)\1,只取引用1,3,即最后的“\1”丢弃。

第五、六题: $ cat urfile
foo  bar\
abc def

$ xxd urfile
0000000: 666f 6f20 2062 6172 5c0a 6162 6320 6465  foo  bar\.abc de
0000010: 660a                                     f.

$ echo "$(<urfile)"
foo  bar\
abc def

第五题: 既然双引号中的\<newline>是续行符,为什么结果不是"foo  barabc def"?
答:$(<urfile)会命令替换,"\<newline>"是续行符,但在双引号内,会原样输出,检测不到续行符。urfile有两个“0a”--换行符,echo时两次换行。

$ echo $(<urfile)
foo bar\ abc def

第六题:foo也bar之间为什么只有一个空格?
答:命令替换时,没有引号,换行符会丢失,经shell处理,多个空格就成一个空格了。

第七题:$ cat file
1
2
a
b
c
d
c
e
如何取到 a ~ c 之间的所有行:
a
b
c
d
c
答:
#!/bin/bash.exe
# sed -n '/a/=' -->获取行号
#获取第一次‘a'的行号
a=$(sed -n '/a/=' awk.txt | sed -n '1p')
#获取第二次‘c'的行号
c=$(sed -n '/c/=' awk.txt | sed -n '2p')
sed -n "$a,$c p" awk.txt

第八题:$ seq 9
1
2
3
4
5
6
7
8
9
如果得到以下结果:
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
7 8 9
8 9
答:
#!/bin/bash.exe
declare -i i
declare -i j
for i in $(seq
do
        j=$i+2
        for j in $(seq $i $j)
        do
                if (($j == 10))
                then
                        break
                fi               
                echo -n $j
        done
        echo
done

第九题:有一千台机器client0001、client0002、......、client1000需要定期修改oracle这个用户的密码,另外一台机器server0000分别与它们建立了ssh信任关系。请在server0000上用shell脚本生成一个随机字符串,然后批量连接这一千台机器并修改oracle用户的密码,这些client机器统一使用前面生成的字符串作为新密码。密码的复杂度要求是:8位长度,至少1位小写字母,至少1位大写字母,至少1为数字。最后生成一份统计信息,记录哪些机器修改成功,哪些机器修改失败,并记录新的密码。

#!/bin/bash.exe
#假如机器的IP保存在ip.txt
ips=`cat ip.txt`

function pwdgen {
# 1位小写字母
pwd=`< /dev/urandom tr -dc a-z | head -c1`
# 1位大写字母
pwd=$pwd`< /dev/urandom tr -dc A-Z | head -c1`
# 1位数字
pwd=$pwd`< /dev/urandom tr -dc 0-9 | head -c1`
# 5位随机字符串
pwd=$pwd`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c5`
echo pwd
}

# 执行密码修改
for IP in $ips; do
TMP_PWD=`pwdgen`
echo $TMP_PWD > TMP_PWD.txt
ssh $IP passwd root --stdin < TMP_PWD.txt
if [ $? = 0 ] ; then
     echo -e "$(date "+%Y-%m-%d %H:%M:%S"\t${IP}\t${TMP_PWD}\t" >> pwd_$(date +%Y-%m-%d).log
else
     echo -e "$(date "+%Y-%m-%d %H:%M:%S"\t${IP} Password change fails\tplease check!\t" >> fails_$(date +%Y-%m-%d).log
fi
done
rm -f TMP_PWD.txt
echo "ip.txt里机器的密码修改已完成,详细请看pwd_$(date +%Y-%m-%d).log文件."


第十题:Oracle数据库dbFirst里面有一张表employee1,包含两列:id和email。MySQL数据库dbSecond里面有一张表employee2,同样包含两列:id和email。两个数据库的用户名都是myuser,密码都是mypass,两张表的数据量都在一千万行左右。请用shell脚本获取两张表的数据,然后比较出两张表中互不相同的id和email分别输出到文件different_id.txt和different_email.txt。

论坛徽章:
80
15-16赛季CBA联赛之青岛
日期:2018-08-10 16:48:362015年亚洲杯之沙特阿拉伯
日期:2018-08-10 16:49:082015小元宵徽章
日期:2018-08-10 16:49:082015年亚洲杯之巴林
日期:2018-08-10 16:49:082015年亚洲杯之乌兹别克斯坦
日期:2018-08-10 16:49:32羊年新春福章
日期:2018-08-10 16:49:082015亚冠之卡尔希纳萨夫
日期:2018-08-10 16:49:082015亚冠之胡齐斯坦钢铁
日期:2018-08-10 16:49:082015亚冠之萨济拖拉机
日期:2018-08-10 16:49:08摩羯座
日期:2018-08-10 16:49:54卯兔
日期:2018-08-10 16:49:54金牛座
日期:2018-08-10 16:50:35
发表于 2012-03-11 09:39 |显示全部楼层
好活动

论坛徽章:
28
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:37
发表于 2012-03-11 09:42 |显示全部楼层
回复 43# BatcherCU


欢迎参加活动

论坛徽章:
0
发表于 2012-03-11 13:00 |显示全部楼层
公布答案 sir   学习下

论坛徽章:
0
发表于 2012-03-11 21:06 |显示全部楼层
本帖最后由 llbgurs 于 2012-03-12 10:10 编辑

太难了,只能答6题

1. 题目是不是出错了,-F后面不能有空格。  如果-F后面指分隔符的话,三个没有区别。

2. 一样

3.
  1. echo {a,b,c,e,f}{1,2,3}
复制代码
5. 双引号不对 \ 转义

7. 参考论坛的
  1. sed -n '/a/{h;:n;/c/{x;p;n;h;bn;};n;H;bn;}' file
复制代码
8. 想了一会儿
  1. seq 8 | awk '{b=($1+1<=9)?$1+1:" ";c=($1+2<=9)?$1+2:" "; print $1" "b" "c}'
复制代码

论坛徽章:
0
发表于 2012-03-11 23:11 |显示全部楼层
初学者来看看

论坛徽章:
1
双鱼座
日期:2014-07-25 11:32:13
发表于 2012-03-13 12:28 |显示全部楼层
看看

论坛徽章:
92
CU大牛徽章
日期:2013-11-29 22:26:36CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2014-02-21 14:22:02CU大牛徽章
日期:2014-02-21 14:22:07CU大牛徽章
日期:2014-02-21 14:22:09CU大牛徽章
日期:2015-02-28 17:45:342015元宵节徽章
日期:2015-03-06 16:56:38羊年新春福章
日期:2015-02-28 17:42:522015七夕节徽章
日期:2015-09-14 09:24:55CU大牛徽章
日期:2014-02-21 14:22:44CU大牛徽章
日期:2015-02-28 17:48:12CU大牛徽章
日期:2015-02-28 17:47:58
发表于 2012-03-13 15:23 |显示全部楼层
终于糊弄出来了,重在参与,重在参与,没想到都这么多页了,真热闹啊。

第一题:
  1. awk -F ' '
  2. awk -F '[ ]'
  3. awk -F '[ ]+'
  4. 三者有区别么?
复制代码
解:有。

  1. awk -F ' '      # 这句以任意空白符号为隔符,比如 tab 也可以匹配
  2. awk -F '[ ]'    # 这句以固定一个空格为隔符,tab 不可以匹配
  3. awk -F '[ ]+'   # 这句以一个或多个空格为隔符,tab 不可以匹配
复制代码
第二题:

  1. awk '/foo1/,/foo2/'
  2. sed -n '/foo1/,/foo2/p'
  3. 实现的功能一样么?
复制代码
解:一样,都是输出包含模式foo1和foo2之间的所有行

第三题:

  1. 如何用最简单的方法列举出 "a b c e f" 和"1 2 3" 的所有组合?
复制代码
解:这题没看的明白,是分别一个 abcef 这五个字母的组合,和 123 这三个数字的组合;还是 abcef 和 123 这五个字母和三个数字的组合?不过我觉得可能还是 a b c e f 分别取出一个字母和 1 2 3 分别取出一个数字的组合吧?
那就这样研究研究:

  1. [seesea2517@UC]$ echo {a,b,c,e,f}{1,2,3}
  2. a1 a2 a3 b1 b2 b3 c1 c2 c3 d1 d2 d3 e1 e2 e3 f1 f2 f3
复制代码
第四题:

  1. 字符串 'aaabcccaaabbbccc',去重复后,变为 'aaabcccbbb' , awk或sed实现,不使用管道。
复制代码
解:去重复后为啥bbb没去掉……真是头疼的事情。echo 后的 | 不算在限制中吧,不然用文件罗。

  1. [seesea2517@UC]$ echo "aaabcccaaabbbccc" | sed -r ':a; s/(.*)(.)(\2\2)(.*)\2\3(.*)/\1\2\3\4\5/; ta'
  2. aaabcccbbb
复制代码
第五题: 既然双引号中的\<newline>是续行符,为什么结果不是"foo  barabc def"?
解:题目中的\<newline>已经是变量内容中的一个字符了,只是与续行符“长的一样”,并没有续行的功能

第六题:foo也bar之间为什么只有一个空格?
解:没有加引号,则空格做为 echo 的参数分隔,任意个空格都相当于一个空格。输入以“一个空格”为分隔符:
引自 info echo:
'echo' writes each given STRING to standard output, with a space between each and a newline after the last one.

第七题:

  1. $ cat file
  2. 1
  3. 2
  4. a
  5. b
  6. c
  7. d
  8. c
  9. e
  10. 如何取到 a ~ c 之间的所有行:
  11. a
  12. b
  13. c
  14. d
  15. c
复制代码
解:

  1. [seesea2517@UC]$ sed -n 'H;${g;s/\n/,/g;s/^[^a]*a/a/;s/c[^c]*$/c/;s/,/\n/g;p}' file
  2. a
  3. b
  4. c
  5. d
  6. c
复制代码

  1. [seesea2517@UC]$ cat test.awk
  2. /a/ {if(la==0) la=NR}
  3. /c/ {lc=NR}
  4. END{
  5.     i=0
  6.     while (getline ln < FILENAME > 0)
  7.     {
  8.         ++i
  9.         if (i < la || i >lc)
  10.             continue
  11.         print ln
  12.     }
  13. }
  14. [seesea2517@UC]$ awk -f test.awk file
  15. a
  16. 2
  17. a
  18. b
  19. c
  20. d
  21. c
复制代码
第八题:

  1. $ seq 9
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 如果得到以下结果:
  12. 1 2 3
  13. 2 3 4
  14. 3 4 5
  15. 4 5 6
  16. 5 6 7
  17. 6 7 8
  18. 7 8 9
  19. 8 9
复制代码
解:总觉得应该用 xargs,没搞定……
就来一个挫的吧:

  1. seq 8 | awk '{print $1, ($1+1>=10 ? "" : $1+1), ($1+2>=10 ? "" : $1+2)}'
复制代码
第九题:

  1. 有一千台机器client0001、 client0002、......、client1000需要定期修改oracle这个用户的密码,另外一台机器server0000分别与它们建立了 ssh信任关系。请在server0000上用shell脚本生成一个随机字符串,然后批量连接这一千台机器并修改oracle用户的密码,这些 client机器统一使用前面生成的字符串作为新密码。密码的复杂度要求是:8位长度,至少1位小写字母,至少1位大写字母,至少1为数字。最后生成一份统计信息,记录哪些机器修改成功,哪些机器修改失败,并记录新的密码。
复制代码
解:
文件一:change_pwd.sh

  1. #!/bin/bash
  2. # change_pwd.sh
  3. # 批量更改密码
  4. # 创建者:seesea2517
  5. # 2012-03-12

  6. #---------------------------------------------------------------
  7. # 全局配置
  8. LENGTH_PASSWORD=8           # 密码长度
  9. MAX_THREAD=100              # 最大并发数
  10. USER="oracle"               # ssh登录用户及更改密码的目标用户
  11. PORT=22                     # ssh端口
  12. PREFIX="client"             # 目标机器名前缀
  13. FLAG_END="flag_end"         # 结束标志
  14. FILE_RESULT="log.txt"       # 操作结果日志,记录新密码,操作后成功与失败的机器

  15. #---------------------------------------------------------------
  16. # 全局变量
  17. new_password=""             # 随机新密码
  18. fd_control=4                # 并发控制队列描述符
  19. fd_result=5                 # 结果队列描述符

  20. #---------------------------------------------------------------
  21. # 函数定义

  22. # 生成一个随机字母
  23. # 返回:随机字母
  24. # 参数一:大小写标志,取值及意义如下
  25. #     1    - 生成小写
  26. #     2    - 生成大写
  27. #     其它 - 大小写随机
  28. random_char()
  29. {
  30.     local lower_chars="abcdefghijklmnopqrstuvwxyz"
  31.     local upper_chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  32.     local total_chars="$lower_chars$upper_chars"
  33.     local chars
  34.     local len

  35.     case "$1" in
  36.     1) chars=$lower_chars ;;
  37.     2) chars=$upper_chars ;;
  38.     *) chars=$total_chars ;;
  39.     esac

  40.     len=${#chars}

  41.     echo ${chars:$((RANDOM % len)):1}
  42. }

  43. # 生成一个随机数字
  44. # 返回:随机数字
  45. # 参数一:随机数上限,默认取值 10,即返回个位数
  46. random_number()
  47. {
  48.     local max_number

  49.     max_number=$1
  50.     if [ -z "$1" ]
  51.     then
  52.         max_number=10
  53.     fi

  54.     echo $((RANDOM % max_number))
  55. }

  56. # 生成指定长度的随机密码
  57. # 固定复杂度要求:至少一个大写一个小写一个数字
  58. # 返回:指定长度的随机字串
  59. # 参数一:字串长度
  60. random_password()
  61. {
  62.     local i
  63.     local len
  64.     local str
  65.     local flag
  66.     local flag_upper
  67.     local flag_lower
  68.     local flag_digit

  69.     len=$1
  70.     len=$((0 + len))

  71.     while true
  72.     do
  73.         str=""

  74.         flag_upper=0
  75.         flag_lower=0
  76.         flag_digit=0

  77.         for ((i = 0; i < len; ++i ))
  78.         {
  79.             flag=$(random_number 3)
  80.             case $flag in
  81.             1)
  82.                 str="$str$(random_char $flag)"
  83.                 flag_lower=1
  84.                 ;;
  85.             2)
  86.                 str="$str$(random_char $flag)"
  87.                 flag_upper=1
  88.                 ;;
  89.             *)
  90.                 str="$str$(random_number)"
  91.                 flag_digit=1
  92.                 ;;
  93.             esac
  94.         }

  95.         # 若生成字串长度不大于3,则没法达成复杂度要求,不继续处理
  96.         if [ $len -lt 3 ]
  97.         then
  98.             break
  99.         fi

  100.         # 若达到复杂度要求,则跳出循环,否则继续循环,重新生成字串
  101.         if ((flag_upper + flag_lower + flag_digit >= 3))
  102.         then
  103.             break
  104.         fi
  105.     done

  106.     echo $str
  107. }

  108. # 更改密码的回调函数
  109. # 1. 将结果输入到结果队列中
  110. # 2. 补充控制队列的长度
  111. #
  112. # 参数一:ssh登录的服务器名
  113. # 参数二:更改密码的操作结果
  114. sub_end()
  115. {
  116.     echo "xxx" >& $fd_control
  117.     echo "$1 $2" >& $fd_result
  118. }

  119. # 调用更改密码的expect脚本,然后以操作返回值回调主程序的处理函数
  120. # 参数一:ssh登录的用户名,同时也是做为改变密码的用户
  121. # 参数二:ssh登录的服务器名
  122. # 参数三:ssh登录端口
  123. # 参数四:更新用的新密码
  124. change_password()
  125. {
  126.     # 执行更改密码
  127.     # 测试用  ./xx.sh -> 文件内容:exit $((RANDOM % 3))
  128.     ./auto_passwd.exp $1 $2 $3 $3

  129.     # 操作结束后,登记操作结果
  130.     sub_end $2 $?
  131. }

  132. # 统计信息
  133. stat_info()
  134. {
  135.     local server_name
  136.     local result
  137.     local fail_list=""
  138.     local success_list=""

  139.     while true
  140.     do
  141.         # 获取结果
  142.         read -u$fd_result server_name result

  143.         # 如果是结束标志,则退出
  144.         if [ "$server_name" == "$FLAG_END" ]
  145.         then
  146.             break
  147.         fi

  148.         # 根据返回结果,记录到成功和失败列表中
  149.         if [ "$result" -eq 0 ]
  150.         then
  151.             success_list="$success_list $server_name"
  152.         else
  153.             fail_list="$fail_list $server_name"
  154.         fi
  155.     done

  156.     echo "新密码:$new_password"    >  $FILE_RESULT
  157.     echo "失败列表:$fail_list"     >> $FILE_RESULT
  158.     echo "成功列表:$success_list"  >> $FILE_RESULT
  159. }

  160. # 初始化
  161. init ()
  162. {
  163.     local file_name

  164.     # 创建控制并发用的 FIFO 队列
  165.     file_name="$.fifo"
  166.     mkfifo $file_name
  167.     exec 4<>$file_name
  168.     rm $file_name

  169.     # 创建结果存放的队列
  170.     file_name="$.fifo"
  171.     mkfifo $file_name
  172.     exec 5<>$file_name
  173.     rm $file_name

  174.     # 向 FIFO 队列写入MAX_THREAD行内容,表示有这么多的空位可以使用
  175.     for ((i = 0; i < $MAX_THREAD; ++i))
  176.     do
  177.         echo "xxx" >& $fd_control
  178.     done
  179. }

  180. # 主函数
  181. main()
  182. {
  183.     local server_name

  184.     # 初始化
  185.     init

  186.     # 生成新密码
  187.     new_password=$(random_password $LENGTH_PASSWORD)

  188.     # 对一千台机器进行处理
  189.     # 如果命名没有规则,则使用一个配置文件来做,这里只按例子简单处理
  190.     for (( i = 0; i <= 1000; ++i ))
  191.     do
  192.         # 向控制队列申请执行
  193.         read -u $fd_control

  194.         # 生成服务器名
  195.         server_name="0000$i"
  196.         server_name="$PREFIX${server_name:${#server_name}-4:4}"

  197.         # 后台调用更改密码,并行操作
  198.         change_password $USER $server_name $PORT $new_password &
  199.     done

  200.     # 等待全部子进程执行
  201.     wait

  202.     # 向结果队列写入新密码信息

  203.     # 向结果队列中写入结束标志
  204.     sub_end $FLAG_END

  205.     # 统计结果
  206.     stat_info
  207. }

  208. #---------------------------------------------------------------
  209. # 运行
  210. main
复制代码
文件二:auto_passwd.exp

  1. #!/usr/bin/expect
  2. # auto_passwd.exp
  3. # 自动更改密码
  4. # 创建者:seesea2517
  5. # 2012-03-12

  6. # 使用 expect 自动响应 passwd 来更改远程主机密码
  7. # 输入参数:
  8. # 参数一:登录用户名
  9. # 参数二:主机IP/或主机名
  10. proc auto_passwd {in_user in_ip in_port in_psw} {
  11.     set timeout 180
  12.     spawn ssh $in_user@$in_ip -p $in_port "passwd"

  13.     expect {
  14.         -nocase "password:"
  15.         {
  16.             send "$in_psw\r"
  17.             exp_continue
  18.         }

  19.         "successfully."
  20.         {
  21.             return 0
  22.         }

  23.         timeout
  24.         {
  25.             return -1
  26.         }
  27.     }
  28. }


  29. set in_user [lindex $argv 0]
  30. set in_ip   [lindex $argv 1]
  31. set in_port [lindex $argv 2]
  32. set in_psw  [lindex $argv 3]

  33. set ret [auto_passwd $in_user $in_ip $in_port $in_psw]
  34. exit $ret
复制代码
文件三(用于测试):xx.sh

  1. #!/bin/bash
  2. exit $((RANDOM % 3))
复制代码
第十题:

  1. Oracle数据库dbFirst里面有一张表employee1,包含两列:id和email。MySQL数据库dbSecond里面有一张表employee2,同样包含两列:id和 email。两个数据库的用户名都是myuser,密码都是mypass,两张表的数据量都在一千万行左右。请用shell脚本获取两张表的数据,然后比较出两张表中互不相同的id和email分别输出到文件different_id.txt和different_email.txt。
复制代码
解:

  1. #!/bin/bash

  2. # 没有用过Oracle数据库,也没有练习测试的环境,就照网上的“基础教程”依葫芦画瓢吧
  3. # 把 Oracle 数据库的 id 和 email 查询到文件中
  4. sqlplus myuser/mypass@dbFirst << EOF
  5. set heading off;
  6. spool id1.txt;
  7. select distinct id from dbFirst.employee1 order by id;
  8. spool off;
  9. spool email1.txt;
  10. select distinct email from dbFirst.employee1 order by email;
  11. spool off;
  12. exit;
  13. EOF

  14. # 把 Mysql 数据库的 id 和 email 查询到文件中
  15. mysql -umyuser -pmypass --column-names=0 --execute='select distinct id from dbFirst.employee1 order by id;' > id2.txt
  16. mysql -umyuser -pmypass --column-names=0 --execute='select distinct email from dbFirst.employee1 order by email;' > email2.txt

  17. # 比较两个结果
  18. diff -abBH id1.txt id2.txt | grep -E "<|>" > different_id.txt
  19. diff -abBH mail1.txt mail2.txt | grep -E "<|>" > different_email.txt
复制代码

论坛徽章:
92
CU大牛徽章
日期:2013-11-29 22:26:36CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2014-02-21 14:22:02CU大牛徽章
日期:2014-02-21 14:22:07CU大牛徽章
日期:2014-02-21 14:22:09CU大牛徽章
日期:2015-02-28 17:45:342015元宵节徽章
日期:2015-03-06 16:56:38羊年新春福章
日期:2015-02-28 17:42:522015七夕节徽章
日期:2015-09-14 09:24:55CU大牛徽章
日期:2014-02-21 14:22:44CU大牛徽章
日期:2015-02-28 17:48:12CU大牛徽章
日期:2015-02-28 17:47:58
发表于 2012-03-13 15:31 |显示全部楼层
本帖最后由 seesea2517 于 2012-03-13 15:35 编辑

忘记说明测试环境了:

  1. [seesea2517@UC ~]$ uname -a
  2. Linux UC 2.6.18-128.2.1.el5 #1 SMP Tue Jul 14 06:39:56 EDT 2009 i686 i686 i386 GNU/Linux

  3. [seesea2517@UC ~]$ bash --version
  4. GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
  5. Copyright (C) 2005 Free Software Foundation, Inc.

  6. [seesea2517@UC ~]$ awk --version
  7. GNU Awk 3.1.5

  8. [seesea2517@UC ~]$ sed --version
  9. GNU sed version 4.1.5

  10. [seesea2517@UC ~]$ mysql -uroot -p
  11. Enter password:
  12. Welcome to the MySQL monitor.  Commands end with ; or \g.
  13. Your MySQL connection id is 937 to server version: 4.0.26-log

  14. [seesea2517@UC ~]$ mysql --version
  15. mysql  Ver 12.22 Distrib 4.0.26, for pc-linux-gnu (i686)

  16. [seesea2517@UC ~]$ expect -v
  17. expect version 5.43.0
复制代码

论坛徽章:
0
发表于 2012-03-13 16:03 |显示全部楼层
很强悍,,,虽然不会,但是一直关注学习学习,,,:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP