A Bash Scripting Tutorial and Workshop
Anyone working with Linux will inevitably encounter Bash scripts, yet few take the time to learn them properly.
After writing a brief article on extending the Nautilus file manager, I realized how useful a comprehensive tutorial could be.
Here’s what we’ll cover:
- Introduction to Linux and the Bash shell
- Bash programming fundamentals
- Getting started with the command line
- Essential commands and navigation
- Working with files and directories
- Creating, reading, and editing files
- Navigating directories
- Creating Bash scripts
- Basic script structure
- Writing executable scripts
- Variables and data flow
- Variable types and declaration
- Reading and writing data
- Control structures
- Conditionals and decision-making
- Loop constructs
- Functions and modularity
- Defining and using functions
- Building modular scripts
- Error handling and debugging
- Identifying error sources
- Debugging scripts effectively
- Advanced topics
- Regular expressions
- System administration scripting
- Useful tools and resources
1. Introduction to Linux and the Bash shell
Linux is a widely used operating system known for its stability, security, and flexibility. The Bash shell is one of the most common shells on Linux systems, providing a command-line interface for interacting with the operating system.
2. Bash programming fundamentals
Getting started with the command line
I’ll show you how to use the command line—an essential tool on Linux. You’ll learn how to enter commands to interact with your system.
Essential commands and navigation
Here are the fundamental commands you need to know:
pwd: Shows your current directory. ls: Lists files and directories. cd: Changes the directory. touch: Creates a new file. mkdir: Creates a new directory.
3. Working with files and directories
- Creating, reading, and editing files
Learn how to create files, view their contents, and make changes to them.
- Navigating directories
I’ll show you how to move through directories efficiently and organize your file structure.
4. Creating Bash scripts
Basic script structure
Every Bash script begins with #!/bin/bash. This line is essential because it tells the system which interpreter to use.
Creating a Bash script
*Open a terminal: Launch your terminal on Linux.
*Create a new file: Use the touch command to create a script file. For example:
touch mein_skript.sh.
*Edit the file: Open it in a text editor. You can use a simple editor like nano:
nano mein_skript.sh.
Writing a Bash script
In the editor, add the following code:
#!/bin/bash
# Define a simple function
gib_aus() {
echo "Hello, I am a function!"
}
# Call the function
gib_aus
# A simple output
echo "This is my first Bash script!"
In this example, we start by defining a function right away.
Saving and closing the script
Save the script in nano by pressing Ctrl+O, then Enter. Exit the editor with Ctrl+X.
Writing executable scripts
Learn how to write a script and make it executable so you can run it directly from the command line.
To execute the script, you need to make it executable:
Run the command chmod +x mein_skript.sh.
Running a Bash script
Execute the script with ./mein_skript.sh.
What happens in the script?
#!/bin/bash: This is the shebang line, which tells the system to run this script with Bash.gib_aus() { ... }: Here you define a function named gib_aus that outputs a message.gib_aus: You call the gib_aus function.echo "This is my first Bash script!": With echo, you print a message to the screen.- This script demonstrates the fundamentals of script creation, function definition and calling, and printing text in Bash. Feel free to experiment with the code and add more functions and commands!
Before you start, make sure you have a backup in case you accidentally delete or modify data.
5. Variables and data flow
Variable types and declaration
In Bash, you can use different types of variables. I’ll explain how to declare and assign them. For example: meine_variable="Hello World".
Tutorial: Working with variables in Bash
In this part, we focus on how to store, declare, and read variables in Bash. Variables are fundamental for writing effective scripts because they let you store and manipulate values.
Declaring and assigning variables
- Declaring variables
In Bash, you declare a variable by assigning it a value. For example:
meine_variable=“Hello World”
You’ve just created a variable named meine_variable and assigned it the value “Hello World”.
Variable naming
- Variable names should be meaningful. They can contain letters, numbers, and underscores, but must not start with a number.
Reading variable values
- Printing variable values
To print the value of a variable, use the echo command with a dollar sign before the variable name. For example:
echo $meine_variable
This will output “Hello World” to the console.
Working with variables
Embedding variables in text
You can embed variables inside strings. When you use double quotes, the variable’s value is substituted into the string:
echo "The message is: $meine_variable"
Using variables in calculations
For numeric operations, use the $(( )) construct. For example:
a=5
b=3
summe=$((a + b))
echo "The sum is $summe"
This will output “The sum is 8”.
Environment variables
Environment variables are available system-wide in Bash. For example, echo $HOME outputs the path to your home directory.
Setting your own environment variables: You can create custom environment variables with export, like this:
export MEINE_VAR="A value"
This variable is then available in all child shell sessions.
Variables and quotation marks
Double quotes
When you use double quotes, variables and certain special characters like \n (newline) are interpreted.
Single quotes
When you use single quotes, the text is output exactly as written. Variables are not interpreted.
echo 'My variable: $meine_variable'
This outputs exactly as written, without substituting the value of meine_variable.
Tips to avoid beginner mistakes
Uppercase names
It’s a common convention to write environment variables in uppercase to distinguish them from local variables.
Watch out for spaces
Make sure you don’t add spaces around the equals sign when declaring a variable.
__With this knowledge, you’re well prepared to use variables effectively in your Bash scripts!
Reading and writing data
Learn how to store data in variables and read it back. This is especially useful when you want to process information in your script.
Control structures
- Conditionals and decision-making
You’ll discover how to use if, else, and elif to set conditions and make decisions in your scripts.
Loop constructs
Loops are essential for automating repetitive tasks. I’ll show you how to use for and while loops in your scripts.
7. Functions and modularity
Defining and using functions
Functions help you write more efficient and readable code. Learn how to define and call your own functions.
Building modular scripts
I’ll explain how to divide your scripts into modules, making them reusable and organized.
8. Error handling and debugging
Identifying error sources
Errors happen, but don’t worry! I’ll show you how to recognize and fix common error sources.
Debugging scripts effectively
Learn techniques for debugging your scripts and finding and fixing errors quickly.
9. Advanced topics
Regular expressions
Regular expressions (RegEx) are a powerful tool for text processing. I’ll introduce you to the basics and show you how to use them in Bash.
System administration scripting
Bash scripts are ideal for system administration tasks. Learn advanced techniques to manage your system effectively.
10. Useful tools and resources
External tools and utilities
There are many tools that make life easier for Bash programmers. I’ll introduce you to some of the best ones.



