Skip to content

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

License

Notifications You must be signed in to change notification settings

centricle/whyis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors