Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
PyPI

thefuck 3.32

pip install thefuck

Latest version

Released:

Magnificent app which corrects your previous console command

Verified details

These details have beenverified by PyPI
Maintainers
Avatar for nvbn.rm from gravatar.com nvbn.rmAvatar for scorphus from gravatar.com scorphus

Unverified details

These details havenot been verified by PyPI
Project links
Meta

Project description

The Fuck is a magnificent app, inspired by a[@liamosaur](https://twitter.com/liamosaur/)tweet,that corrects errors in previous console commands.

IsThe Fuck too slow?Try the experimental instantmode!

gif with examples

More examples:

apt-getinstallvimE:Couldnotopenlockfile/var/lib/dpkg/lock-open(13:Permissiondenied)E:Unabletolocktheadministrationdirectory(/var/lib/dpkg/),areyouroot?fucksudoapt-getinstallvim[enter/↑/↓/ctrl+c][sudo]passwordfornvbn:Readingpackagelists...Done...
gitpushfatal:Thecurrentbranchmasterhasnoupstreambranch.Topushthecurrentbranchandsettheremoteasupstream,usegitpush--set-upstreamoriginmasterfuckgitpush--set-upstreamoriginmaster[enter/↑/↓/ctrl+c]Countingobjects:9,done....
puthonNocommand'puthon'found,didyoumean:Command'python'frompackage'python-minimal'(main)Command'python'frompackage'python3'(main)zsh:commandnotfound:puthonfuckpython[enter/↑/↓/ctrl+c]Python3.4.2(default,Oct82014,13:08:17)...
gitbrnchgit:'brnch'isnotagitcommand.See'git --help'.Didyoumeanthis?branchfuckgitbranch[enter/↑/↓/ctrl+c]*master
leinrpl'rpl'isnotatask.See'lein help'.Didyoumeanthis?replfuckleinrepl[enter/↑/↓/ctrl+c]nREPLserverstartedonport54848onhost127.0.0.1-nrepl://127.0.0.1:54848REPL-y0.3.1...

If you’re not afraid of blindly running corrected commands, therequire_confirmationsettings option can bedisabled:

apt-getinstallvimE:Couldnotopenlockfile/var/lib/dpkg/lock-open(13:Permissiondenied)E:Unabletolocktheadministrationdirectory(/var/lib/dpkg/),areyouroot?fucksudoapt-getinstallvim[sudo]passwordfornvbn:Readingpackagelists...Done...

Contents

  1. Requirements

  2. Installations

  3. Updating

  4. How it works

  5. Creating your own rules

  6. Settings

  7. Third party packages withrules

  8. Experimental instant mode

  9. Developing

  10. License

Requirements

  • python (3.4+)

  • pip

  • python-dev

Back to Contents

Installation

On macOS or Linux, you can installThe Fuck viaHomebrew:

brewinstallthefuck

On Ubuntu / Mint, installThe Fuck with the following commands:

sudoaptupdatesudoaptinstallpython3-devpython3-pippython3-setuptoolspip3installthefuck--user

On FreeBSD, installThe Fuck with the following commands:

pkginstallthefuck

On ChromeOS, installThe Fuck usingchromebrew with thefollowing command:

crewinstallthefuck

On other systems, installThe Fuck by usingpip:

pipinstallthefuck

Alternatively, you may use an OS package manager (OS X, Ubuntu,Arch).

# It is recommended that you place this command in your.bash_profile,.bashrc,.zshrc or other startup script:

eval$(thefuck--alias)# You can use whatever you want as an alias, like for Mondays:eval$(thefuck--aliasFUCK)

Or in your shell config (Bash, Zsh, Fish, Powershell,tcsh).

Changes are only available in a new shell session. To make changesimmediately available, runsource~/.bashrc (or your shell configfile like.zshrc).

To run fixed commands without confirmation, use the--yeah option(or just-y for short, or--hard if you’re especiallyfrustrated):

fuck--yeah

To fix commands recursively until succeeding, use the-r option:

fuck-r

Back to Contents

Updating

pip3installthefuck--upgrade

Note: Alias functionality was changed in v1.34 of The Fuck

Uninstall

To removeThe Fuck, reverse the installation process: - erase orcommentthefuck alias line from your Bash, Zsh, Fish, Powershell,tcsh, … shell config - use your package manager (brew, pip3, pkg, crew,pip) to uninstall the binaries

How it works

The Fuck attempts to match the previous command with a rule. If amatch is found, a new command is created using the matched rule andexecuted. The following rules are enabled by default:

  • adb_unknown_command – fixes misspelled commands likeadb logcta;

  • ag_literal – adds-Q toag when suggested;

  • aws_cli – fixes misspelled commands likeaws dynamdb scan;

  • az_cli – fixes misspelled commands likeaz providers;

  • cargo – runscargo build instead ofcargo;

  • cargo_no_command – fixes wrongs commands likecargo buid;

  • cat_dir – replacescat withls when you try tocat adirectory;

  • cd_correction – spellchecks and correct failed cd commands;

  • cd_cs – changescs tocd;

  • cd_mkdir – creates directories before cd’ing into them;

  • cd_parent – changescd.. tocd ..;

  • chmod_x – add execution bit;

  • choco_install – append common suffixes for chocolatey packages;

  • composer_not_command – fixes composer command name;

  • conda_mistype – fixes conda commands;

  • cp_create_destination – creates a new directory when you attempttocp ormv to a non existent one

  • cp_omitting_directory – adds-a when youcp directory;

  • cpp11 – adds missing-std=c++11 tog++ orclang++;

  • dirty_untar – fixestar x command that untarred in thecurrent directory;

  • dirty_unzip – fixesunzip command that unzipped in thecurrent directory;

  • django_south_ghost – adds--delete-ghost-migrations to failedbecause ghosts django south migration;

  • django_south_merge – adds--merge to inconsistent djangosouth migration;

  • docker_login – executes adocker login and repeats theprevious command;

  • docker_not_command – fixes wrong docker commands likedocker tags;

  • docker_image_being_used_by_container ‐ removes the container thatis using the image before removing the image;

  • dry – fixes repetitions likegit git push;

  • fab_command_not_found – fix misspelled fabric commands;

  • fix_alt_space – replaces Alt+Space with Space character;

  • fix_file – opens a file with an error in your$EDITOR;

  • gem_unknown_command – fixes wronggem commands;

  • git_add – fixes“pathspec ‘foo’ did not match any file(s) knownto git.”;

  • git_add_force – adds--force togit add<pathspec>...when paths are .gitignore’d;

  • git_bisect_usage – fixesgit bisect strt,git bisect goood,git bisect rset, etc. when bisecting;

  • git_branch_delete – changesgit branch-d togit branch-D;

  • git_branch_delete_checked_out – changesgit branch-d togit checkout master && git branch-D when trying to delete achecked out branch;

  • git_branch_exists – offersgit branch-d foo,git branch-D foo orgit checkout foo when creating a branchthat already exists;

  • git_branch_list – catchesgit branch list in place ofgit branch and removes created branch;

  • git_branch_0flag – fixes commands such asgit branch 0v andgit branch 0r removing the created branch;

  • git_checkout – fixes branch name or creates new branch;

  • git_clone_git_clone – replacesgit clone git clone ... withgit clone ...

  • git_commit_add – offersgit commit-a ... orgit commit-p ... after previous commit if it failed becausenothing was staged;

  • git_commit_amend – offersgit commit--amend after previouscommit;

  • git_commit_reset – offersgit reset HEAD~ after previouscommit;

  • git_diff_no_index – adds--no-index to previousgit diffon untracked files;

  • git_diff_staged – adds--staged to previousgit diff withunexpected output;

  • git_fix_stash – fixesgit stash commands (misspelledsubcommand and missingsave);

  • git_flag_after_filename – fixesfatal: bad flag'...' after filename

  • git_help_aliased – fixesgit help <alias> commands replacingwith the aliased command;

  • git_hook_bypass – adds--no-verify flag previous togit am,git commit, orgit push command;

  • git_lfs_mistype – fixes mistypedgit lfs <command> commands;

  • git_main_master – fixes incorrect branch name betweenmainandmaster

  • git_merge – adds remote to branch names;

  • git_merge_unrelated – adds--allow-unrelated-histories whenrequired

  • git_not_command – fixes wrong git commands likegit brnch;

  • git_pull – sets upstream before executing previousgit pull;

  • git_pull_clone – clones instead of pulling when the repo does notexist;

  • git_pull_uncommitted_changes – stashes changes before pulling andpops them afterwards;

  • git_push – adds--set-upstream origin $branch to previousfailedgit push;

  • git_push_different_branch_names – fixes pushes when local branchname does not match remote branch name;

  • git_push_pull – runsgit pull whenpush was rejected;

  • git_push_without_commits – Creates an initial commit if youforget and onlygit add ., when setting up a new project;

  • git_rebase_no_changes – runsgit rebase--skip instead ofgit rebase--continue when there are no changes;

  • git_remote_delete – replacesgit remote delete remote_namewithgit remote remove remote_name;

  • git_rm_local_modifications – adds-f or--cached when youtry torm a locally modified file;

  • git_rm_recursive – adds-r when you try torm adirectory;

  • git_rm_staged – adds-f or--cached when you try torm a file with staged changes

  • git_rebase_merge_dir – offersgit rebase(--continue |--abort |--skip) or removing the.git/rebase-merge dir when a rebase is in progress;

  • git_remote_seturl_add – runsgit remote add whengit remote set_url on nonexistent remote;

  • git_stash – stashes your local modifications before rebasing orswitching branch;

  • git_stash_pop – adds your local modifications before poppingstash, then resets;

  • git_tag_force – adds--force togit tag <tagname> whenthe tag already exists;

  • git_two_dashes – adds a missing dash to commands likegit commit-amend orgit rebase-continue;

  • go_run – appends.go extension when compiling/running Goprograms;

  • go_unknown_command – fixes wronggo commands, for examplego bulid;

  • gradle_no_task – fixes not found or ambiguousgradle task;

  • gradle_wrapper – replacesgradle with./gradlew;

  • grep_arguments_order – fixesgrep arguments order forsituations likegrep-lir . test;

  • grep_recursive – adds-r when you try togrep directory;

  • grunt_task_not_found – fixes misspelledgrunt commands;

  • gulp_not_task – fixes misspelledgulp tasks;

  • has_exists_script – prepends./ when script/binary exists;

  • heroku_multiple_apps – add--app <app> toheroku commandslikeheroku pg;

  • heroku_not_command – fixes wrongheroku commands likeheroku log;

  • history – tries to replace command with the most similar commandfrom history;

  • hostscli – tries to fixhostscli usage;

  • ifconfig_device_not_found – fixes wrong device names likewlan0 towlp2s0;

  • java – removes.java extension when running Java programs;

  • javac – appends missing.java when compiling Java files;

  • lein_not_task – fixes wronglein tasks likelein rpl;

  • long_form_help – changes-h to--help when the short formversion is not supported

  • ln_no_hard_link – catches hard link creation on directories,suggest symbolic link;

  • ln_s_order – fixesln-s arguments order;

  • ls_all – adds-A tols when output is empty;

  • ls_lah – adds-lah tols;

  • man – changes manual section;

  • man_no_space – fixes man commands without spaces, for examplemandiff;

  • mercurial – fixes wronghg commands;

  • missing_space_before_subcommand – fixes command with missingspace likenpminstall;

  • mkdir_p – adds-p when you try to create a directory withouta parent;

  • mvn_no_command – addsclean package tomvn;

  • mvn_unknown_lifecycle_phase – fixes misspelled life cycle phaseswithmvn;

  • npm_missing_script – fixesnpm custom script name innpmrun-script <script>;

  • npm_run_script – adds missingrun-script for customnpmscripts;

  • npm_wrong_command – fixes wrong npm commands likenpm urgrade;

  • no_command – fixes wrong console commands, for examplevom/vim;

  • no_such_file – creates missing directories withmv andcpcommands;

  • omnienv_no_such_command – fixes wrong commands forgoenv,nodenv,pyenv andrbenv (eg.:pyenv isntall orgoenv list);

  • open – either prependshttp:// to address passed toopenor create a new file or directory and passes it toopen;

  • pip_install – fixes permission issues withpip installcommands by adding--user or prependingsudo if necessary;

  • pip_unknown_command – fixes wrongpip commands, for examplepip instatl/pip install;

  • php_s – replaces-s by-S when trying to run a local phpserver;

  • port_already_in_use – kills process that bound port;

  • prove_recursively – adds-r when called with directory;

  • python_command – prependspython when you try to runnon-executable/without./ python script;

  • python_execute – appends missing.py when executing Pythonfiles;

  • python_module_error – fixes ModuleNotFoundError by trying topip install that module;

  • quotation_marks – fixes uneven usage of' and" whencontaining args’;

  • path_from_history – replaces not found path with a similarabsolute path from history;

  • rails_migrations_pending – runs pending migrations;

  • react_native_command_unrecognized – fixes unrecognizedreact-native commands;

  • remove_shell_prompt_literal – remove leading shell prompt symbol$, common when copying commands from documentations;

  • remove_trailing_cedilla – remove trailing cedillasç, acommon typo for European keyboard layouts;

  • rm_dir – adds-rf when you try to remove a directory;

  • scm_correction – corrects wrong scm likehg log togit log;

  • sed_unterminated_s – adds missing ‘/’ tosed’sscommands;

  • sl_ls – changessl tols;

  • ssh_known_hosts – removes host fromknown_hosts on warning;

  • sudo – prependssudo to the previous command if it failedbecause of permissions;

  • sudo_command_from_user_path – runs commands from users$PATHwithsudo;

  • switch_lang – switches command from your local layout to en;

  • systemctl – correctly orders parameters of confusingsystemctl;

  • terraform_init.py – runterraform init before plan or apply;

  • test.py – runspy.test instead oftest.py;

  • touch – creates missing directories before “touching”;

  • tsuru_login – runstsuru login if not authenticated orsession expired;

  • tsuru_not_command – fixes wrongtsuru commands liketsuru shell;

  • tmux – fixestmux commands;

  • unknown_command – fixes hadoop hdfs-style “unknown command”, forexample adds missing ‘-’ to the command onhdfs dfs ls;

  • unsudo – removessudo from previous command if a processrefuses to run on superuser privilege.

  • vagrant_up – starts up the vagrant instance;

  • whois – fixeswhois command;

  • workon_doesnt_exists – fixesvirtualenvwrapper env name ossuggests to create new.

  • wrong_hyphen_before_subcommand – removes an improperly placedhyphen (apt-install ->apt install,git-log ->git log, etc.)

  • yarn_alias – fixes aliasedyarn commands likeyarn ls;

  • yarn_command_not_found – fixes misspelledyarn commands;

  • yarn_command_replaced – fixes replacedyarn commands;

  • yarn_help – makes it easier to openyarn documentation;

Back to Contents

The following rules are enabled by default on specific platforms only:

  • apt_get – installs app from apt if it not installed (requirespython-commandnotfound /python3-commandnotfound);

  • apt_get_search – changes trying to search usingapt-get withsearching usingapt-cache;

  • apt_invalid_operation – fixes invalidapt andapt-getcalls, likeapt-get isntall vim;

  • apt_list_upgradable – helps you runapt list--upgradableafterapt update;

  • apt_upgrade – helps you runapt upgrade afterapt list--upgradable;

  • brew_cask_dependency – installs cask dependencies;

  • brew_install – fixes formula name forbrew install;

  • brew_reinstall – turnsbrew install <formula> intobrew reinstall <formula>;

  • brew_link – adds--overwrite--dry-run if linking fails;

  • brew_uninstall – adds--force tobrew uninstall ifmultiple versions were installed;

  • brew_unknown_command – fixes wrong brew commands, for examplebrew docto/brew doctor;

  • brew_update_formula – turnsbrew update <formula> intobrew upgrade <formula>;

  • dnf_no_such_command – fixes mistyped DNF commands;

  • nixos_cmd_not_found – installs apps on NixOS;

  • pacman – installs app withpacman if it is not installed(usesyay oryaourt if available);

  • pacman_invalid_option – replaces lowercasepacman optionswith uppercase.

  • pacman_not_found – fixes package name withpacman,yay oryaourt.

  • yum_invalid_operation – fixes invalidyum calls, likeyum isntall vim;

The following commands are bundled withThe Fuck, but are not enabledby default:

  • git_push_force – adds--force-with-lease to agit push(may conflict withgit_push_pull);

  • rm_root – adds--no-preserve-root torm-rf / command.

Back to Contents

Creating your own rules

To add your own rule, create a file namedyour-rule-name.py in~/.config/thefuck/rules. The rule file must contain two functions:

match(command:Command)->boolget_new_command(command:Command)->str|list[str]

Additionally, rules can contain optional functions:

side_effect(old_command:Command,fixed_command:str)->None

Rules can also contain the optional variablesenabled_by_default,requires_output andpriority.

Command has three attributes:script,output andscript_parts. Your rule should not changeCommand.

Rules api changed in 3.0: To access a rule’s settings, import itwithfrom thefuck.conf import settings

settings is a special object assembled from~/.config/thefuck/settings.py, and values from env (see morebelow).

A simple example rule for running a script withsudo:

defmatch(command):return('permission denied'incommand.output.lower()or'EACCES'incommand.output)defget_new_command(command):return'sudo{}'.format(command.script)# Optional:enabled_by_default=Truedefside_effect(command,fixed_command):subprocess.call('chmod 777 .',shell=True)priority=1000# Lower first, default is 1000requires_output=True

More examples ofrules,utility functions forrules,app/os-specifichelpers.

Back to Contents

Settings

SeveralThe Fuck parameters can be changed in the file$XDG_CONFIG_HOME/thefuck/settings.py ($XDG_CONFIG_HOME defaultsto~/.config):

  • rules – list of enabled rules, by defaultthefuck.const.DEFAULT_RULES;

  • exclude_rules – list of disabled rules, by default[];

  • require_confirmation – requires confirmation before running newcommand, by defaultTrue;

  • wait_command – the max amount of time in seconds for gettingprevious command output;

  • no_colors – disable colored output;

  • priority – dict with rules priorities, rule with lowerpriority will be matched first;

  • debug – enables debug output, by defaultFalse;

  • history_limit – the numeric value of how many history commandswill be scanned, like2000;

  • alter_history – push fixed command to history, by defaultTrue;

  • wait_slow_command – max amount of time in seconds for gettingprevious command output if it inslow_commands list;

  • slow_commands – list of slow commands;

  • num_close_matches – the maximum number of close matches tosuggest, by default3.

  • excluded_search_path_prefixes – path prefixes to ignore whensearching for commands, by default[].

An example ofsettings.py:

rules=['sudo','no_command']exclude_rules=['git_push']require_confirmation=Truewait_command=10no_colors=Falsepriority={'sudo':100,'no_command':9999}debug=Falsehistory_limit=9999wait_slow_command=20slow_commands=['react-native','gradle']num_close_matches=5

Or via environment variables:

  • THEFUCK_RULES – list of enabled rules, likeDEFAULT_RULES:rm_root orsudo:no_command;

  • THEFUCK_EXCLUDE_RULES – list of disabled rules, likegit_pull:git_push;

  • THEFUCK_REQUIRE_CONFIRMATION – require confirmation beforerunning new command,true/false;

  • THEFUCK_WAIT_COMMAND – the max amount of time in seconds forgetting previous command output;

  • THEFUCK_NO_COLORS – disable colored output,true/false;

  • THEFUCK_PRIORITY – priority of the rules, likeno_command=9999:apt_get=100, rule with lowerpriority will bematched first;

  • THEFUCK_DEBUG – enables debug output,true/false;

  • THEFUCK_HISTORY_LIMIT – how many history commands will bescanned, like2000;

  • THEFUCK_ALTER_HISTORY – push fixed command to historytrue/false;

  • THEFUCK_WAIT_SLOW_COMMAND – the max amount of time in seconds forgetting previous command output if it inslow_commands list;

  • THEFUCK_SLOW_COMMANDS – list of slow commands, likelein:gradle;

  • THEFUCK_NUM_CLOSE_MATCHES – the maximum number of close matchesto suggest, like5.

  • THEFUCK_EXCLUDED_SEARCH_PATH_PREFIXES – path prefixes to ignorewhen searching for commands, by default[].

For example:

exportTHEFUCK_RULES='sudo:no_command'exportTHEFUCK_EXCLUDE_RULES='git_pull:git_push'exportTHEFUCK_REQUIRE_CONFIRMATION='true'exportTHEFUCK_WAIT_COMMAND=10exportTHEFUCK_NO_COLORS='false'exportTHEFUCK_PRIORITY='no_command=9999:apt_get=100'exportTHEFUCK_HISTORY_LIMIT='2000'exportTHEFUCK_NUM_CLOSE_MATCHES='5'

Back to Contents

Third-party packages with rules

If you’d like to make a specific set of non-public rules, but wouldstill like to share them with others, create a package namedthefuck_contrib_* with the following structure:

thefuck_contrib_foo  thefuck_contrib_foo    rules      __init__.py      *third-party rules*    __init__.py    *third-party-utils*  setup.py

The Fuck will find rules located in therules module.

Back to Contents

Experimental instant mode

The default behavior ofThe Fuck requires time to re-run previouscommands. When in instant mode,The Fuck saves time by logging outputwithscript, thenreading the log.

gif with instant mode

Currently, instant mode only supports Python 3 with bash or zsh. zsh’sautocorrect function also needs to be disabled in order for thefuck towork properly.

To enable instant mode, add--enable-experimental-instant-mode tothe alias initialization in.bashrc,.bash_profile or.zshrc.

For example:

eval$(thefuck--alias--enable-experimental-instant-mode)

Back to Contents

Developing

SeeCONTRIBUTING.md

License MIT

Project License can be foundhere.

Back to Contents

Project details

Verified details

These details have beenverified by PyPI
Maintainers
Avatar for nvbn.rm from gravatar.com nvbn.rmAvatar for scorphus from gravatar.com scorphus

Unverified details

These details havenot been verified by PyPI
Project links
Meta

Release historyRelease notifications |RSS feed

This version

3.32

Download files

Download the file for your platform. If you're not sure which to choose, learn more aboutinstalling packages.

Source Distribution

thefuck-3.32.tar.gz (83.6 kBview details)

UploadedSource

Built Distribution

thefuck-3.32-py2.py3-none-any.whl (127.9 kBview details)

UploadedPython 2Python 3

File details

Details for the filethefuck-3.32.tar.gz.

File metadata

  • Download URL: thefuck-3.32.tar.gz
  • Upload date:
  • Size: 83.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for thefuck-3.32.tar.gz
AlgorithmHash digest
SHA256976740b9aa536726fa23cadc9a10bf457e92e335901c61fcff9152c84485ac3d
MD57db2da798dd0c8e3e34295e84c249b6b
BLAKE2b-256acd00c256afd3ba1d05882154d16aa0685018f21c60a6769a496558da7d9d8f1

See more details on using hashes here.

File details

Details for the filethefuck-3.32-py2.py3-none-any.whl.

File metadata

  • Download URL: thefuck-3.32-py2.py3-none-any.whl
  • Upload date:
  • Size: 127.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for thefuck-3.32-py2.py3-none-any.whl
AlgorithmHash digest
SHA2569d4604ec4832dae8b3e164969c94e4663052e50906f437ed57419cec76bbca2f
MD57104f47f0011a5b6be9563f219dcdd3e
BLAKE2b-25660e2a42cb06f359749003157ab5339db3932641be91c6fa8fc4e36c20b05b628

See more details on using hashes here.

Supported by

AWSAWS Cloud computing and Security SponsorDatadogDatadog MonitoringFastlyFastly CDNGoogleGoogle Download AnalyticsPingdomPingdom MonitoringSentrySentry Error loggingStatusPageStatusPage Status page

[8]ページ先頭

©2009-2025 Movatter.jp