Shell中实现飞行文字效果_linux shell

大家肯定见过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" #恢复光标

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索shell
飞行文字效果
linux c语言实现shell、linux shell脚本实现、linux shell实现、linux shell 动画效果、adb shell 飞行模式,以便于您获取更多的相关知识。

时间: 2024-09-16 16:52:21

Shell中实现飞行文字效果_linux shell的相关文章

Shell中的for循环总结_linux shell

关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿... 复制代码 代码如下: for((i=1;i<=10;i++));do echo $(expr $i \* 4);done 在shell中常用的是 for i in $(seq 10) 复制代码 代码如下: for i in `ls` for i in ${arr[@]} for i in $* ; do for File in /proc/sys/net

Shell中eval的用法示例_linux shell

功能说明:告知shell取出eval的参数,重新运算求出参数的内容. 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开. 1.执行命令行之前扫描它两次,再次运算求出参数的内容. 复制代码 代码如下: [root@localhost blue]# a="ls |more" [root@localhost blue]# $a                                       

linux bash shell中case语句的实例_linux shell

bash case语句的例子. 分享一段bash shell代码,对于学习bash的同学理解case语句的用法,会有帮助. 例子: 复制代码 代码如下: #!/bin/bash### Program:# File operation# 1.) Open file 2.) Display file 3.) Edit file 4.) Delete file# site: WWW.JB51.NETPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/u

Shell中的变量使用小结_linux shell

变量的定义,只能以字母和下划线开始,区分大小写,可以包含数字 字母下划线.详见官方手册 复制代码 代码如下: [root@svn shell_example]# yourname='Linux' [root@svn shell_example]# echo $yourname Linux [root@svn shell_example]# YourName="linux" [root@svn shell_example]# echo "The variable is $You

在Shell中分割字符串的例子_linux shell

比如,要分割 test="aaa,bbb,cc cc,dd dd",可以这样 复制代码 代码如下: arr=$(echo $test|tr "," "\n") 还可以这样 复制代码 代码如下: OLD_IFS=$IFSIFS=','arr=$testIFS=$OLD_IFS 然后用 复制代码 代码如下: for x in $arr; do  echo $xdone 看看效果 或者更直接一点 复制代码 代码如下: IFS=',' arr=($tes

Shell中比较大小简洁总结_linux shell

复制代码 代码如下: #!/bin/bash if [ $1 -gt $2 ] then echo "$1>$2" else echo "$2>$1" fi # 数字判断一些命令 #-gt是大于的意思 #-lt是小于 #-eq是等于 #-ne是不等于 #-ge是大于等于 #le是小于等于 

PPT中的镂空文字效果要怎么制作?

  1.打开PPT2013,插入一个矩形,输入文字若干,调整大小,摆放到合适位置: 2.按住Ctrl键,鼠标左键单击,同时选中文字与色块(先选中色块,再选中文字): 3.单击格式>合并形状>剪除,就能得到最基本的镂空文字设计: 4.接下来把它放到一张图片前看看效果: 5.掌握了最基本的操作以后,就可以尽情发挥创意,可以看看下面的一些例子: 6.同理,插入的形状与形状之间.形状与图片之间也可以实现这种效果,操作方法也如出一辙: 7.总结 最核心工具:合并形状>剪除. 最关键操作:先选中的形

linux shell命令执行顺序的控制方法_linux shell

&&命令1 && 命令2:如果这个命令执行成功&&那么执行这个命令.[jb]/usr/xxxx/ytcclb>ls -l test.sql-rwxr--r-- 1 xxxx group 225 Nov 15 14:12 test.sql[jb]/usr/xxxx/ytcclb>cp test.sql test.bak && echo "coping file ok!"coping file ok![jb]/us

什么是Shell?Shell脚本基础知识详细介绍_linux shell

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好L