Skill Roadmap

Shell / Bash

The shell is the common thread running through Linux, DevOps, and backend work — the fastest way to navigate a filesystem, wire commands together, and automate anything repetitive. This roadmap walks you from basic navigation through redirects and pipelines, scripting, data types and operators, and on to the system administration tasks bash makes fast.

CLI vs GUI

What Bash is, and why the terminal outlasts every graphical file manager

Bash (Bourne Again SHell) is a command-line interpreter — a program that reads the commands you type and executes them. Where a GUI trades flexibility for discoverability, a CLI trades a learning curve for speed, precision, and the ability to script anything you'd otherwise click through by hand.

Scripting is writing a sequence of shell commands into a file so they can be run repeatably, chained together, and automated — the difference between typing the same five commands every deploy and running one script.

Bash is the most common shell on Linux and macOS, but it's one of several: zsh, fish, dash, ksh, and tcsh are common Unix-family shells, while Windows brings cmd and PowerShell into the mix.

The Shell / Bash Roadmap

Work through these in order, from navigating a filesystem to administering a system

STEP 1
Bash logo

Setting Up Bash

The quality-of-life features that make working in the terminal fast instead of tedious.

Tab Completion Bash Alias Repeat Commands Help Commands Stop Execution
STEP 2

Shell Fundamentals

The handful of commands you'll type hundreds of times a day.

Navigate Between Dirs
pwd ls cd mkdir rmdir
Files & Directories
cp mv echo cat touch find rm
STEP 3

Redirects & Pipelines

Wire the output of one command into the input of another — the core idea behind the shell.

stdin, stdout, stderr Pipes Output Redirection Input Redirection Error Redirection Command Substitution Process Substitution
STEP 4

Text Editors & Viewing

Read, search, and edit files without ever leaving the terminal.

less, more grep head, tail Nano Vim Vi Emacs
STEP 5

Working with Text

Transform and analyze text streams — the bread and butter of shell one-liners.

Text Transform
join, split cut, paste tr sed
Analysis
sort wc uniq awk nl
STEP 6

Bash Script Anatomy & Variables

How a script is structured, run, and where its variables come from.

Running Shell Scripts
Direct Execution Running with Source
Environment vs Shell Vars. Variable Scopes Create, Print, Modify Variables Best Practices Special Variables
Wildcards
? * [...] {...}
STEP 7

Bash Data Types & String Manipulation

Strings, numbers, and arrays — and the operations bash gives you for each.

Strings Numeric Arrays Associative Arrays
String Manipulation
String Length Pattern Replacement Substring Extraction Case Conversion
STEP 8

Input / Output

Get data into a script and format what comes back out.

Read User Input Here Documents Here Strings printf Formatting Comments
STEP 9

Operators & Script Arguments

Compare values, test files, and read what was passed in on the command line.

Bash Operators
Arithmetic Logical Comparison File Test String Operators
Script Arguments
$1, $2, $3 $0 $* $@ $# shift
STEP 10

Conditionals, Loops & Exit Codes

Control flow, and how a script reports success or failure back to whatever called it.

if case for while until break, continue $? / exit Success vs Failure
STEP 11

Regular Expressions & Error Handling

Match patterns reliably, and make scripts fail loudly instead of silently.

Basic Regex Syntax Extended Regex set -e set -o set -u trap Error Logging
STEP 12

Functions, Numerics & Debugging

Package up reusable logic, do math in a language with no native numeric type, and find what broke.

Function Scopes Recursive Functions
Working with Numerics
Arithmetic Expansion let expr bc awk
Bash Debug
set -x bash -n shellcheck
STEP 13

System Administration

Where shell scripting earns its keep — permissions, processes, monitoring, and scheduled work.

File Permissions
rwx chmod chown chgrp
Process Management
jobs nohup fg, bg disown ps Process Substitution
System Monitoring
free top, htop uptime df, du iostat, vmstat
Package Management
apt brew yum dnf
File Compression
tar gzip, gunzip zip, unzip bzip2, xz
Networking
ping curl wget ssh scp rsync netstat, ss ifconfig, ip
Task Scheduling
cron, crontab at systemd timers

GitHub Projects

Real, buildable projects to put on your own GitHub

Frequently Asked Questions

Common questions from people starting out with Shell / Bash

What's the difference between "shell" and "Bash"?

Shell is the general term for any command-line interpreter — Bash, zsh, fish, and dash are all shells. Bash (Bourne Again SHell) is simply the most common one on Linux and macOS, and the default many scripts assume.

Should I learn Bash or zsh?

Learn Bash first. It's the most portable — nearly every server, container, and CI pipeline has it — and scripts written for Bash mostly run under zsh too. zsh's extra interactive features are worth adopting for daily use once the fundamentals are solid.

Is shell scripting still relevant with modern automation tools?

Yes. Even the most modern CI/CD pipelines, Dockerfiles, and infrastructure tools ultimately shell out to run commands, and being able to read and write a bash script is close to a prerequisite for DevOps, backend, and Linux system administration work.

How do I debug a bash script?

Start with set -x to print each command as it runs, use bash -n to check syntax without executing, and run the script through shellcheck to catch common mistakes like unquoted variables before they cause problems.

Why do bash scripts fail silently?

By default, Bash keeps running a script even after a command fails. Adding set -e stops execution on the first error, set -u catches references to unset variables, and a trap can run cleanup logic when something goes wrong.

What's the difference between $* and $@?

Both expand to all the positional arguments passed to a script, but $@ preserves each argument as a separate word when quoted ("$@"), while $* joins them into a single string. In practice, "$@" is almost always the one you want.

Track complete

From navigating a filesystem to writing scripts with proper error handling and scheduling recurring jobs — that's the core of what's expected of anyone comfortable at the command line. Keep building, and pair it with Linux or DevOps to put it to work on real infrastructure.

Where next?

Keep exploring by domain or drill into a single skill