Sử dụng Bash Script để hiển thị cây thông noel

0
262
bash shell script

Tổng quan Bash Scripting

Bash là phiên bản của tiến của Sh và có sẵn theo mặc định trên các hệ điều hành Linux và MacOS. Shell cung cấp giao diện dòng lênh (CLI) để tương tác với hệ điều hành của máy tính. Nó diễn giải các lệnh ở dạng plaintext và chuyển thông tin tới hệ điều hành để khởi chạy các hành động.

Xem thêm: Các câu lệnh linux cơ bản

Bash Script là một file dạng plain text chứa một loạt các lệnh thực thi hành động. Những lệnh này có thể là hàng loạt các lệnh mà bạn thường sử dụng trên shell (như cd, pwd, mv,…) và các lệnh khác bạn ít khi sử dụng vì chúng phức tạp hơn. Bất kỳ lệnh nào có sẵn trên shell đều có thể được sử dụng trong bash script và ngược lại.

Khi viết bash script, không có yêu cầu gì đặc biệt để bạn có thể viết bash script được cả, vì chúng đều là file ở dạng plain text là một chuỗi các câu lệnh cần thiết để chạy các tác vụ cụ thể. Điều này cực kỳ hữu ích đối với những người vận hành hệ thống vì bạn có thể tự động hóa các tác vụ. Phần mở rộng file phổ biến đối với bash script thường là ở dạng *.sh

Hướng dẫn viết chương trình bash script hiển thị cây thông noel

Sử dụng một trình soạn thảo bất kỳ như vim hay nano, mở file lên bằng câu lệnh

vi caythong.sh

Copy đoạn code dưới đây và dán vào file bạn đang sửa

# The following line tells the shell what program to interpret the script with
#!/bin/bash

trap "tput reset; tput cnorm; exit" 2
clear
tput civis
lin=2
col=$(($(tput cols) / 2))
c=$((col-1))
est=$((c-2))
color=0

# Set the text color to green to write the tree
tput setaf 2; tput bold

# Write the tree
for ((i=1; i<40; i+=2))
{
    tput cup $lin $col
    for ((j=1; j<=i; j++))
    {
        echo -n \*
    }
    let lin++
    let col--
}

## Set the color to brown for the trunk
tput sgr0; tput setaf 130

# Write the Trunk in three lines
for ((i=1; i<=3; i++))
{
    tput cup $((lin++)) $c
    echo 'mWm'
}

# Write a greeting
tput setaf 93; tput bold
tput cup $lin $((c - 15)); echo Merry Christmas From Quang Vu Blog
tput cup $((lin + 1)) $((c - 11)); echo And a happy new year 2020
let c++
k=1

# Cấu hình đèn và trang trí
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]  # Array cleanup
        }

        li=$((RANDOM % 9 + 10))
        start=$((c-li+2))
        co=$((RANDOM % (li-2) * 2 + 1 + start))
        tput setaf $color; tput bold   # Switch colors
        tput cup $li $co
        echo o
        line[$k$i]=$li
        column[$k$i]=$co
        color=$(((color+1)%8))
    }
    k=$((k % 2 + 1))
done

Lưu file lại bằng cách nhấn ESC sau đó gõ :wq!

Làm cho file có quyền thực thi bằng câu lệnh

chmod +x caythong.sh

Chạy script

./caythong.sh

Kết quả sẽ được hiển thị như sau:

cây thông bash shell

5/5 (1 Review)