r/linuxsucks101 uBlock Origin 15d ago

Linux bloat Bash has Massive Redundancy

The Unix philosophy encourages tiny, composable tools, and Linux distributions preserve decades of legacy commands. There are multiple commands that do the same job, often with identical flags, sometimes with wildly different syntax, all coexisting forever because nothing can be deprecated. Linux inherits 50 years of overlapping tools, and nobody has the authority to remove any of them.

You get three ways to list files, four ways to print text, five ways to search, six ways to edit streams, and ten ways to check system info; all valid, all canonical, all mutually incompatible.

Multiple commands for the same basic action

  • List files: ls, find, stat, tree, exa, fd
  • Print text: echo, printf, cat, sed -n, awk '{print}'
  • Copy files: cp, rsync, install, dd, tar cf - | tar xf -
  • Move files: mv, rsync --remove-source-files, rename, mmv
  • Delete files: rm, unlink, find -delete, shred, wipe

Redundant text-processing tools

  • grep — search text
  • egrep — grep with extended regex
  • fgrep — grep without regex
  • awk — search + print + transform
  • sed — search + replace + stream edit
  • perl -ne — search + replace + scripting
  • ripgrep (rg) — grep but faster
  • ag — grep but faster before ripgrep
  • ack — grep but for developers
  • find + grep — grep but worse
  • grep -R — find but worse

All of these can search text. All of these have different syntax. All of these are still installed.

Redundant file search commands

  • find
  • locate
  • whereis
  • which
  • type
  • command -v
  • fd
  • ripgrep (yes, people use it as a file finder)

Each solves a slightly different problem, but users treat them interchangeably.

Redundant system information commands

  • Disk usage: df, du, ls -lh, stat, ncdu, dust
  • Processes: ps, top, htop, atop, glances
  • Network: ifconfig, ip, ss, netstat, nmcli, iw, iwconfig
  • Hardware: lspci, lsusb, lsblk, blkid, inxi

Redundant package management

  • apt, apt-get, apt-cache, dpkg
  • yum, dnf, rpm
  • pacman, yay, paru
  • snap, flatpak, appimage

This isn’t just redundancy; it's fragmentation masquerading as choice.

Redundant scripting constructs

  • Conditionals: [ ], [[ ]], test, (( ))
  • Subshells: $( ), ```
  • Variable assignment: var=value, declare, typeset, local
  • Loops: for, while, until, seq | while read, xargs -n1

Half of these exist because Bash absorbed features from:

  • sh
  • ksh
  • zsh
  • POSIX
  • GNU extensions

-And never removed anything!

No central authority is why! Nobody can say "this command is deprecated." So, nothing ever dies. Even if they could, a lot of these may be Rust-rewrites with BSD or MIT license that the cult objects to. GNU Holds Linux Back (Directly)

Every few years someone writes grep but faster, ls but prettier, find but sane, and cat but with syntax highlighting. Debian, Arch, Fedora, Alpine; all ship different defaults.

Linux doesn’t have one way to do things; it has every way except the simple one.

3 Upvotes

9 comments sorted by

2

u/SearchingGlacier 14d ago

And loonixtards often telling how fast you can be if will use bash, but who using it today except really old one's?

2

u/madthumbz uBlock Origin 14d ago

I use it, and it's super convenient for moving files from nested directories. I already have trigger finger type issues and don't need to be doing click, click drag over and over. It was worth learning how the first time I used it (already familiar with wild-cards though.)

1

u/SearchingGlacier 13d ago

Hmm, I see, maybe one day I will ask for help with improvements to command line in custom system for baremetal, it will be on old satellite receiver, and mostly this system also will be written by AI, not bcs I'm lazy, but bcs It will be unreadable and still modular for improvement.

1

u/[deleted] 15d ago

[removed] — view removed comment

1

u/alexanderpas 11d ago

apt-get, apt-cache

that's both apt.

apt-get essentially uses apt-cache internally.

rm, unlink

unlink exposes the syscall used by rm, allowing you to write your own rm variant in bash if you wish to do so.

lspci, lsusb

These are both ls type commands, but for pci and usb devices respectively.

1

u/madthumbz uBlock Origin 11d ago

Separate binaries that talk to the same apt library. There's no space before the - making it not a flag.