Jump toUpdate content
Using Bash to display a Christmas tree
- bash
- christmas
- random
- tree
- code
Bash Scripting - Overview
Bash (Bourne again shell) is an improved version of Sh (Bourne shell) and is available by default on Linux and MacOS operating systems. A shell provides a command line interface (CLI) to interact with the operating system of a computer. It interprets commands in plain text format and passes the information to the operating stems to launch an action.
A bash script is a plain text file containing a series of commands. These commands can be a mixture of commands you would normally type by yourself on the shell (like ls
or cd
) and other commands you would normally not type by yourself as they can be more complex. Any command available on the shell can be used in a bash script - and vice versa.
No special knowledge is required to write bash scripts, as they are plain text files containing the series of commands required to run a specific task. Instead of typing then manually on the shell, you write them in a script and run the script afterwards. This can be very useful for system administration tasks as you can automatize tasks. The common file extension for bash scripts is *.sh
.
We recommend you follow this tutorial using a Learning Instance.
Getting Started
- Connect to your Instance using SSH:
ssh root@<Instance Public IP>
- Update the
apt
packet cache and the software already installed on the Instance:apt update && apt upgrade -y - Create a new bash script and open it in a text editor, for example
nano
:nano xmas.sh - Copy the following bash code into the script:
# The following line tells the shell what program to interpret the script with#!/bin/bash# tput is a command to manipulate the terminal, it can be used to change the color of text, apply effects, and generally brighten things up.trap "tput reset; tput cnorm; exit" 2cleartput civislin=2col=$(($(tput cols) / 2))c=$((col-1))est=$((c-2))color=0# Set the text color to green to write the treetput setaf 2; tput bold# Write the treefor ((i=1; i<40; i+=2)){tput cup $lin $colfor ((j=1; j<=i; j++)){echo -n \*}let lin++let col--}## Set the color to brown for the trunktput sgr0; tput setaf 130# Write the Trunk in three linesfor ((i=1; i<=3; i++)){tput cup $((lin++)) $cecho 'mWm'}# Write a greetingtput setaf 93; tput boldtput cup $lin $((c - 15)); echo SCALEWAY wishes you Merry Christmastput cup $((lin + 1)) $((c - 11)); echo And a Happy New Year 2023let c++k=1# Configure lights and decorationswhile true; dofor ((i=1; i<=35; i++)) {# Turn off the lights[ $k -gt 1 ] && {tput setaf 2; tput boldtput 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 colorstput cup $li $coecho oline[$k$i]=$licolumn[$k$i]=$cocolor=$(((color+1)%8))}k=$((k % 2 + 1))done
- Paste the copied file and press
CTRL
ands
to save. - Exit nano by pressing
CTRL
andx
. - Make the script executable using the
chmod
command (necessary because, by default, plain text files are not executable):chmod +x xmas.sh
Running the script
-
Run the script from your terminal by typing the following code:
./xmas.shThe script writes an animated tree on the terminal window:
-
Exit the script by pressing
CTRL
+c
.