Li

verify-tag自动修复错误命令行

修复错误命令行代码修复工具

2.9

已售 0
1.32MB

数据标识:D17441845468911528

发布时间:2025/04/09

以下为卖家选择提供的数据验证报告:

数据描述

The Fuck Version Build Status Coverage MIT License

The Fuck 是一款出色的应用程序,可以纠正了以前控制台命令中的错误。

gif with examples

More examples:

➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

➜ fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]
[sudo] password for nvbn:
Reading package lists... Done
...
 

Contents

  1. Requirements
  2. Installations
  3. Updating
  4. How it works
  5. Creating your own rules
  6. Settings
  7. Third party packages with rules
  8. Experimental instant mode
  9. Developing
  10. License

Requirements

  • python (3.5+)
  • pip
  • python-dev

Installation

On macOS or Linux, you can install The Fuck via Homebrew:

brew install thefuck
 

On Ubuntu / Mint, install The Fuck with the following commands:

sudo apt update
sudo apt install python3-dev python3-pip python3-setuptools
pip3 install thefuck --user
 

On FreeBSD, install The Fuck with the following commands:

pkg install thefuck
 

On ChromeOS, install The Fuck using chromebrew with the following command:

crew install thefuck
 

On Arch based systems, install The Fuck with the following command:

sudo pacman -S thefuck
 

On other systems, install The Fuck by using :pip

pip install thefuck
 

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

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

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

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

Changes are only available in a new shell session. To make changes immediately available, run (or your shell config file like ).source ~/.bashrc.zshrc

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

fuck --yeah
 

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

fuck -r
 

Updating

pip3 install thefuck --upgrade
 

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

Uninstall

