I'm seriously considering switching to Linux and want to learn Bash scripting along the way. My plan is to install a beginner-friendly distribution, practice using the terminal, and gradually write simple scripts while learning how Linux, its filesystem, permissions, packages, and processes work. Is it better to study Bash first, or should I start using Linux and learn scripting through practical projects? What books, courses, exercises, or beginner projects would you recommend?
5 Answers
The fastest way to improve is to build small, genuinely useful projects. Set up Linux in a virtual machine if you do not want to change your main system, then automate something you actually care about. You can create a backup script, sort files by extension or date, monitor storage, or send a notification when a process fails. Read documentation and test each command rather than blindly copying generated scripts.
Start using Linux first rather than treating Bash as a prerequisite. Learn the basics of navigating the filesystem with commands such as cd, ls, mkdir, cp, mv, rm, and touch. Then write scripts whenever you notice yourself repeating a task. Small projects like organizing files, creating backups, converting media, or checking disk space are great practice. Keep the official Bash manual nearby, and use ShellCheck to catch common mistakes.
Bash is useful, but learning Bash is not the same thing as learning Linux. You can use Linux without ever writing a script, while Linux concepts include package management, permissions, services, processes, the filesystem layout, networking, and system administration. Learn those topics in parallel instead of waiting to understand Bash completely before using the system.
A good progression is: learn basic terminal navigation, understand pipes and redirection, write a few short scripts, then study safer scripting practices such as quoting variables, checking command failures, using functions, and adding a proper shebang. Do not focus on memorizing commands. Learn how to look up documentation with tools such as man, help, and info, then solve real problems with what you find.
A structured course or book is useful, but make sure you practice constantly. Learn variables, quoting, exit codes, conditionals, loops, functions, command substitution, pipes, redirection, and basic text-processing tools such as grep, sed, awk, and find. The Linux Command Line by William Shotts is a solid beginner-friendly resource, and the official Bash reference is a good source when you need precise details.

That makes sense. I’ll start using Linux in a virtual machine and learn Bash as I run into tasks I want to automate.