npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@centricle/whyis

v0.1.0

Published

CLI etymology reference — why is it called that?

Readme

whyis

Why is it called that? A CLI etymology reference for shell commands and tools.

Every name has a story. Some are acronyms, some are jokes, some are named after people or dogs. This is the encyclopedia.

Vintage Unix / GNU

| Command | Stands For / Meaning | Origin / Lore | Source | |---------|----------------------|---------------|--------| | ar | Archiver | The original Unix file archiver, predating tar — still quietly used today to build static libraries (.a files). | Wikipedia | | awk | Aho, Weinberger, and Kernighan | Named after its three Bell Labs creators — pronounced like the seabird 'auk,' which graces the cover of The AWK Programming Language. | Wikipedia | | biff | Named after a dog | Named after Heidi Stettner's dog at UC Berkeley who barked at the mailman — a mail notification command named after a literal mail alert system. | Wikipedia | | cat | Catenate | Named after 'catenate,' not 'concatenate' — Kernighan and Pike called it 'a slightly obscure synonym.' | Wikipedia | | cc | C Compiler | The simplest possible abbreviation for the language that rewrote Unix itself — appeared in Version 3 Unix alongside C. | Wikipedia | | cd | Change Directory | So fundamental it's a shell builtin, not an external program — a child process can't change the parent's directory. | Wikipedia | | chmod | Change Mode | The 'mode' is the permission bitmask — rwxrwxrwx or its octal shorthand, inherited from Multics access control. | Wikipedia | | chown | Change Owner | On most modern systems, only root can chown — letting users give away files would break disk quotas and audit trails. | Wikipedia | | cp | Copy | Part of Version 1 Unix (1971) — because 'copy' was four letters too many for Thompson and Ritchie. | Wikipedia | | cron | From Greek 'chronos' (time) (?) | Named for the Greek personification of time — 'Command Run On Notice' is a backronym. The true etymology is genuinely disputed. | Wikipedia | | curl | Client for URLs | Daniel Stenberg built it in 1996 to fetch currency exchange rates for an IRC bot — was first 'httpget', then 'urlget', then 'curl.' | curl.se | | cut | Cut (to extract a section) | Gottfried Luderer wrote it at Bell Labs for System III — BSD didn't pick it up until 4.3BSD-Reno around 1990, nearly a decade late. | Wikipedia | | dd | Data Definition (?) | Dennis Ritchie confirmed it alludes to IBM JCL's DD cards — Eric Raymond called the JCL-style syntax 'clearly a prank.' | Wikipedia | | df | Disk Free | Version 1 Unix (1971) — one of the oldest surviving commands, born when monitoring a few megabytes was life or death. | Wikipedia | | diff | Differences | Douglas McIlroy and James Hunt wrote it for V5 Unix (1974) — McIlroy's 1976 algorithm paper became the foundation of all file comparison. | Wikipedia | | du | Disk Usage | The complement to df — df tells you what's free, du tells you who's hogging it. | Wikipedia | | ed | Editor | Ken Thompson wrote it in August 1969 as one of the first three Unix programs — assembler, editor, shell — still the POSIX standard editor. | Wikipedia | | emacs | Editing MACroS | Born in 1976 as TECO macros at MIT — so many macros ending in MAC/MACS accumulated that Stallman and Steele unified them. | Wikipedia | | ex | Extended (editor) | Bill Joy and Chuck Haley extended 'em' (editor for mortals) — George Coulouris had deemed ed's interface fit only for 'immortals.' | Wikipedia | | find | Find (to locate files) | Dick Haight wrote it for V5 Unix as part of the Programmer's Workbench, designed to pair with cpio for backup-and-restore. | Wikipedia | | grep | Global Regular Expression Print | From the ed command g/re/p — Ken Thompson extracted it into a standalone tool overnight. | Wikipedia | | gzip | GNU zip | Gailly and Adler wrote it in 1992 as a free replacement for 'compress' after Unisys started enforcing LZW patents. | Wikipedia | | head | Head (the beginning of something) | Many early Unix versions lacked it entirely, using 'sed 10q' instead — head was a convenience that arrived fashionably late. | Wikipedia | | kill | Kill (terminate a process) | A misnomer — it actually sends any signal, not just SIGKILL, but the name stuck because stopping runaway processes was the common case. | Wikipedia | | ld | Link Editor (or Loader) (?) | The dual meaning reflects the tool's dual role: linking object files together and loading external symbols for resolution. | Wikipedia | | lex | Lexical Analyzer Generator | Written by Mike Lesk and Eric Schmidt (yes, that Eric Schmidt) in 1975 — turns regexes into C code for tokenizing. | Wikipedia | | ln | Link | Creates additional names for the same inode — the reason Unix files can have multiple identities since the PDP-7 days. | Wikipedia | | ls | List | Inherited from Multics where 'listf' became 'list' became 'ls' — each generation dropped letters. | Wikipedia | | make | Make (to build/construct) | Stuart Feldman wrote it over a weekend in 1976 after Steve Johnson wasted a morning debugging a correct program that hadn't been recompiled. | Wikipedia | | man | Manual | The first Unix Programmer's Manual was published in 1971 — 'man' made it available on-line (meaning interactive, not internet). | Wikipedia | | mv | Move | Moves or renames — in Unix, renaming IS moving, because a filename is just a directory entry pointing at an inode. | Wikipedia | | nano | Nano's ANOther editor (recursive acronym) | Originally called TIP (TIP Isn't Pico), renamed to avoid conflict — 'nano' is one SI prefix larger than 'pico', the editor it clones. | Wikipedia | | nc | Network Cat (netcat) | Written by a hacker known only as 'Hobbit' in 1995 — applies Unix's cat philosophy (read/write streams) to network sockets. | Wikipedia | | nm | Name List | V7 man pages called the symbol table a 'name list' — the abbreviation stuck long after the terminology didn't. | Wikipedia | | nroff | Newer ROFF | The name traces back through roff to RUNOFF (1964), named for the phrase 'to run off a document' — as in, run off some copies. | Wikipedia | | od | Octal Dump | One of the oldest Unix commands (Version 1), named for its default output format before hex became standard. | Wikipedia | | paste | Paste (to join things together) | Also by Gottfried Luderer — the counterpart to cut, it merges files side-by-side like pasting columns of a spreadsheet. | Wikipedia | | patch | Patch (to repair or update) | Larry Wall (yes, the Perl guy) wrote it in 1985 — enabled swapping small change-sets instead of whole files, before version control existed. | Wikipedia | | ping | Named after the sound of sonar | Mike Muuss named it after the sonar pulse in 1983 — 'Packet InterNet Groper' is a backronym from Dave Mills that Muuss never endorsed. | Wikipedia | | ps | Process Status | Version 3 Unix (1973) — its BSD and System V flag conventions never reconciled, which is why ps aux and ps -ef both exist. | Wikipedia | | pwd | Print Working Directory | Descended from Multics 'print_wdir' — POSIX diplomatically avoids 'print' and says 'return working directory name.' | Wikipedia | | rc | Run Commands | Named after RUNCOM, a 1963 CTSS facility by Louis Pouzin — the same ancestry behind every .bashrc, .vimrc, and .zshrc. | Wikipedia | | rm | Remove | No trash can, no undo, no confirmation by default — Unix's most unforgiving two letters. | Wikipedia | | scp | Secure Copy | The encrypted successor to BSD's rcp (remote copy) — SSH encryption grafted onto the old remote copy protocol. | Wikipedia | | sed | Stream Editor | Lee McMahon wanted g/re/s and built it as a non-interactive editor that reads stdin line by line. | Wikipedia | | shuf | Shuffle | A GNU coreutils addition by Paul Eggert — straightforward name, no folklore, just shuffles lines like a deck of cards. | Wikipedia | | sort | Sort (to arrange in order) | Ken Thompson wrote it for Version 1 Unix — by V5 he'd invented the '-' convention for stdin because sort needed both files and pipes. | Wikipedia | | ssh | Secure Shell | Tatu Ylonen created it in 1995 after a password-sniffing attack at Helsinki University — port 22 sits right between FTP (21) and Telnet (23). | Wikipedia | | stty | Set TTY (Set Teletype) | Version 2 Unix — 'tty' itself comes from 'teletype', the physical machines that were the first Unix terminals. | Wikipedia | | su | Substitute User | Universally misremembered as 'super user' because that's how everyone uses it — but the man pages say 'substitute user.' | Wikipedia | | sudo | Superuser Do | Conceived around 1980 at SUNY Buffalo — officially evolved from 'superuser do' to 'substitute user do' as it gained the ability to run as any user. | Wikipedia | | tac | 'cat' spelled backwards | Does what cat does, but in reverse line order — and the name is literally 'cat' backwards. Peak Unix humor. | Wikipedia | | tail | Tail (the end of something) | Counterpart to head — its '-f' (follow) flag for watching live log output became one of Unix's most beloved features. | Wikipedia | | tar | Tape Archive | Born in V7 Unix (1979) to wrangle magnetic tape drives — replaced 'tp', which replaced 'tap', each name getting lazier. | Wikipedia | | tee | Named after the T-shaped pipe fitting | Splits a data stream like a plumber's T-joint — one copy to stdout, one to a file. The metaphor is physical. | Wikipedia | | top | Shows the 'top' CPU consumers (?) | Written by William LeFebvre in 1984 — 'Table Of Processes' is a backronym; it just shows whatever's on top. | Wikipedia | | tput | Terminal Put (?) | Bill Joy wrote the first version for 4BSD in 1980 — it 'puts' terminal capabilities (bold, color, cursor movement) into your scripts. | Wikipedia | | tr | Translate (or Transliterate) | Douglas McIlroy wrote it for V4 Unix, inherited from Multics — the oldest surviving single-purpose text transformer. | Wikipedia | | traceroute | Trace Route | Van Jacobson wrote it in 1987 using a clever TTL-expiry trick suggested by Steve Deering — the name simply describes what it does. | Wikipedia | | troff | Typesetter ROFF | When Bell Labs got a phototypesetter, Ossanna forked nroff for proportional fonts — 't' distinguished typeset from terminal output. | Wikipedia | | uniq | Unique | Only detects adjacent duplicates by design — built as a filter for already-sorted data where identical lines sit together. | Wikipedia | | vi | Visual (mode of ex) | Bill Joy's visual mode for ex became so popular that the two-character shortcut to enter it became the command's entire identity. | Wikipedia | | wc | Word Count | Version 1 Unix (1971) — originally counted words, text lines, and roff control lines, doubling as a typesetting assistant. | Wikipedia | | wget | World Wide Web get | Portmanteau of 'Web' and 'get' — originally called 'Geturl' before adopting wget in version 1.4.0, November 1996. | Wikipedia | | xargs | eXtended ARGuments | Bridges the gap for commands that take arguments but not stdin — converts piped input into command-line arguments. | Wikipedia | | yacc | Yet Another Compiler-Compiler | Stephen Johnson's self-deprecating name belied a tool so influential he later said its contribution to Unix and C was what he was proudest of. | Wikipedia |

