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

用shell 脚本实现一颗圣诞树

  • 前言
    • shell脚本与其他语言相比的优势是什么?
  • 一、实现效果图
  • 二、实现脚本
  • 三.执行脚本

Merry Christmas——用shell 脚本实现画一个 blingbling 的圣诞树_第1张图片


前言

Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。

它接收用户输入的命令,并把它送入内核去执行。

内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。

Shell是一种应用程序,当用户登录Linux系统时,Shell就会被调入内存去执行。

Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。

Merry Christmas——用shell 脚本实现画一个 blingbling 的圣诞树_第2张图片

shell脚本与其他语言相比的优势是什么?

shell脚本的优势在于处理操作系统底层的业务 (linux系统内部的应用都是shell脚本完成)

因为有大量的linux系统命令为它做支撑。2000多个命令都是shell脚本编程的有力支撑,特别是grep、awk、sed等。

例如:一键软件安装、优化、监控报警脚本,常规的业务应用。

shell开发更简单快速,符合运维的简单、易用、高效原则.

PHP、Python优势在于开发运维工具以及web界面的管理工具,web业务的开发等。

处理一键软件安装、优化,报警脚本。常规业务的应用等php/python也是能够做到的。

但是开发效率和复杂比用shell就差很多了。


一、实现效果图

Merry Christmas——用shell 脚本实现画一个 blingbling 的圣诞树_第3张图片

二、实现脚本

#!/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 

你可能感兴趣的:(Linux,linux,运维,服务器,shell,脚本语言)