To remove The Fuck, reverse the installation process:

  • erase or comment thefuck 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 a match is found, a new command is created using the matched rule and executed. The following rules are enabled by default:

  • adb_unknown_command – fixes misspelled commands like adb logcta;
  • ag_literal – adds to when suggested;-Qag
  • aws_cli – fixes misspelled commands like aws dynamdb scan;
  • az_cli – fixes misspelled commands like az providers;
  • cargo – runs instead of cargo buildcargo;
  • cargo_no_command – fixes wrong commands like cargo buid;
  • cat_dir – replaces with when you try to a directory;catlscat
  • cd_correction – spellchecks and corrects failed cd commands;
  • cd_cs – changes to cscd;
  • cd_mkdir – creates directories before cd'ing into them;
  • cd_parent – changes to cd..cd ..;
  • chmod_x – adds execution bit;
  • choco_install – appends 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 attempt to or to a non-existent onecpmv
  • cp_omitting_directory – adds when you directory;-acp
  • cpp11 – adds missing to or -std=c++11g++clang++;
  • dirty_untar – fixes command that untarred in the current directory;tar x
  • dirty_unzip – fixes command that unzipped in the current directory;unzip
  • django_south_ghost – adds to failed because ghosts django south migration;--delete-ghost-migrations
  • django_south_merge – adds to inconsistent django south migration;--merge
  • docker_login – executes a and repeats the previous command;docker login
  • docker_not_command – fixes wrong docker commands like docker tags;
  • docker_image_being_used_by_container ‐ removes the container that is using the image before removing the image;
  • dry – fixes repetitions like git git push;
  • fab_command_not_found – fixes 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 wrong commands;gem
  • git_add – fixes "pathspec 'foo' did not match any file(s) known to git.";
  • git_add_force – adds to when paths are .gitignore'd;--forcegit add <pathspec>...
  • git_bisect_usage – fixes , , , etc. when bisecting;git bisect strtgit bisect gooodgit bisect rset
  • git_branch_delete – changes to git branch -dgit branch -D;
  • git_branch_delete_checked_out – changes to when trying to delete a checked out branch;git branch -dgit checkout master && git branch -D
  • git_branch_exists – offers , or when creating a branch that already exists;git branch -d foogit branch -D foogit checkout foo
  • git_branch_list – catches in place of and removes created branch;git branch listgit branch
  • git_branch_0flag – fixes commands such as and removing the created branch;git branch 0vgit branch 0r
  • git_checkout – fixes branch name or creates new branch;
  • git_clone_git_clone – replaces with git clone git clone ...git clone ...
  • git_clone_missing – adds to URLs that appear to link to a git repository.git clone
  • git_commit_add – offers or after previous commit if it failed because nothing was staged;git commit -a ...git commit -p ...
  • git_commit_amend – offers after previous commit;git commit --amend
  • git_commit_reset – offers after previous commit;git reset HEAD~
  • git_diff_no_index – adds to previous on untracked files;--no-indexgit diff
  • git_diff_staged – adds to previous with unexpected output;--stagedgit diff
  • git_fix_stash – fixes commands (misspelled subcommand and missing git stashsave);
  • git_flag_after_filename – fixes fatal: bad flag '...' after filename
  • git_help_aliased – fixes commands replacing with the aliased command;git help <alias>
  • git_hook_bypass – adds flag previous to , , or command;--no-verifygit amgit commitgit push
  • git_lfs_mistype – fixes mistyped commands;git lfs <command>
  • git_main_master – fixes incorrect branch name between and mainmaster
  • git_merge – adds remote to branch names;
  • git_merge_unrelated – adds when required--allow-unrelated-histories
  • git_not_command – fixes wrong git commands like git brnch;
  • git_pull – sets upstream before executing previous git pull;
  • git_pull_clone – clones instead of pulling when the repo does not exist;
  • git_pull_uncommitted_changes – stashes changes before pulling and pops them afterwards;
  • git_push – adds to previous failed --set-upstream origin $branchgit push;
  • git_push_different_branch_names – fixes pushes when local branch name does not match remote branch name;
  • git_push_pull – runs when was rejected;git pullpush
  • git_push_without_commits – creates an initial commit if you forget and only , when setting up a new project;git add .
  • git_rebase_no_changes – runs instead of when there are no changes;git rebase --skipgit rebase --continue
  • git_remote_delete – replaces with git remote delete remote_namegit remote remove remote_name;
  • git_rm_local_modifications – adds or when you try to a locally modified file;-f--cachedrm
  • git_rm_recursive – adds when you try to a directory;-rrm
  • git_rm_staged – adds or when you try to a file with staged changes-f--cachedrm
  • git_rebase_merge_dir – offers or removing the dir when a rebase is in progress;git rebase (--continue | --abort | --skip).git/rebase-merge
  • git_remote_seturl_add – runs when on nonexistent remote;git remote addgit remote set_url
  • git_stash – stashes your local modifications before rebasing or switching branch;
  • git_stash_pop – adds your local modifications before popping stash, then resets;
  • git_tag_force – adds to when the tag already exists;--forcegit tag <tagname>
  • git_two_dashes – adds a missing dash to commands like or git commit -amendgit rebase -continue;
  • go_run – appends extension when compiling/running Go programs;.go
  • go_unknown_command – fixes wrong commands, for example gogo bulid;
  • gradle_no_task – fixes not found or ambiguous task;gradle
  • gradle_wrapper – replaces with gradle./gradlew;
  • grep_arguments_order – fixes arguments order for situations like grepgrep -lir . test;
  • grep_recursive – adds when you try to directory;-rgrep
  • grunt_task_not_found – fixes misspelled commands;grunt
  • gulp_not_task – fixes misspelled tasks;gulp
  • has_exists_script – prepends when script/binary exists;./
  • heroku_multiple_apps – adds to commands like --app <app>herokuheroku pg;
  • heroku_not_command – fixes wrong commands like herokuheroku log;
  • history – tries to replace command with the most similar command from history;
  • hostscli – tries to fix usage;hostscli
  • ifconfig_device_not_found – fixes wrong device names like to wlan0wlp2s0;
  • java – removes extension when running Java programs;.java
  • javac – appends missing when compiling Java files;.java
  • lein_not_task – fixes wrong tasks like leinlein rpl;
  • long_form_help – changes to when the short form version is not supported-h--help
  • ln_no_hard_link – catches hard link creation on directories, suggest symbolic link;
  • ln_s_order – fixes arguments order;ln -s
  • ls_all – adds to when output is empty;-Als
  • ls_lah – adds to -lahls;
  • man – changes manual section;
  • man_no_space – fixes man commands without spaces, for example mandiff;
  • mercurial – fixes wrong commands;hg
  • missing_space_before_subcommand – fixes command with missing space like npminstall;
  • mkdir_p – adds when you try to create a directory without a parent;-p
  • mvn_no_command – adds to clean packagemvn;
  • mvn_unknown_lifecycle_phase – fixes misspelled life cycle phases with mvn;
  • npm_missing_script – fixes custom script name in npmnpm run-script <script>;
  • npm_run_script – adds missing for custom scripts;run-scriptnpm
  • npm_wrong_command – fixes wrong npm commands like npm urgrade;
  • no_command – fixes wrong console commands, for example vom/vim;
  • no_such_file – creates missing directories with and commands;mvcp
  • omnienv_no_such_command – fixes wrong commands for , , and (eg.: or goenvnodenvpyenvrbenvpyenv isntallgoenv list);
  • open – either prepends to address passed to or creates a new file or directory and passes it to http://openopen;
  • pip_install – fixes permission issues with commands by adding or prepending if necessary;pip install--usersudo
  • pip_unknown_command – fixes wrong commands, for example pippip instatl/pip install;
  • php_s – replaces by when trying to run a local php server;-s-S
  • port_already_in_use – kills process that bound port;
  • prove_recursively – adds when called with directory;-r
  • python_command – prepends when you try to run non-executable/without python script;python./
  • python_execute – appends missing when executing Python files;.py
  • python_module_error – fixes ModuleNotFoundError by trying to that module;pip install
  • quotation_marks – fixes uneven usage of and when containing args';'"
  • path_from_history – replaces not found path with a similar absolute path from history;
  • rails_migrations_pending – runs pending migrations;
  • react_native_command_unrecognized – fixes unrecognized commands;react-native
  • remove_shell_prompt_literal – removes leading shell prompt symbol , common when copying commands from documentations;$
  • remove_trailing_cedilla – removes trailing cedillas , a common typo for European keyboard layouts;ç
  • rm_dir – adds when you try to remove a directory;-rf
  • scm_correction – corrects wrong scm like to hg loggit log;
  • sed_unterminated_s – adds missing '/' to 's commands;seds
  • sl_ls – changes to slls;
  • ssh_known_hosts – removes host from on warning;known_hosts
  • sudo – prepends to the previous command if it failed because of permissions;sudo
  • sudo_command_from_user_path – runs commands from users with $PATHsudo;
  • switch_lang – switches command from your local layout to en;
  • systemctl – correctly orders parameters of confusing systemctl;
  • terraform_init.py – runs before plan or apply;terraform init
  • terraform_no_command.py – fixes unrecognized commands;terraform
  • test.py – runs instead of pytesttest.py;
  • touch – creates missing directories before "touching";
  • tsuru_login – runs if not authenticated or session expired;tsuru login
  • tsuru_not_command – fixes wrong commands like tsurutsuru shell;
  • tmux – fixes commands;tmux
  • unknown_command – fixes hadoop hdfs-style "unknown command", for example adds missing '-' to the command on hdfs dfs ls;
  • unsudo – removes from previous command if a process refuses to run on superuser privilege.sudo
  • vagrant_up – starts up the vagrant instance;
  • whois – fixes command;whois
  • workon_doesnt_exists – fixes env name os suggests to create new.virtualenvwrapper
  • wrong_hyphen_before_subcommand – removes an improperly placed hyphen ( -> , -> , etc.)apt-installapt installgit-loggit log
  • yarn_alias – fixes aliased commands like yarnyarn ls;
  • yarn_command_not_found – fixes misspelled commands;yarn
  • yarn_command_replaced – fixes replaced commands;yarn
  • yarn_help – makes it easier to open documentation;yarn
 

