Skip to content
Tech News
← Back to articles

Telling a Computer to Do Things

read original get O'Reilly Learning the Bash Shell book → more articles
Why This Matters

This personal essay captures a common milestone in a developer's growth: moving from running isolated terminal commands to actually programming the shell to automate workflows. It matters because command-line fluency remains a foundational skill gap for many engineers, and stories like this help demystify shell scripting as a legitimate, powerful tool rather than an arcane afterthought.

Key Takeaways
Worth a Look

O'Reilly Learning the Bash Shell book — This article is all about the leap from running one-off terminal commands to actually scripting and controlling your computer with logic and loops. A solid bash/shell scripting guide is the perfect companion for making that jump, covering piping, control flow, and automation basics. It's a practical reference you can keep next to your terminal as you learn to stitch commands together.

See O'Reilly Learning the Bash Shell book on Amazon → Affiliate link — we may earn a commission on purchases, at no extra cost to you. Product picked by AI based on this article; it is not a tested recommendation.

Telling a Computer to Do Things

For the first few years of my career, I didn’t know how to tell my computer to do things. I could kick off a few commands from the terminal – run those tests, install that dependency, start that container, ssh to that machine – but I was limited to running simple commands one at a time. My terminal was the world’s worst GUI, and I thought that the shell was the way to start programs that didn’t have application wrappers.

--command-- mocha git brew install npm install rm

At a fundamental level, I wasn’t able to tell my computer to accomplish anything that involved logic or stitching together multiple programs like:

Do one thing and then do another

If a command fails, log out an error message

Kick off a program when the computer starts

Run two commands at the same time

Loop through all of the files in a directory and take an action on each one

Use the output of one command as the input for another

... continue reading