Muscle Memory
Same ls -la, grep -r, ps aux commands you already know. Same flags, same output format. No new syntax to learn.
Muscle Memory
Same ls -la, grep -r, ps aux commands you already know. Same flags, same output format. No new syntax to learn.
Typed Pipeline
Objects survive through grep, sort, head, tail. Pipe ls -la | grep '.ps1' and get LsEntry objects back, not strings to parse.
Cross-Platform
Windows, Linux, macOS. No WSL overhead, no VM, no filesystem boundary. Runs everywhere PowerShell runs.
Bash-style commands that return real objects:
PS> ls -la | grep '.ps1' | sort -k5 -h-rw-r--r-- 1 beagle wheel 141234 Apr 2 09:46 PsBash.psm1-rw-r--r-- 1 beagle wheel 4521 Apr 2 00:57 PsBash.psd1
PS> $files = ls -la | grep '.ps1' | sort -k5 -hPS> $files.NamePsBash.psm1PsBash.psd1PS> $files[0].SizeBytes141234The output looks like bash. The pipeline carries typed objects. You get both.
| Task | Bash | PsBash | Native PowerShell |
|---|---|---|---|
| List files with details | ls -la | ls -la | Get-ChildItem | Format-List |
| Find text in files | grep -r 'TODO' . | grep -r 'TODO' . | Select-String -Pattern 'TODO' -Path . -Recurse |
| Sort by column | sort -k5 -h | sort -k5 -h | Sort-Object { $_.Length } |
| First 10 lines | head -n 10 file.txt | head -n 10 file.txt | Get-Content file.txt -Head 10 |
| Count lines | wc -l *.ps1 | wc -l *.ps1 | (Get-Content *.ps1 | Measure-Object -Line).Lines |
Same command. Typed objects. No string parsing.
PsBash also ships a standalone interactive shell: type bash, run it on a warm PowerShell runspace, and get the line-editing, history, and completion experience a bash user expects — on every platform.
Fuzzy Ctrl-R
A full-screen, ranked history search — closer to fzf/atuin than bash. Boosts commands run in this directory, recently, and often. History search →
Smart cd: z & zi
Zoxide-style jumping, built in. z core lands on the directory you most likely mean,
ranked by frecency. Directory jumping →
Real completion
Bash flags and PowerShell cmdlet parameters, ValidateSet values, and a floating
flag-doc panel with an F1 man-page browser. Completion →
!! and aliases
!!, !$, ^old^new bang-history in PowerShell, plus full-syntax bash alias (pipes
and all). Bang history →
Pipe a bash command’s typed output into Format-Styled and theme your terminal with real
CSS — selectors, classes, colors, alignment. Or open it as an interactive, navigable TUI.
ps aux | Format-Styled -Style ps # CSS-themed process tableping example.com | Show-Styled # full-screen, auto-themed by latencyls -la | browse # arrow-key file workbench, with actionsCSS-styled output
Ten built-in stylesheets, custom themes from ~/.config/ps-bash/styles/, NO_COLOR-aware.
Styled output →
Interactive TUIs from a .psm1
Build a navigable workbench by writing a PowerShell module — adapters and actions, no C#, no TUI framework. Interactive TUIs →
68 Commands
ls, grep, awk, jq, sed, find, tar, and 61 more Unix commands reimplemented as native PowerShell cmdlets.
775 Tests
Every command tested across flag combinations, edge cases, and pipeline scenarios.
3 Platforms
Windows, Linux, macOS. CI-verified on all three.
20 Typed Objects
LsEntry, GrepMatch, PsEntry, WcResult and more. Real properties, not text.