免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: yqlv
打印 上一主题 下一主题

如何实现飞行字? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2011-04-06 16:22 |只看该作者
太强大了 ,还是看不懂啊。。努力学习了。。。

论坛徽章:
0
22 [报告]
发表于 2011-04-07 10:34 |只看该作者
已测试,很不错的
佩服

论坛徽章:
0
23 [报告]
发表于 2011-04-07 10:38 |只看该作者
很遗憾我不能给二楼加分
建议版主加精

论坛徽章:
0
24 [报告]
发表于 2011-04-13 21:50 |只看该作者
看不懂,5555555

论坛徽章:
0
25 [报告]
发表于 2011-10-11 14:05 |只看该作者
收了试试

论坛徽章:
13
15-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:032015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56狮子座
日期:2013-09-08 08:37:52
26 [报告]
发表于 2012-07-17 16:32 |只看该作者
太犀利了 牛掰 ^_^
@kns1024wh 感谢兄弟分享
  1. #!/bin/bash

  2. [ -z $1 ] && echo "无输入文件!" && exit 1
  3. txt=($(cat $1|sed 's/ \+/_/g'))
  4. lines=${#txt[@]}
  5. max_show=10      #最多显示行数(超过总行数则设为总行数)
  6. [ ${max_show} -gt ${lines} ] && max_show=${lines}
  7. hlt_line=3   #高亮显示位置(不超过总行1/2,设为3实际是第4行)
  8. [ ${hlt_line} -gt $(( lines / 2 )) ] && hlt_line=$(( lines / 2 ))
  9. sTTY=$(stty -g)   #保存终端设置

  10. clear
  11. echo -ne "\033[?25l" #隐藏光标

  12. spaces() {
  13.    local i j n
  14.    i=0; n=0
  15.    for (( j=0; j <= ${lines}; j++ ));do
  16.       [ $i -lt ${#txt[$j]} ] && (( i = ${#txt[$j]} )) && (( n = $j ))
  17.    done
  18.    echo ${txt[$n]}|sed 's/./   /g'
  19. }

  20. space_line=$(spaces)

  21. #传递的参数是欲显示行的序数:show 1 表示第一行高亮显示
  22. show() {
  23.    local i j text crt_line
  24.    j=$1
  25.       
  26.       for (( i=0; i < max_show; i++ ));do
  27.          crt_line=$(( j + i - hlt_line ))
  28.          if [ $i -eq ${hlt_line} ] && [ ${crt_line} -ge 0 ] && [ ${crt_line} -le ${lines} ];then
  29.             text="\033[;32m"${txt[${crt_line}]}"\033[0m"
  30.          elif [ ${crt_line} -lt 0 ] || [ ${crt_line} -gt ${lines} ];then
  31.             text=${space_line}
  32.          else
  33.             text=${txt[${crt_line}]}
  34.          fi
  35.          echo -ne "\033[$((i+3));0H${space_line}"
  36.          echo -ne "\033[$((i+3));6H${text}"
  37.       done
  38. }

  39. #测试
  40. for (( j = 0; j < lines + hlt_line +1 ; j++ ));do
  41.    show $j
  42.    sleep 1
  43. done

  44. echo ""
  45. stty ${sTTY} #恢复终端设置
  46. echo -e "\033[?25h\033[0;0H" #恢复光标
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP