A Bash Scripting Tutorial/Workshop
Anyone working with Linux will encounter Bash scripts regularly, yet few take the time to learn it properly.
After writing a small article on extending the Nautilus file manager, I realized how useful a brief 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
- Writing Bash scripts
- Basic structure of a Bash script
- Making scripts executable
- 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. Bash is one of the most common shells on Linux, providing an interface to interact with your operating system through the command line.
2. Bash Programming Fundamentals
Getting Started with the Command Line
I’ll show you how to use the command line, an essential tool in Linux. You’ll learn how to enter commands to interact with your system.
Essential Commands and Navigation
Get familiar with these fundamental commands:
pwd: Shows your current directory. ls: Lists files and directories. cd: Changes 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.
-
Navigating directories I’ll show you how to move through directories and organize your file structure efficiently.
4. Writing Bash Scripts
Basic Structure of a Bash Script
Every Bash script starts with #!/bin/bash. This line is crucial as it tells the system which interpreter to use.
Creating a Bash script
- Open a terminal: Start your terminal in Linux.
- Create a new file: Use the
touchcommand to create a new script file. For example:touch mein_skript.sh. - Edit the file: Open the file in a text editor. You can use a simple editor like nano:
nano mein_skript.sh.
Writing a Bash script In the editor, enter the following code:
#!/bin/bash
#Define a simple function
gib_aus() {
echo "Hello, I'm a function!"
}
#Call the function
gib_aus
#Simple output
echo "This is my first Bash script!"
In this example, we jump right in with a function definition.
Saving and closing the Bash script Save the script in nano by pressing Ctrl+O, then Enter. Exit the editor with Ctrl+X.
Making Scripts Executable
You’ll learn how to write a script and make it executable so you can run it directly from the command line.
To run 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 shebang line tells the system to run this script with Bash.gib_aus() { ... }: Here you define a function called gib_aus that outputs a message.gib_aus: You call the gib_aus function.echo "This is my first Bash script!": The echo command prints a message to the screen.- This script demonstrates the basics of script creation, function definition and calling, and text output in Bash. Feel free to experiment with the code to add more functions and commands!
Before you do, back up your work in case you accidentally delete or modify data.
5. Variables and Data Flow
Variable Types and Declaration
In Bash, you can use different kinds 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 of the tutorial, 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 simply assigning it a value. For example:
meine_variable="Hello World"
You’ve created a variable called meine_variable and assigned it the value “Hello World”.
Variable Names
- Variable names should be meaningful. They may contain letters, numbers, and underscores, but must not start with a number.
Reading Variables
- Printing variable values
To output the value of a variable, use the
echocommand with the$symbol before the variable name. For example:
echo $meine_variable
This will print “Hello World” to the console.
Working with Variables
Embedding variables in text
You can also embed variables in strings. When you use double quotes, the variable’s value is inserted 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 print “The sum is 8”.
Environment Variables
Environment variables: Bash also has environment variables that are available system-wide. For example, echo $HOME prints the path to your home directory.
Setting custom environment variables: You can create your own environment variables with export, for example:
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 (for a newline) are interpreted.
Single Quotes
When you use single quotes, the text is printed exactly as written. Variables are not interpreted.
echo 'My variable: $meine_variable'
This will print exactly as shown, without replacing the value of meine_variable.
Tips to Avoid Beginner Mistakes
Use uppercase for names
It’s common practice 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 variables.
With this knowledge, you’re ready to use variables effectively in your Bash scripts!
Reading and Writing Data
Here you’ll learn how to store data in variables and read it back. This is especially useful when you need to process information in your script.
Control Structures
- Conditionals and decision-making Learn how to use if, else, and elif to create conditions and make decisions in your scripts.
Loop Constructs
Loops are essential for automating repeated 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 code that’s more efficient and readable. You’ll learn how to define and call your own functions.
Building Modular Scripts
I’ll explain how to divide your scripts into modules to make them reusable and easier to manage.
8. Error Handling and Debugging
Identifying Error Sources
Errors happen, but don’t worry! I’ll show you how to spot and fix common error sources.
Debugging Scripts Effectively
You’ll learn techniques to debug your scripts and find and fix 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. You’ll 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 as a Bash programmer. I’ll introduce you to some of the best.



