Join WhatsApp
Join Now
Join Telegram
Join Now

10 Underrated Linux Commands That Will Change Your Workflow Forever.

Avatar for Noman Mohammad

By Noman Mohammad

Published on:

Your rating ?

Stuck on Linux? You’re probably missing the good stuff

I used to spend my mornings typing ls -la fifty times. Then someone showed me tree. Mind blown.

The real cost of your current habit loop

Let’s be honest. Three hours a week of manual clicking and typing grep "error" log.txt | grep "2025" | more is way too much.

Here’s the math.

  • 3.7 h per week × 52 weeks = 192 h per year.
  • 192 h is almost five full work-weeks of your life.
  • Five weeks you could spend on literally anything else.

And the real kicker? Most of us ignore ninety percent of what the terminal can do.

10 tiny commands that took me from slow to scary-fast

strace – Stop guessing, start seeing

Think of strace as an X-ray for your failing app.

strace -fe trace=open,read,write ./myscript

Flags grouped:

  • -f follows child processes.
  • -e trace= lets you pick exactly which calls to watch.

Pipe the output to tee debug.log and you get a searchable file. I used this last month to find out why a Python script kept crashing on a test box: turned out it was opening the wrong config path—two letters off. Fixed it in four minutes instead of four hours.

watch – The command that fights⁡firefox-refresh glasses

watch -n 3 'free -h | grep Mem'

Now I just glance at the corner of my screen to see if my dev box is eating RAM. No more tap-tap-tab every ten seconds.

pv – The progress bar you didn’t know you needed

Copying a two-hundred-gig backup over SSH?

tar cf - bigdata/ | pv | ssh user@remote 'tar xf - -C /backups'

You get
– exact bytes transferred,
– current speed,
– ETA.
Suddenly your boss stops asking, “Is it done yet?”

tree – Because ls -R is ugly

tree -L 2 -I 'node_modules'

Instant project layout, minus the monster folders I don’t care about.

rename – Batch rename in one line

I once had three thousand photos named IMG_####.jpg. Ten seconds later they were Japan-trip-####.jpg.

rename 's/IMG_/Japan-trip-/' *.jpg

sshfs – Mount any server like a USB drive

sshfs me@lab:/var/www ~/lab-www

Now I edit files in ~/lab-www with my regular editor. No scp, no typos, no tears.

column – Beautify ugly raw output

A hanging curl returns messy JSON? Chain it:

curl -s http://api | jq -r '.data[] | @tsv' | column -t

ag – Faster than grep, especially with source

I keep aliases for each language.

  • ag --php "CLASS_NAME"
  • ag --js -G spec "describe"

nc – NetCat, the Swiss Army knife

Quick TCP probe:

nc -z host 3306 && echo "mysql up" || echo "mysql down"

mtrping and traceroute had a baby

mtr --report --report-cycles 20 google.com

Perfect screen-shot evidence when our ISP is acting up.

My 7-day sprint plan (worked in 2024, will work now)

  1. Monday: Pick the ugliest folder of mismatched files and run rename.
  2. Tuesday: Keep watch -n 2 sensors running during a long build to confirm my laptop isn’t melting.
  3. Wednesday: Find a broken tool, slap strace -fe open on it.
  4. Thursday: Replace the slow grep hunt with ag.
  5. Friday: Use tree to map a new repo for new teammates.
  6. Saturday: Back up photos to my NAS with pv progress glow.
  7. Sunday: Free play: try schema upgrade via sshfs so I can roll back in my sleep.

Quick answers nobody asked but everyone needs

“These aren’t installed on my box!”
Ubuntu/Debian: sudo apt install pv tree silversearcher-ag rename
Fedora: sudo dnf install pv tree the_silver_searcher prename

“I’ll forget them.”
I stick one-liner cheatsheets in my ~/.cheats folder. Example:

cat ~/.cheats/rename  # yields: rename 's/\s+/_/g' *

“Can they go in scripts?”
Absolutely. I have a nightly backup script that uses five of these commands. Runs on a five-dollar VPS and sends me a Slack ping when done. Takes thirty seconds to read the log; used to take forty minutes.

Sources: NIST system uptime report, my own shell history, and one too many Friday-night debugging sessions.

Leave a Comment