DEV Community

The AI producer
The AI producer

Posted on

25 Linux Commands That Changed How I Work Every Day (And Why You're Not Using Them)

I used to think I knew Linux. I'd been using it daily for years — SSH, basic file ops, grep, maybe some awk when I was feeling fancy.

Then I started tracking every command I actually used over a month. The list was embarrassingly short: cd, ls, grep, cat, vim, ssh, git. Maybe 20 commands total.

Meanwhile, colleagues were piping through jq, xargs, parallel, fzf, ripgrep — solving in seconds what took me minutes of manual clicking and copy-pasting.

Here are the 25 commands that changed my daily workflow. Not obscure flags you'll never remember, but commands that genuinely save time every single day.


1. fzf — Fuzzy Finder (not a builtin, but essential)

# Find and open any file in project
vim $(fzf)

# Search command history interactively
# Ctrl+R in shell with fzf installed
Enter fullscreen mode Exit fullscreen mode

Replaces: find . -name "*.py" | grep -v __pycache__ | head -20 + manual selection.


2. rg (ripgrep) — Faster Than grep

# Search code, respects .gitignore automatically
rg "TODO" --type py

# Search with context, show line numbers
rg -n -A 3 -B 3 "error"
Enter fullscreen mode Exit fullscreen mode

5-10x faster than grep on large codebases. Respects .gitignore by default.


3. jq — JSON Processing That Doesn't Make You Cry

# Pretty-print JSON
cat response.json | jq .

# Extract specific fields
curl -s api.example.com/users | jq '.[] | {name: .name, email: .email}'

# Filter arrays
jq '.[] | select(.status == "active")'
Enter fullscreen mode Exit fullscreen mode

If you work with APIs and don't know jq, you're manually parsing JSON in Python scripts like it's 2015.


4. xargs — Turn Output Into Commands

# Delete all .pyc files
find . -name "*.pyc" | xargs rm -f

# Process files in parallel (4 at a time)
ls *.log | xargs -P 4 -I {} gzip {}

# With placeholders
docker ps -q | xargs -I {} docker logs {} --tail 50
Enter fullscreen mode Exit fullscreen mode

The -I {} pattern lets you insert the input anywhere in the command, not just at the end.


5. parallel — xargs on Steroids

# Run a command on multiple hosts
parallel ssh {} "uptime" ::: server1 server2 server3

# Process files with multiple CPU cores
parallel gzip ::: *.log

# With progress bar
parallel --bar convert {} {.}.webp ::: *.png
Enter fullscreen mode Exit fullscreen mode

GNU parallel is what xargs wants to be. The --bar progress indicator alone is worth installing it.


6. fd — find That's Actually Usable

# Find files by name (case-insensitive by default)
fd "config"

# Only .py files, exclude venv
fd -e py "test" --exclude venv

# Execute command on each match
fd -e py -x black {}
Enter fullscreen mode Exit fullscreen mode

Modern replacement for find with sensible defaults and color output.


7. bat — cat With Syntax Highlighting

# View file with syntax highlighting
bat config.yaml

# Works as pager too
docker logs container 2>&1 | bat -l log
Enter fullscreen mode Exit fullscreen mode

cat with git integration, line numbers, and syntax highlighting. Once you use it, cat feels broken.


8. eza — ls Replacement

# Tree view with git status
eza --tree --git-ignore

# Long format with git, human sizes
eza -la --git

# Only directories
eza -D
Enter fullscreen mode Exit fullscreen mode

Modern ls with colors, git status icons, tree view, and human-readable sizes by default.


9. zoxide — Smarter cd

# Learn your most used directories
z project    # jumps to ~/code/my-project
z doc        # jumps to ~/Documents
zi           # interactive selection with fzf
Enter fullscreen mode Exit fullscreen mode

Learns your habits. Type partial names, it figures out where you want to go.


10. delta — Better git diff

# Install, then add to gitconfig:
# [core]
#     pager = delta
git diff
Enter fullscreen mode Exit fullscreen mode

Side-by-side diffs, syntax highlighting, line numbers. Makes reviewing changes actually pleasant.


11. btop — htop's Better Looking Cousin

btop
Enter fullscreen mode Exit fullscreen mode

Visual CPU/memory/network/disk with process list. Pretty enough to keep on a second monitor.


12. dust — du That Shows You What's Big

dust -d 2
Enter fullscreen mode Exit fullscreen mode

Instant visual tree of disk usage. Finds the 5GB node_modules folder you forgot about.


13. procs — ps With Colors and Search

procs --watch "node"
procs --tree
Enter fullscreen mode Exit fullscreen mode

Modern ps with colored output, human-readable units, and keyword search.


14. hyperfine — Benchmark Anything

# Compare two commands
hyperfine "sleep 1" "sleep 2"

# Warmup runs, statistical analysis
hyperfine --warmup 3 "python script.py" "python3.11 script.py"
Enter fullscreen mode Exit fullscreen mode

Rigorous benchmarking with statistical analysis. Stops you from optimizing the wrong thing.


15. tokei — Code Stats Instantly

tokei
tokei -e json
Enter fullscreen mode Exit fullscreen mode

Line counts by language in seconds. Replaces cloc with better defaults and JSON output.


16. entr — Run Commands on File Changes

# Re-run tests when any .py file changes
ls *.py | entr -c pytest

# Rebuild on save
ls *.go | entr go build
Enter fullscreen mode Exit fullscreen mode

Simplest file watcher. No config files, no daemon, just works.


17. tldr — Man Pages for Humans

tldr tar
tldr --platform=linux docker
Enter fullscreen mode Exit fullscreen mode

Community-maintained examples for every command. What man should have been.


18. cheat — Interactive Cheatsheets

cheat docker
cheat --edit docker    # create your own
Enter fullscreen mode Exit fullscreen mode

Like tldr but editable. Build your personal command reference over time.


19. glances — Full System Monitor

glances
glances -w    # web UI on port 61208
Enter fullscreen mode Exit fullscreen mode

Single-pane view of CPU, memory, disk, network, processes, sensors, Docker containers. Web UI is great for remote monitoring.


20. lazygit — Git TUI That's Actually Good

lazygit
Enter fullscreen mode Exit fullscreen mode

Stage hunks, resolve conflicts, rewrite history, all in a keyboard-driven interface. Once you learn the keys, it's faster than CLI for complex operations.


21. lazydocker — Docker TUI

lazydocker
Enter fullscreen mode Exit fullscreen mode

Same philosophy as lazygit. View logs, exec into containers, prune images — all keyboard-driven.


22. teip — Pipe Editing

# Edit piped input before passing to next command
cat data.csv | teip "sed 's/old/new/'" | process
Enter fullscreen mode Exit fullscreen mode

Interactively edit streams. Solves the "I need to fix one line in 10,000" problem.


23. gron — Make JSON Greppable

# Flatten JSON to line-oriented format
curl -s api.example.com | gron | grep "email"

# Round-trip: gron -> edit -> ungron
gron file.json > flat.txt
# edit flat.txt
ungron flat.txt > file.json
Enter fullscreen mode Exit fullscreen mode

Transforms nested JSON into path=value lines. grep it, edit it, convert back.


24. dasel — Universal Data Selector

# Works on JSON, YAML, TOML, XML, CSV
dasel -f config.yaml '.servers.[0].port'
dasel -f data.json '.users[].name' -w output.csv
Enter fullscreen mode Exit fullscreen mode

One tool for all structured data formats. jq for JSON, yq for YAML, etc. — dasel does all of them.


25. atuin — Shell History Sync + Search

atuin sync       # sync across machines
atuin search "docker"  # fuzzy search all history
Enter fullscreen mode Exit fullscreen mode

Replaces your shell history with a SQLite database that syncs across machines and supports full-text search.


My Daily Driver Aliases

Add these to your .bashrc/.zshrc:

alias f='fzf'
alias rg='rg --hidden --glob "!.git"'
alias jq='jq -C'
alias cat='bat'
alias ls='eza --icons'
alias ll='eza -la --git'
alias cd='z'
alias top='btop'
alias du='dust'
alias ps='procs'
alias diff='delta'
alias find='fd'
Enter fullscreen mode Exit fullscreen mode

The Compound Effect

None of these commands alone will 10x your productivity. But using 5-10 of them daily creates a compound effect: each saves 30 seconds here, 2 minutes there. Over a year, that's hundreds of hours.

The real unlock isn't memorizing flags — it's changing your mental model from "I'll write a script for this" to "there's probably a tool that does this in one line."

Start with fzf, rg, jq, and eza. They cover 80% of the daily friction. Add one new tool per week. In six months, your terminal workflow will be unrecognizable.


This article covers 25 tools, but I've curated 68 free online tools across development, AI, productivity, and design at **ToolNest* — all client-side, no signup, no tracking. Check it out: https://nguyenminhduc9988.github.io/free-tools-hub/*

For structured prompt packs that automate daily developer workflows (morning routine, code reviews, weekly planning), see my Gumroad store: https://ducminh5.gumroad.com/

Cross-posted to Telegraph for SEO: https://telegra.ph/How-ChatGPT-Prompts-Save-Developers-10-Hours-Every-Week--My-Exact-System-07-01

Top comments (0)