Learn Bash scripting to automate your own work in six weeks
Six weeks of focused practice — about 35 minutes a day on one free, canonical book, one short style guide, and scripts you actually run — takes you from typing commands one at a time to writing Bash that does the boring parts of your day for you. Roughly 25 hours total. You will not be a software engineer. You will be a person who automates their own work. This path assumes you can already move around a shell; if the terminal still scares you, do Linux first, then come back here to learn to write scripts rather than just run commands.
6 weeks · ~25 hours · write real scripts that automate tasks you actually do
1.The Linux Command Line, by William Shotts — the scripting parts
The free PDF of The Linux Command Line is the canonical text, and Part 4 (roughly chapters 24–36) is the best free introduction to shell scripting there is. It builds you up properly: writing your first script, variables and quoting, conditionals with test and [[ ]], loops, positional parameters, functions, arrays, and the traps that catch everyone. Read with the terminal open and type every example — do not copy-paste — because the muscle memory of getting quoting and $() right is half the skill. These four weeks are the spine of the whole path.
Free PDF; $40 paperback from No Starch
The Linux Command Line →2.Google's Shell Style Guide
Once you can write a working script, learn to write one other people (and future you) can read. Google's Shell Style Guide is short, free, and opinionated in exactly the ways that prevent bugs: quote your variables, prefer [[ ]] over [ ], use $(...) not backticks, name things consistently, and — crucially — know when a task has outgrown Bash and belongs in Python instead. Read it once end to end, then go back and rewrite one of your own scripts to match. It is the difference between a script that works on your machine today and one that still works next year.
Free
Google · Shell Style Guide →3.Write three scripts that automate your own tasks
Find three chores you actually repeat and script them away. A backup script that tarballs a folder and copies it somewhere safe. A script that renames or sorts a messy directory of files by date or type. A setup script that installs your tools and lays out a new project the way you like it. Each teaches a different muscle — loops, conditionals, arguments, exit codes. Run every one through ShellCheck (paste it into shellcheck.net or install it locally) and fix every warning; it is the single fastest way to stop writing subtly broken Bash. When a script you wrote saves you ten minutes you used to spend by hand, the skill has landed.
Free
ShellCheck →If this doesn't fit you
If you prefer a single authoritative reference over a book, work from the official GNU Bash manual alongside the community-maintained style guide above — but only if you already learn well from terse reference docs. And a real warning: if your script grows past about 100 lines or needs anything but trivial data handling, stop and rewrite it in Python. Bash is for gluing commands together, not for building programs; knowing when to leave it is part of using it well.
Why this path
Most people who "know the command line" never learn to script because they keep retyping the same commands by hand, and the ones who do try often write fragile Bash that breaks on a filename with a space. This sequence targets exactly those failures. Shotts teaches scripting from first principles so you understand quoting and expansion instead of cargo-culting them; Google's guide installs the habits that keep scripts readable and safe; and ShellCheck on your own real scripts catches the subtle bugs a beginner cannot yet see. Skipping the final week is the usual mistake — you can follow a tutorial and still freeze in front of a blank file for your own task. Automating something you actually repeat is what makes it stick.