Creating your own rules

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

match(command: Command) -> bool
get_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 variables , and .enabled_by_defaultrequires_outputpriority

Command has three attributes: , and . Your rule should not change .scriptoutputscript_partsCommand

Rules api changed in 3.0: To access a rule's settings, import it with from thefuck.conf import settings

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

A simple example rule for running a script with :sudo

def match(command):
    return ('permission denied' in command.output.lower()
            or 'EACCES' in command.output)


def get_new_command(command):
    return 'sudo {}'.format(command.script)

# Optional:
enabled_by_default = True

def side_effect(command, fixed_command):
    subprocess.call('chmod 777 .', shell=True)

priority = 1000  # Lower first, default is 1000

requires_output = True
 

More examples of rulesutility functions for rulesapp/os-specific helpers.

Settings

Several The Fuck parameters can be changed in the file ( defaults to ):$XDG_CONFIG_HOME/thefuck/settings.py$XDG_CONFIG_HOME~/.config

  • rules – list of enabled rules, by default thefuck.const.DEFAULT_RULES;
  • exclude_rules – list of disabled rules, by default [];
  • require_confirmation – requires confirmation before running new command, by default True;
  • wait_command – the max amount of time in seconds for getting previous command output;
  • no_colors – disable colored output;
  • priority – dict with rules priorities, rule with lower will be matched first;priority
  • debug – enables debug output, by default False;
  • history_limit – the numeric value of how many history commands will be scanned, like 2000;
  • alter_history – push fixed command to history, by default True;
  • wait_slow_command – max amount of time in seconds for getting previous command output if it in list;slow_commands
  • slow_commands – list of slow commands;
  • num_close_matches – the maximum number of close matches to suggest, by default .3
  • excluded_search_path_prefixes – path prefixes to ignore when searching for commands, by default .[]

