Linux and Bash lessons with exercises and solutions, a few small scripts to read and extend, and a test suite for those scripts. The lessons are written to be typed and run, not just read.
| Course | What it covers | Format |
|---|---|---|
| Linux in 20 days | Using Linux: files, permissions, processes, networking, services | One lesson per day, with exercises and solutions |
| 30 days of Bash | Shell scripting, from a first script to a final project | One lesson per day, with exercises and solutions |
| 12-step Linux path | Administration: users, networking, security, storage, backup, automation, containers, plus a capstone | Tasks with commands, verification and undo steps |
If you are new to the terminal, set up a lab first (setup/README.md), then follow Linux in 20 days. If you already use Linux, start with 30 days of Bash or the 12-step path.
Each day lesson has the same sections: goal, concepts, a worked example, common mistakes, exercises (easy, medium, hard), a "break it" debugging exercise, solutions, a self-check and a cheat sheet. The format is described in the style guide. Commands that can lock you out or destroy data have a warning before them and an undo step after them. Anything that could not be run while writing the lessons is marked as typical output.
Small scripts, each with a README, tests and exercises. See projects/README.md.
- todo-list: input validation, backups and search.
- disk-space-usage:
du,findandsort, written to be portable. - user-management: users and groups from one CLI, with
--dry-run. - devops-scripts: a REST API client and a Docker manager.
They share the helpers in lib/common.sh. The tests are in tests/.
git clone https://github.com/akintunero/learn-linux-with-ease.git
cd learn-linux-with-ease
projects/todo-list/todo.sh add "Learn Linux"
projects/todo-list/todo.sh listTo run the checks (ShellCheck, shfmt, syntax check and the Bats tests):
make setup # Debian/Ubuntu: installs bats, shellcheck, shfmt and jq
make checkRequirements: Bash 4.4 or newer (developed on Bash 5; the Bash 3.2 that ships with macOS is too old, so use
brew install bash), Linux, WSL or macOS. The API client needs curl and jq, and the container manager
needs docker. A dev container with everything installed is available.
Corrections, new exercises and better explanations are welcome. Read CONTRIBUTING.md and the style guide. If a lesson confused you or a command failed, open a lesson feedback issue. Report security problems as described in SECURITY.md.
MIT.