Merry Christmas——用shell 脚本实现画一个 blingbling 的圣诞树

在这里插入图片描述


前言

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 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未末0902

你的鼓励与支持是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值