用shell 脚本实现一颗圣诞树
前言
Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。
它接收用户输入的命令,并把它送入内核去执行。
内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。
Shell是一种应用程序,当用户登录Linux系统时,Shell就会被调入内存去执行。
Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。
shell脚本与其他语言相比的优势是什么?
shell脚本的优势在于处理操作系统底层的业务 (linux系统内部的应用都是shell脚本完成)
因为有大量的linux系统命令为它做支撑。2000多个命令都是shell脚本编程的有力支撑,特别是grep、awk、sed等。
例如:一键软件安装、优化、监控报警脚本,常规的业务应用。
shell开发更简单快速,符合运维的简单、易用、高效原则.
PHP、Python优势在于开发运维工具以及web界面的管理工具,web业务的开发等。
处理一键软件安装、优化,报警脚本。常规业务的应用等php/python也是能够做到的。
但是开发效率和复杂比用shell就差很多了。
一、实现效果图
二、实现脚本
#!/bin/bash
#用shell编写一个圣诞树
#创建时间2021-12-21
trap "tput reset; tput cnorm; exit" 2
clear
tput civis
lin=2
col=$(($(tput cols) / 2))
c=$((col-1))
est=$((c-2))
color=0
tput setaf 2; tput bold
# 打印树叶
for ((i=1; i<20; i+=2))
{
tput cup $lin $col
for ((j=1; j<=i; j++))
{
echo -n \*
}
let lin++
let col--
}
tput sgr0; tput setaf 3
# 打印树干
for ((i=1; i<=2; i++))
{
tput cup $((lin++)) $c
echo '||'
}
new_year=$(date +'%Y')
let new_year++
tput setaf 222; tput bold
tput cup $lin $((c - 10)); echo $new_year 圣 诞 节 快 乐!!!
color=122
tput setaf $color; tput bold
tput cup $((lin + 1)) $((c - 10)); echo 关注公众号: 一口Linux!
let c++
k=1
#装饰一下
while true; do
for ((i=1; i<=35; i++)) {
# Turn off the lights
[ $k -gt 1 ] && {
tput setaf 2; tput bold
tput cup ${line[$[k-1]$i]} ${column[$[k-1]$i]}; echo \*
unset line[$[k-1]$i]; unset column[$[k-1]$i]
}
li=$((RANDOM % 9 + 3))
start=$((c-li+2))
co=$((RANDOM % (li-2) * 2 + 1 + start))
tput setaf $color; tput bold
tput cup $li $co
echo o
line[$k$i]=$li
column[$k$i]=$co
color=$(((color+1)%8))
sh=1
#for l in M O N E Y
for l in 一 口 Li nu x!
do
tput cup $((lin+1)) $((c+sh))
echo $l
let sh++
let sh++
sleep 0.02
done
}
k=$((k % 2 + 1))
done
三.执行脚本
root@ubuntu:/home/peng/work/test# chmod 777 peng.sh
root@ubuntu:/home/peng/work/test# ./peng.sh