Every shell command, in every shell.
The PowerShell equivalent of grep. The cmd version of ls. The fish syntax for find. One canonical answer per command, no signup, no fluff.
Popular commands
By task
All tasks →- Find files modified today
List every file changed in the last 24 hours, recursively from the current directory.
- Count lines in a file
Get the line count of one or more files, recursively or in a single command.
- Find and replace text in files
Substitute one string for another inside a file (or every file in a tree), in place.
- List files recursively
Print every file under a directory tree, optionally as a flat list of full paths.
- Find files by name
Locate files matching a glob pattern (e.g. `*.log`) anywhere under the current tree.
- Delete files older than 30 days
Remove files whose last-modified time is more than 30 days ago, recursively.
Compare two shells
All comparisons →- Bash vs PowerShell
The headline difference: bash pipes bytes of text, PowerShell pipes typed .NET objects.
- Zsh vs Fish
Both ditched bash defaults — zsh stayed POSIX-ish, fish broke the syntax to make it friendlier.
- Bash vs Zsh
Zsh is "bash with the rough edges sanded off" — almost script-compatible, much nicer interactively.
- PowerShell vs cmd.exe
Both ship on Windows, but they're not the same tool — one pipes objects, one pipes text, and the syntax has nothing in common.
- Bash vs Fish
Fish is everything bash isn't friendly to do — at the cost of bash script compatibility.
- cmd.exe vs Fish
Two shells that share less than any other pair on shellmap: a 1993 Windows text-only batch host vs a modern non-POSIX Unix prompt-first shell.
- Zsh vs PowerShell
Default macOS shell vs default Windows shell — the most common cross-laptop porting comparison.
- Fish vs PowerShell
Two opposite design philosophies: fish optimizes the interactive prompt; PowerShell optimizes typed-object scripting.
- Bash vs cmd.exe
Linux's default scripting shell vs Windows' legacy text shell — the foundational layer of the WSL porting conversation.
- Zsh vs cmd.exe
Default macOS shell vs default Windows batch shell — the porting context when distributing Mac-authored scripts to Windows users.
- sh (POSIX) vs Bash
`sh` is POSIX — the portable minimum. Bash is sh + 20 years of GNU extensions. Knowing the difference is the difference between "works on Alpine" and "needs a Dockerfile rewrite".
- dash vs Bash
Why your `#!/bin/sh` script breaks on Debian and Ubuntu. dash is the strict POSIX shell that lives at `/bin/sh` on most Linux distros — fast, small, and unforgiving toward bash extensions.
- sh (POSIX) vs Zsh
macOS has shipped Zsh as `/bin/zsh` since Catalina (2019) but its `/bin/sh` is still strict POSIX. This compare is the bridge: which zsh features survive a switch back to `sh`, and what the macOS-trained developer trips over in CI.
- sh (POSIX) vs Fish
Fish is the only mainstream Unix shell that deliberately *rejects* POSIX. Every other comparison on this site is "POSIX plus extensions" — sh-vs-fish is "POSIX vs a parallel-universe syntax". This is the compare you need before you `chsh -s /usr/bin/fish`.
- sh (POSIX) vs PowerShell
A POSIX shell script and a PowerShell script are not two dialects of one language — they are two languages. `sh` pipes bytes; PowerShell pipes typed .NET objects. This is the compare you need before porting a `/bin/sh` install script to a Windows installer, or asking "why does my Linux one-liner do nothing in pwsh?".
- sh (POSIX) vs cmd.exe
You are porting a `/bin/sh` install script — `set -e`, `$(curl …)`, `for f in *; do …; done` — to a `.bat` / `.cmd` installer you can double-click on Windows. The two are both "text-mode shells", and that's where the similarity ends: variable syntax, conditionals, loops, command substitution, arithmetic, line endings, escape characters, and exit-code conventions all change.
- dash vs sh (POSIX)
A bait-and-switch comparison: `dash` IS an implementation of `sh`. The interesting question is "which sh am I actually running?" — Debian/Ubuntu = dash, Alpine = busybox ash, macOS / RHEL / Fedora = bash --posix, AIX / OpenBSD = ksh. Each is POSIX-conformant on paper; each has its own non-POSIX extras and refusals.
Translate between shells
Live translator →Reference
Open glossary →Browse by shell
- BashThe default Linux shell. Default on macOS through 10.14, still ubiquitous in scripts.
- ZshDefault macOS shell since Catalina. Mostly bash-compatible with nicer globbing and prompts.
- FishUser-friendly Unix shell. Distinct syntax: no $((..)), no [[..]], pipes are the same.
- PowerShellObject-oriented shell on Windows; cross-platform via pwsh. Uses verb-noun cmdlets.
- cmd.exeThe legacy Windows command prompt. Limited but present on every Windows install.