Introduction
1. Why this guide?
The primary reason for writing this document is that a lot of readers feel the existing HOWTO to be
too short and incomplete, while the Bash Scripting guide is too much of a reference work. There is
nothing in between these two extremes. I also wrote this guide on the general principal that not
enough free basic courses are available, though they should be.
This is a practical guide which, while not always being too serious, tries to give real-life instead of
theoretical examples. I partly wrote it because I don't get excited with stripped down and over-
simplified examples written by people who know what they are talking about, showing some really
cool Bash feature so much out of its context that you cannot ever use it in practical circumstances.
You can read that sort of stuff after finishing this book, which contains exercises and examples that
will help you survive in the real world.
From my experience as UNIX/Linux user, system administrator and trainer, I know that people can
have years of daily interaction with their systems, without having the slightest knowledge of task
automation. Thus they often think that UNIX is not userfriendly, and even worse, they get the
impression that it is slow and old-fashioned. This problem is another one that can be remedied by
this guide.
2. Who should read this book?
Everybody working on a UNIX or UNIX-like system who wants to make life easier on themselves,
power users and sysadmins alike, can benefit from reading this book. Readers who already have a
grasp of working the system using the command line will learn the ins and outs of shell scripting
that ease execution of daily tasks. System administration relies a great deal on shell scripting;
common tasks are often automated using simple scripts. This document is full of examples that will
encourage you to write your own and that will inspire you to improve on existing scripts.
Prerequisites/not in this course:
You should be an experienced UNIX or Linux user, familiar with basic commands, man
pages and documentation
Being able to use a text editor
Understand system boot and shutdown processes, init and initscripts
Create users and groups, set passwords
Permissions, special modes
Understand naming conventions for devices, partitioning, mounting/unmounting file
systems
Adding/removing software on your system