大家肯定见过WEB页面上飞行字的效果,但是在Linux系统中,特别是bash命令行模式下,如何实现echo出来的字符串以飞行的特效展现出来呢?

这个特效不见得实用,但偶尔拿来自娱自乐或炫耀一番倒是个不错的方法,呵呵,下面以一段Shell Script代码来给大家讲解如何实现……

#!/bin/bash

[ -z $1 ] && echo "Input is invalid! " && exit 1

txt=($(cat $1|sed 's/ \+/_/g'))

lines=${#txt[@]}

max_show=10 #最多显示行数(超过总行数则设为总行数)

[ ${max_show} -gt ${lines} ] && max_show=${lines}

hlt_line=3 #高亮显示位置(不超过总行1/2,设为3实际是第4行)

[ ${hlt_line} -gt $(( lines / 2 )) ] && hlt_line=$(( lines / 2 ))

sTTY=$(stty -g) #保存终端设置

clear

echo -ne "\033[?25l" #隐藏光标

spaces() {

local i j n

i=0; n=0

for (( j=0; j <= ${lines}; j++ ));do

[ $i -lt ${#txt[$j]} ] && (( i = ${#txt[$j]} )) && (( n = $j ))

done

echo ${txt[$n]}|sed 's/./ /g'

}

space_line=$(spaces)

#传递的参数是欲显示行的序数:show 1 表示第一行高亮显示

show() {

local i j text crt_line

j=$1

for (( i=0; i < max_show; i++ ));do

crt_line=$(( j + i - hlt_line ))

if [ $i -eq ${hlt_line} ] && [ ${crt_line} -ge 0 ] && [ ${crt_line} -le ${lines} ];then

text="\033[;32m"${txt[${crt_line}]}"\033[0m"

elif [ ${crt_line} -lt 0 ] || [ ${crt_line} -gt ${lines} ];then

text=${space_line}

else

text=${txt[${crt_line}]}

fi

echo -ne "\033[$((i+3));0H${space_line}"

echo -ne "\033[$((i+3));6H${text}"

done

}

#测试

for (( j = 0; j < lines + hlt_line +1 ; j++ ));do

show $j

sleep 1

done

恢复默认设置方法:

echo ""

stty ${sTTY} #恢复终端设置

echo -e "\033[?25h\033[0;0H" #恢复光标

linux落字效果代码,Shell中实现飞行文字效果相关推荐

  1. Linux新建用户可以在shell中切换到该用户也能登录到图形桌面

    解决使用useradd testname,passwd testname命令确实创建了一个用户,可以在shell中切换到该用户.但不能登录到图形桌面的问题! 通过下面方法可以在Linux中新建用户,并 ...

  2. linux去除字符串的空格符,Shell中去除字符串前后空格的方法

    经常碰到的场景,需要去除字符串中的前后的空格.在Shell中不像其他语言有strip()来处理,不过也是可以使用诸如awk等命令来处理. 下面是一个简单示例: [root@localhost ~]# ...

  3. linux sed 正则提取字符串,Shell中使用grep、sed正则提取和替换字符串

    Linux中使用grep正则提取字符串 echo office365 | grep -P '\d+' -o find . -name "*.txt" | xargs grep -P ...

  4. linux脚本批量加注释,shell中如何批量注释和取消注释

    shell中如何批量注释和取消注释,注释,行号,模式,批量,命令 shell中如何批量注释和取消注释 易采站长站,站长之家为您整理了shell中如何批量注释和取消注释的相关内容. #!/bin/bas ...

  5. linux时间与日期函数,Shell中关于时间和日期的函数总结

    shell下获取系统时间的方法直接调用系统变量 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 获取昨天时期:`date -d yesterd ...

  6. linux ftp显示进度条,Shell中复制大文件显示进度

    "世间最痛苦的事莫过于等待..." 在Shell下进行大文件的复制时,常常要耗很长世间,这是一个相当乏味的过程,在GUI程序中常常会显示进度条或者完成百分比,但在Shell中如何来 ...

  7. php文字红色代码,IOS_IOS中一段文字设置多种字体颜色代码,给定range和需要设置的颜色, - phpStudy...

    IOS中一段文字设置多种字体颜色代码 给定range和需要设置的颜色,就可以给一段文字设置多种不同的字体颜色,使用方法如下: [self fuwenbenLabel:contentLabel Font ...

  8. Three.js中的3D文字效果

    对于一些设计网页中经常会出现一些3D的文字效果,本文将利用Three.js实现各种动画WebGL文本输入效果. 示例效果 原文章 文本采样 通常情况下,文本网格是2D的平面形状,我们所要实现的3D文本 ...

  9. html5 css3实现幻灯片效果代码,CSS3实现的渐变幻灯片效果

    实现效果 代码 html CSS3: CSS3 delivers a wide range of stylization and effects, enhancing the web app with ...

最新文章

  1. Spring-基于注解的配置[01定义Bean+扫描Bean]
  2. noclobber属性
  3. 综述 | 万字长文带你入门近几年深度学习的重要研究成果
  4. Linux FTP服务安装与账号设置
  5. android MVP连接服务器,Android之MVP模式实现登陆和网络数据加载
  6. iis php 映射,iis添加php的模块映射
  7. 扫码枪 android 广播,Android 扫码枪监听封装
  8. r library car_医学统计与R语言:双因素重复测量方差分析(Twoway repeated measures ANOVA)...
  9. Java_多线程_模拟电影院售票
  10. PHP友情链接检测代码
  11. Flexbox布局基础入门
  12. Linux安装RabbitMQ详细教程
  13. 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)
  14. Android面试知识库,线程和进程的区别【Android面试送命题】
  15. [emWin]利用内存设备加速GIF图片显示——2021.03
  16. python的pyside2安装
  17. 腾讯 在我过往人生中的一些记忆
  18. 量化投资学习——股指期货研究(六)
  19. win10下安装elasticsearch-head
  20. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV等颜色模型简介

热门文章

  1. RedHat/CentOS系统信息查看命令大全
  2. 前端进阶-Position
  3. 临渊羡鱼,不如退而结网
  4. Media Player控件常用的样式
  5. 什么是分布式计算系统?—Vecloud微云
  6. SSH客户端字符集编码设置
  7. Cookie与Web Storage的区别
  8. Java-Runoob-高级教程-实例-数组:01. Java 实例 – 数组排序及元素查找
  9. HDU 4405 概率期望DP
  10. 夺命雷公狗---node.js---3commonJs 与 nodeJs的简介