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
.
1 . Connect to your instance using SSH
2 . Update the apt
packet cache and the software already installed on the instance:
apt update && apt upgrade -y
3 . Create a new bash script and open it in a text editor, for example nano
:
nano xmas.sh
4 . Copy the following content 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" 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 SCALEWAY wishes you Merry Christmas
tput cup $((lin + 1)) $((c - 11)); echo And a happy new year 2020
let c++
k=1
# Configure lights and decorations
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
5 . Write the file by pressing CTRL
and o
and exit nano by pressing CTRL
and x
.
6 . By default plain text files are not executable. Make the script Executable using the chmod
command:
chmod +x xmas.sh
1 . Run the script from your terminal by typing the following code:
./xmas.sh
2 . The script writes an animated tree on the terminal window:
3 . Exit the script by pressing CTRL
+ c
.