DEV Community

Cover image for Bash Basics: A Beginner’s Guide to Shell Scripting
Oliver Bennet
Oliver Bennet

Posted on

Bash Basics: A Beginner’s Guide to Shell Scripting

Did you know that over 90% of the world's supercomputers run on Linux. Behind the seamless performance of these systems lies the power of Bash scripting. From automating repetitive tasks to orchestrating complex workflows, Bash scripting is a cornerstone of system administration and development.

Whether you're managing servers, configuring systems, or simply looking to make your day-to-day tasks more efficient, learning Bash scripting can open doors to endless possibilities. we will talk about the step by step into the world of Bash scripting, making it approachable for absolute beginners.

1. What is Bash Scripting?

Bash scripting involves writing a sequence of commands in a plain text file and executing them in the Bourne Again Shell (Bash). Bash is the default shell on most Linux distributions, and it allows users to interact with the system via the command line or scripts.

Why Bash?
Bash is widely regarded as the standard for scripting because of its:

  • Ease of Use: It simplifies command-line tasks.
  • Ubiquity: Installed by default on most Unix-like systems.
  • Versatility: Can automate tasks ranging from simple file manipulations to complex system monitoring.

For instance, instead of typing multiple commands to back up files every day, you can write a Bash script to do it automatically.

2. Getting Started with Bash

Before diving into scripting, let’s set up the basics:

How to Create a Bash Script

  • Open a text editor (e.g., nano, vim, or gedit).
  • Write your commands in the file.
  • Save the file with a .sh extension (e.g., myscript.sh).

Making the Script Executable
To run your script, you need to make it executable:

chmod +x myscript.sh
Enter fullscreen mode Exit fullscreen mode

Running a Script
Execute the script with:

./myscript.sh
Enter fullscreen mode Exit fullscreen mode

First Script Example
Here’s a simple script that prints "Hello, World!" to the terminal:

#!/bin/bash
# This is a comment
echo "Hello, World!"
Enter fullscreen mode Exit fullscreen mode
  • #!/bin/bash: This shebang line tells the system to use Bash to interpret the script.
  • echo: A command to print text to the terminal.

3. Understanding Bash Basics

Variables
Variables store data for reuse.

name="Alice"
echo "Hello, $name!"
Enter fullscreen mode Exit fullscreen mode
  • Variables are case-sensitive.
  • Use $ to access the variable’s value.

User Input
Read user input with the read command:

echo "Enter your name:"
read name
echo "Welcome, $name!"
Enter fullscreen mode Exit fullscreen mode

Conditional Statements
Bash supports if-else constructs for decision-making:

#!/bin/bash
echo "Enter a number:"
read number
if [ $number -gt 10 ]; then
    echo "The number is greater than 10."
else
    echo "The number is 10 or less."
fi
Enter fullscreen mode Exit fullscreen mode
  • [ ]: Tests conditions.
  • -gt: Greater than.

Loops
Automate repetitive tasks using loops.

For Loop

#!/bin/bash
for i in {1..5}
do
    echo "Number: $i"
done
Enter fullscreen mode Exit fullscreen mode

While Loop

#!/bin/bash
count=1
while [ $count -le 5 ]
do
    echo "Count: $count"
    ((count++))
done
Enter fullscreen mode Exit fullscreen mode

4. Practical Applications

File Operations
Automate file management tasks:

  • Create a File
touch myfile.txt
Enter fullscreen mode Exit fullscreen mode
  • Check If a File Exists
if [ -f myfile.txt ]; then
    echo "File exists."
else
    echo "File does not exist."
fi
Enter fullscreen mode Exit fullscreen mode

Automated Backups
Create a backup of a directory:

#!/bin/bash
src="/home/user/documents"
dest="/home/user/backup"
tar -czf "$dest/backup_$(date +%F).tar.gz" "$src"
echo "Backup completed."
Enter fullscreen mode Exit fullscreen mode

System Monitoring
Monitor disk usage:

#!/bin/bash
usage=$(df -h / | grep / | awk '{print $5}' | sed 's/%//')
if [ $usage -gt 80 ]; then
    echo "Warning: Disk usage is at $usage%!"
else
    echo "Disk usage is under control at $usage%."
fi
Enter fullscreen mode Exit fullscreen mode

5. Best Practices in Bash Scripting

  • Use Comments: Explain your code for readability.
# This script checks disk usage
Enter fullscreen mode Exit fullscreen mode
  • Error Handling: Anticipate and handle errors gracefully.
if [ ! -d "$src" ]; then
    echo "Source directory does not exist."
    exit 1
fi
Enter fullscreen mode Exit fullscreen mode
  • Avoid Hardcoding: Use variables for paths and configurations.
  • Indentation: Keep your code organized.

6. Debugging and Troubleshooting

Debugging Tips

  • Run the script in debug mode:
bash -x myscript.sh
Enter fullscreen mode Exit fullscreen mode
  • Check for Syntax errors
bash -n myscript.sh
Enter fullscreen mode Exit fullscreen mode

Common Errors

  • Permission Denied: Ensure the script is executable with chmod +x.
  • Command Not Found: Verify the script’s shebang line and paths.

7. Expanding Your Skills

As you grow more comfortable with Bash scripting, explore advanced topics such as:

  • Functions: Organize reusable code.
  • Arrays: Handle lists of items.
  • Cron Jobs: Schedule scripts to run automatically.
  • Text Processing: Use tools like awk and sed.

Conclusion

Bash scripting is an invaluable skill for anyone working in Linux or Unix environments. By mastering the basics of variables, loops, and conditional statements, you can create scripts to automate tasks, save time, and increase efficiency.

Start small, experiment with practical scripts, and gradually build more complex solutions. Remember, the best way to learn is by doing—so dive in and start scripting today!

If you want to continue knowing more on Bash. Check out this Article I Published on Medium today.

Top comments (0)