Modern Replacements

| Command | Stands For / Meaning | Origin / Lore | Source | |---------|----------------------|---------------|--------| | bat | A cat with wings | Give the Unix cat command wings (syntax highlighting, git integration) and you get a bat. The animal pun is the whole pitch. | GitHub | | btm | bottom — the opposite of top | Named as a cheeky antonym to the top command it replaces; btm mirrors how top is already three letters. | GitHub | | delta | Delta (Δ) — the symbol for difference (?) | A diff viewer named after the universal symbol for difference; every diff is literally a delta between two states. | GitHub | | dust | du + Rust | The package is literally named du-dust in crate registries, making the portmanteau explicit. | GitHub | | eza | Minimal rename of exa | Community fork of exa after its author went unreachable — renamed because they lacked permission to keep the original name. | GitHub | | fd | Shortened form of find (?) | Half the letters of find, roughly half the keystrokes — naming mirrors the tool's philosophy of doing less to get more. | GitHub | | fish | Friendly Interactive SHell | Axel Liljencrantz created it in 2005 — the acronym is the design philosophy: be friendly first, POSIX second (or never). | Wikipedia | | fzf | FuZzy Finder (?) | Three consonants that capture the entire product: fuzzy finding, nothing more, nothing less. | GitHub | | hyperfine | Named after the hyperfine transition of caesium-133 | A benchmarking tool named after the atomic phenomenon that literally defines the SI second. | GitHub | | jq | JSON query (?) | Two letters that launched a thousand pipelines; jq did for JSON what awk did for columnar text. | GitHub | | procs | Processes | Where ps cryptically abbreviates 'process status', procs just says what it shows: processes. | GitHub | | rg | ripgrep — 'rip' as in tear through text fast | Author intended 'rip' as speed; the 'RIP grep' double meaning didn't dawn on him until after release. | GitHub | | sd | Search & Displace | s[earch] & d[isplace] — a cheekier, more intuitive framing than sed's 'stream editor.' | GitHub | | starship | Space-themed successor to Spaceship prompt (?) | Spaceship was a Zsh prompt 'for astronauts'; Starship is the faster, cross-shell Rust evolution of that concept. | GitHub | | tldr | Too Long; Didn't Read | Man pages are thorough but intimidating — tldr pages are the 'skip to the examples' version of documentation. | GitHub | | tmux | Terminal Multiplexer | Nicholas Marriott created it in 2007 as a BSD-licensed alternative to GNU Screen — the name is a straight abbreviation. | Wikipedia | | tokei | Japanese 時計 (tokei) meaning clock | The predecessor tool is cloc (sounds like clock); tokei is the Japanese word for clock — a bilingual pun. | GitHub | | yq | YAML query | The name is the entire pitch: it's jq, but for YAML (and now XML, TOML, CSV, and properties too). | GitHub | | zoxide | z + oxide (Rust = iron oxide) (?) | Combines its spiritual ancestor (the z shell plugin) with a nod to its Rust implementation via chemistry. | GitHub | | zsh | Z Shell | Paul Falstad saw his Princeton TA Zhong Shao's login name 'zsh' and thought it sounded like a good shell name. | Wikipedia |

CLI Usage

whyis grep          # look up a single command
whyis grep awk sed  # look up multiple
whyis --list        # list all commands
whyis --random      # random entry
npm install -g @centricle/whyis

Contributing

PRs welcome. Every entry needs:

  1. An entry in data/commands.json
  2. A citation URL (official docs, author statement, or Wikipedia)
  3. If the origin is disputed, set "uncertain": true

Run npm run readme to regenerate this table after editing the JSON.

License

MIT