An example of :settings.py

rules = ['sudo', 'no_command']
exclude_rules = ['git_push']
require_confirmation = True
wait_command = 10
no_colors = False
priority = {'sudo': 100, 'no_command': 9999}
debug = False
history_limit = 9999
wait_slow_command = 20
slow_commands = ['react-native', 'gradle']
num_close_matches = 5

Or via environment variables:

  • THEFUCK_RULES – list of enabled rules, like or DEFAULT_RULES:rm_rootsudo:no_command;
  • THEFUCK_EXCLUDE_RULES – list of disabled rules, like git_pull:git_push;
  • THEFUCK_REQUIRE_CONFIRMATION – require confirmation before running new command, true/false;
  • THEFUCK_WAIT_COMMAND – the max amount of time in seconds for getting previous command output;
  • THEFUCK_NO_COLORS – disable colored output, true/false;
  • THEFUCK_PRIORITY – priority of the rules, like , rule with lower will be matched first;no_command=9999:apt_get=100priority
  • THEFUCK_DEBUG – enables debug output, true/false;
  • THEFUCK_HISTORY_LIMIT – how many history commands will be scanned, like 2000;
  • THEFUCK_ALTER_HISTORY – push fixed command to history true/false;
  • THEFUCK_WAIT_SLOW_COMMAND – the max amount of time in seconds for getting previous command output if it in list;slow_commands
  • THEFUCK_SLOW_COMMANDS – list of slow commands, like lein:gradle;
  • THEFUCK_NUM_CLOSE_MATCHES – the maximum number of close matches to suggest, like .5
  • THEFUCK_EXCLUDED_SEARCH_PATH_PREFIXES – path prefixes to ignore when searching for commands, by default .[]

For example:

export THEFUCK_RULES='sudo:no_command'
export THEFUCK_EXCLUDE_RULES='git_pull:git_push'
export THEFUCK_REQUIRE_CONFIRMATION='true'
export THEFUCK_WAIT_COMMAND=10
export THEFUCK_NO_COLORS='false'
export THEFUCK_PRIORITY='no_command=9999:apt_get=100'
export THEFUCK_HISTORY_LIMIT='2000'
export THEFUCK_NUM_CLOSE_MATCHES='5'
 

Third-party packages with rules

If you'd like to make a specific set of non-public rules, but would still like to share them with others, create a package named with the following structure:thefuck_contrib_*

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 the module.rules

Experimental instant mode

The default behavior of The Fuck requires time to re-run previous commands. When in instant mode, The Fuck saves time by logging output with script, then reading the log.

gif with instant mode

Currently, instant mode only supports Python 3 with bash or zsh. zsh's autocorrect function also needs to be disabled in order for thefuck to work properly.

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

For example:

eval $(thefuck --alias --enable-experimental-instant-mode)
 
 
data icon
自动修复错误命令行
2.9
已售 0
1.32MB
申请报告