Kernel and Shell are the two main elements of an operating system. A kernel is the operating system's brain, and it is in charge of everything in the system. Shell is an exterior wrap that protects the kernel from direct user interference.
What is Shell?
Shell is a one-of-a-kind program that gives the user a way to communicate with the kernel by taking human-readable commands and converting them to kernel-friendly code. In a Linux OS, Shell will take user input in the form of instructions, process it, and then show the results. In Linux, you can use Terminal to get to Shell.
Predominantly, shells can be categorized as Command-Line shells or GUI-based Shells. A user can use command-line interfaces to enter a shell. To get user input in the form of human-readable commands and view output in the same command-line interface, we have several applications, like terminals in Linux distributions or Mac, to execute instructions one by one.
Similarly, we have Command Prompts in Windows. The graphical shell gives users an interface (GUI) from which they can communicate and execute tasks such as manipulating files, permissions, etc. Windows OS and Debian are excellent examples of GUI Shell (Desktop) environments in which a user does not need to type commands for any task. Even then, any operation is preceded by a shell order that is executed to carry out the action.
Bash Shell and Scripting
Most Linux distributions now use BASH (Bourne Again Shell) as their default command-line interpreter. It's an improved version of the Bourne shell from before. To execute day-to-day activities as a Linux server administrator, it’s necessary that you have an outstanding understanding of the commands that are used in the BASH shell.
Even then, you will be required to perform complicated or routine functions that require the execution of a set of commands in a specific order. A shell will also accept instructions from a file as input, so we can save time by writing these commands in a file and then executing them in the shell. They are referred to as Shell Scripts.
Advantages and Disadvantages of Bash Scripting
There are some benefits of using the bash script. It saves time and effort by automating routine tasks. You can build your own utility or power tool. They are portable, which means you can run them on other Linux systems without changing them. It uses the same collection of syntax as a normal terminal, so there is no need to learn something new. With a little assistance, you can easily write a bash script. It will provide remote debugging when tasks are running, which is useful in the event of an error or problem.
In comparison to these, bash scripts may also have drawbacks. They are vulnerable to mistakes; a single blunder will disrupt the program's flow and cause damage. They have a sluggish rate of execution. Unlike other programming languages, they have very simple data structures. They are not built for executing complex tasks.
In this comprehensive guide, we will walk you through a basic introduction to bash scripting with a handful of practical examples that will help you to get started with bash scripting. Also, please note although it’s not necessary, however, previous experience with any programming language might help you to understand the syntax and concepts better.
Getting Started
First, we will create a simple text file with the shell (.sh) extension. Then, inside the shell file, we will include a command to be executed. Let’s say we want to list all the files in the current directory when we execute the bash script.
So, we will just include the “ls” command inside the script.
After that, we will execute the bash script using the following command.
$ bash sample.sh
You can see that all the files and directories have been listed on the execution of the script.
Creating a Hello World Script
Let’s create a script called “helloworld.sh” which will simply print a Hello World message to the shell. Please note that we can include the command “#!/bin/sh” which represents the starting of a bash script.
#!/bin/bash echo "Hello World"
Now, we can run the script using the following command.
$ bash helloworld.sh
You can see that the message has been printed successfully.
Echo Command with Bash Scripts
The echo command can be used to print text output to the console. The syntax is -
$ echo [options] [arguments/commands]
We can use the -n option to suppress the new line trails. The -e option can be used to interpret those characters that are back-slashed. Let’s use the following commands inside a new bash script.
#!/bin/bash echo "Hello and Welcome" echo -n "This is a Linux Tutorials\n" echo -e "\nBye \t Bye \t Everyone"
Comments in Bash Scripts
Comments inside bash scripts can be denoted by a hash symbol. We can use : ‘<text to comment>’ for multiline comments. See the script below.
#!/bin/bash : ' Lets print the product of 2 and 8 ' ((prod=2*8)) # The product is echo "Product is $prod"
Variables in Bash Scripts
We can use variables to store data temporarily. There are three categories of variables - Environment, Special, and user-defined. There are special variables such as $USER (print the current user), $SECONDS (seconds since when the CLI has been running), $@ (parameters that have been sent to script), etc., that represent preset variables. You can check the environment variables list using the following command -
$ env | less
You can define your own variables inside the script.
#!/bin/bash message=Welcome echo $message
User Input
You can use the read command to get input from users.
#!/bin/bash read message echo $message
Loops in Bash Scripting
We can use loops such as for and while to execute the same code snippet repeatedly. Check the below script that uses a while loop to print numbers from 1 to 10.
#!/bin/bash count=1 while [ $count -le 10] do echo “Current Number: $count” ((count++)) done
The above program set’s a user-defined variable called count and initializes it to 1. We have used a while loop with the condition that it will terminate the loop if the value of the count becomes greater than 10. In each iteration, we print the value stored inside the count variable and increment it by 1. Let’s try to perform the same operation using a for loop.
#!/bin/bash flag=1 for (( flag=1; flag<=10; flag++ )) do echo "Current Value is: $flag" done
Conditional Statements in Bash Scripts
Let’s use an if-elif-else branching to execute a simple program.
#!/bin/bash echo -n "Please enter a number: " read number if [[ $number -gt 30 ]] then echo "The Number is greater than 30." elif [[ $number -eq 30 ]] then echo "The Number is equal to 30." else echo "The Number is less than 30." fi
Here, we will read an input number from the user and check if it is greater than, less than, or equal to 30 and print messages accordingly.
Functions in Bash Scripts
You can use functions, just like in other languages, to reuse the same block of code repeatedly. Let’s create a product function that will take two input variables and print the product.
#!/bin/bash function product() { echo -n "Please enter the first value: " read first echo -n "Please enter the second value: " read second echo "The Product is: $(( first*second ))" } product
Wrapping Up!
Shell scripts in Linux can be really useful. Complex activities, when properly executed, will greatly improve your effectiveness while still assisting you in quickly troubleshooting problems. Furthermore, its scalability is unrestricted. If you're a new Linux user, we strongly advise you to learn how to use bash scripts. You can manipulate files, manage permissions, send emails, and perform tons of similar tasks using simple bash scripts.
In this guide, we started with a basic introduction to shells, bash, and bash scripting. We used simple concepts such as variables, comments, loops, conditional statements, functions, etc., and demonstrated each of them through practical examples. We hope that with the help of this guide, you can easily get started with bash scripting in Linux.
People are also reading:
Leave a Comment on this Post