I'm looking for a platform where I can practice Bash or shell scripting on a regular basis, ideally with daily exercises that help build command-line muscle memory. LeetCode only has a small number of shell problems, while other sites tend to focus on beginner lessons or isolated troubleshooting scenarios rather than shell scripting itself. Are there any resources with a steady stream of practical or programming-style shell challenges?
5 Answers
You can also use a local Linux environment as your practice platform. Set up a Debian or RHEL virtual machine, a small home server, or WSL if you’re on Windows, then automate real tasks and experiment safely. Building scripts around your own files and workflows is one of the best ways to develop command-line fluency. A game like Hacknet can add low-stakes, fast-paced practice using real Bash-style commands.
Exercism has a dedicated Bash track with exercises you can complete locally and submit for feedback. It’s a good fit if you want structured practice without being limited to an in-browser sandbox. Many exercises are also available in other languages, which makes it useful for comparing different approaches.
That sounds especially useful since I can work on the exercises locally instead of relying entirely on a hosted editor.
A Bash-focused tutorial site such as ysap.sh can be a helpful supplement. It explains shell concepts in an entertaining way while still providing practical material and examples to work through.
Killercoda offers lots of free, hands-on terminal scenarios. It’s more scenario-based than a competitive programming site, but it gives you a safe environment to practice commands and system administration tasks.
FreeCodeCamp has shell and command-line material, although it leans more toward teaching the basics and may not provide as much ongoing practice as you’re looking for. It’s still useful as a foundation before moving on to scenario-based labs or larger personal projects.

I already use Arch and write small scripts for repetitive tasks, but I’m looking for more challenging exercises so I can better understand unfamiliar scripts and commands instead of blindly relying on automated explanations.