The ability to automate tasks with Bash scripts in Linux is one of the operating system’s most powerful components.
Bash scripting cheatsheet
However, due to the sheer amount of scripting components, it can be intimidating for newcomers. Even long-time users can sometimes forget something and that’s why we’ve made this bash scripting cheat sheet. For such times, it is very useful to have a compiled list of bash scripting components sorted by category. That way, whenever you forget the exact syntax of an operator, conditional statement, etc., it only takes a few moments to refer to the list. In this tutorial, we will present you a curated list of the most useful things to know for bash scripting. These are some of the most useful elements, but they are not easy to remember for everyone.Next time your mind is blanking when writing a Bash script, take a look at the Bash scripting cheat sheet below for some quick help.
Category | Requirements, Conventions or Software Version Used |
---|---|
System | Any Linux distro |
Software | Bash shell (installed by default) |
Other | Privileged access to your Linux system as root or via the sudo command. |
Conventions | # – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command$ – requires given linux commands to be executed as a regular non-privileged user |
Bash Scripting Basics:
Here are some of the most basic things to know about Bash scripting. This would be a good option if you’re not sure where to start.
Syntax | Description |
---|---|
#!/bin/bash | Shebang that goes on the first line of every Bash script |
#!/usr/bin/env bash | Alternative (and better) shebang – using environment variable |
# | Used to make comments, text that comes after it will not be executed |
chmod +x script.sh && ./script.sh | Give script executable permissions and execute it |
$# | Stores the number of arguments passed to the Bash script |
$1, $2, $3 | Variables that store the values passed as arguments to the Bash script |
exit | Exit from the Bash script, optionally add an error code |
Ctrl + C | Keyboard combination to stop Bash script in the middle of execution |
$( ) | Execute a command inside of a subshell |
sleep | Pause for a specified number of seconds, minutes, hours, or days |
Conditional statements
Conditional statements with if
or case
allow for us to check if a certain condition is true or not. Depending on the answer, the script can proceed different ways.
Syntax | Description |
---|---|
if then fi | Test a condition and execute the then clause if it is true |
if then else fi | Execute the then clause if the condition is true, otherwise execute the else clause |
if then elif else fi | Test multiple conditions and execute whichever clause is true |
For case
statements it is best to just see a basic example:
#!/bin/bash
day=$(date +"%a")
case $day in
Mon | Tue | Wed | Thu | Fri)
echo "today is a weekday"
;;
Sat | Sun)
echo "today is the weekend"
;;
*)
echo "date not recognized"
;;
esac
Basic if
example script:
#!/bin/bash
if [ $1 -eq $2 ]; then
echo "they are equal"
else
echo "they are NOT equal"
fi
Bash Loops
Bash loops allow the script to continue executing a set of instructions as long as a condition continues to evaluate to true.
Syntax | Description |
---|---|
for do done | Continue to loop for a predetermined number of lines, files, etc |
until do done | Continue to loop until a certain condition is met |
while do done | Continue to loop as long as a certain condition is true |
break | Exit the loop and continue to the next part of the Bash script |
continue | Exit the current iteration of the loop but continue to run the loop |
Read User Input
Prompt the user for information to enter by using read
command:
#!/bin/bash
read -p "What is your name? " name
echo "Enjoy this tutorial, $name"
Parse input given as arguments to the Bash script:
#!/bin/bash
if [ $# -ne 2 ]; then
echo "wrong number of arguments entered. please enter two."
exit 1
fi
echo You have entered $1 and $2.
Arithmetic Operators
Arithmetic operators in Bash give us the ability to do things like addition, subtraction, multiplication, division, and other basic arithmetic inside of a Bash script.
Syntax | Description |
---|---|
+ | Addition |
- | Subtraction |
* | Multiplication |
/ | Division |
% | Modulus |
** | Raise to a power |
((i++)) | Increment a variable |
((i--)) | Decrement a variable |
Arithmetic Conditional Operators
Arithmetic conditional operators are usually used on two numbers to determine if a certain condition is true or false.
-lt | < |
-gt | > |
-le | <= |
-ge | >= |
-eq | == |
-ne | != |
Note that the operators in the left column will work with single brackets [ ]
or double brackets [[ ]]
, whereas the operators in the right column will work only with double brackets.
String Comparison Operators
We can use string comparison operators to determine if a string is empty or not, and to check if a string is equal, less, or greater in length to another string.
= | equal |
!= | not equal |
< | less then |
> | greater then |
-n s1 | string s1 is not empty |
-z s1 | string s1 is empty |
Bash File Testing Operators
In Bash, we can test to see different characteristics about a file or directory.
-b filename | Block special file |
-c filename | Special character file |
-d directoryname | Check for directory existence |
-e filename | Check for file existence |
-f filename | Check for regular file existence not a directory |
-G filename | Check if file exists and is owned by effective group ID. |
-g filename | true if file exists and is set-group-id. |
-k filename | Sticky bit |
-L filename | Symbolic link |
-O filename | True if file exists and is owned by the effective user id. |
-r filename | Check if file is a readable |
-S filename | Check if file is socket |
-s filename | Check if file is nonzero size |
-u filename | Check if file set-ser-id bit is set |
-w filename | Check if file is writable |
-x filename | Check if file is executable |
Boolean Operators
Boolean operators include and &&
, or ||
and not equal to !
. These operators allow us to test if two or more conditions are true or not.
syntax | Description |
---|---|
&& | Logical AND operator |
|| | Logical OR operator |
! | NOT equal to operator |
- AnchorSetup using Docker-Compose - October 18, 2024
- Devops assignment - October 17, 2024
- Deployment of vault HA using MySQL - September 18, 2024