Introduction
thefuck is a Python CLI app that listens for failed commands in your shell and proposes corrected alternatives. When you mistype a command, forget sudo, or use wrong flags, just type fuck and it will fix and re-run the command for you.
What thefuck Does
- Detects failed shell commands based on exit codes and stderr output
- Matches failures against a library of built-in correction rules
- Suggests the most likely corrected command automatically
- Supports custom user-defined rules for project-specific workflows
- Works across Bash, Zsh, Fish, PowerShell, and tcsh
Architecture Overview
thefuck intercepts the previous command's exit code and output via a shell alias. It then passes that context through a pipeline of rule matchers, each of which checks whether it can fix the error. Rules are plain Python modules with match() and get_new_command() functions. The highest-priority matching rule produces the corrected command, which is presented to the user or executed immediately based on configuration.
Self-Hosting & Configuration
- Install via pip:
pip install thefuckor via Homebrew:brew install thefuck - Initialize the alias in your shell profile with
eval $(thefuck --alias) - Configure settings in
~/.config/thefuck/settings.py(timeout, rules, priority) - Set
require_confirmation = Falseto auto-execute corrections without prompting - Add custom rules as Python files in
~/.config/thefuck/rules/
Key Features
- Ships with 80+ built-in rules covering git, docker, pip, apt, cargo, and more
- Learns from your corrections and adjusts rule priority over time
- Supports instant mode for near-zero latency corrections
- Custom aliases let you rename the command to anything you prefer
- Extensible rule system with a simple two-function Python interface
Comparison with Similar Tools
- ShellCheck — static analysis for scripts; thefuck corrects interactive commands in real time
- zsh-autosuggestions — suggests from history; thefuck actively fixes failed commands
- fuck (Ruby) — earlier concept; thefuck has a much larger rule library and active maintenance
- pay-respects — Rust alternative with faster startup but fewer built-in rules
FAQ
Q: Does thefuck slow down my shell? A: In normal mode the alias only activates when you explicitly type the trigger. Instant mode adds a small hook but is designed to stay under 100ms.
Q: Can I use a different trigger word?
A: Yes. Pass a custom name to the alias: eval $(thefuck --alias fix) and then type fix instead.
Q: Does it work with zsh and oh-my-zsh? A: Yes. There is also a bundled oh-my-zsh plugin for convenience.
Q: Is it safe to auto-run corrections? A: By default it asks for confirmation. You can enable auto-run, but review the rule list first to avoid surprises with destructive commands.