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

The Fuck 是一款出色的应用程序,可以纠正了以前控制台命令中的错误。
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
...
- Requirements
- Installations
- Updating
- How it works
- Creating your own rules
- Settings
- Third party packages with rules
- Experimental instant mode
- Developing
- License
- python (3.5+)
- pip
- python-dev
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
pip3 install thefuck --upgrade
Note: Alias functionality was changed in v1.34 of The Fuck
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
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 likeadb logcta
;ag_literal
– adds to when suggested;-Q
ag
aws_cli
– fixes misspelled commands likeaws dynamdb scan
;az_cli
– fixes misspelled commands likeaz providers
;cargo
– runs instead ofcargo build
cargo
;cargo_no_command
– fixes wrong commands likecargo buid
;cat_dir
– replaces with when you try to a directory;cat
ls
cat
cd_correction
– spellchecks and corrects failed cd commands;cd_cs
– changes tocs
cd
;cd_mkdir
– creates directories before cd'ing into them;cd_parent
– changes tocd..
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 onecp
mv
cp_omitting_directory
– adds when you directory;-a
cp
cpp11
– adds missing to or-std=c++11
g++
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 likedocker tags
;docker_image_being_used_by_container
‐ removes the container that is using the image before removing the image;dry
– fixes repetitions likegit 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;--force
git add <pathspec>...
git_bisect_usage
– fixes , , , etc. when bisecting;git bisect strt
git bisect goood
git bisect rset
git_branch_delete
– changes togit branch -d
git branch -D
;git_branch_delete_checked_out
– changes to when trying to delete a checked out branch;git branch -d
git checkout master && git branch -D
git_branch_exists
– offers , or when creating a branch that already exists;git branch -d foo
git branch -D foo
git checkout foo
git_branch_list
– catches in place of and removes created branch;git branch list
git branch
git_branch_0flag
– fixes commands such as and removing the created branch;git branch 0v
git branch 0r
git_checkout
– fixes branch name or creates new branch;git_clone_git_clone
– replaces withgit 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-index
git diff
git_diff_staged
– adds to previous with unexpected output;--staged
git diff
git_fix_stash
– fixes commands (misspelled subcommand and missinggit stash
save
);git_flag_after_filename
– fixesfatal: 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-verify
git am
git commit
git push
git_lfs_mistype
– fixes mistyped commands;git lfs <command>
git_main_master
– fixes incorrect branch name between andmain
master
git_merge
– adds remote to branch names;git_merge_unrelated
– adds when required--allow-unrelated-histories
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 not exist;git_pull_uncommitted_changes
– stashes changes before pulling and pops them afterwards;git_push
– adds to previous failed--set-upstream origin $branch
git 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 pull
push
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 --skip
git rebase --continue
git_remote_delete
– replaces withgit remote delete remote_name
git remote remove remote_name
;git_rm_local_modifications
– adds or when you try to a locally modified file;-f
--cached
rm
git_rm_recursive
– adds when you try to a directory;-r
rm
git_rm_staged
– adds or when you try to a file with staged changes-f
--cached
rm
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 add
git 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;--force
git tag <tagname>
git_two_dashes
– adds a missing dash to commands like orgit commit -amend
git rebase -continue
;go_run
– appends extension when compiling/running Go programs;.go
go_unknown_command
– fixes wrong commands, for examplego
go bulid
;gradle_no_task
– fixes not found or ambiguous task;gradle
gradle_wrapper
– replaces withgradle
./gradlew
;grep_arguments_order
– fixes arguments order for situations likegrep
grep -lir . test
;grep_recursive
– adds when you try to directory;-r
grep
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>
heroku
heroku pg
;heroku_not_command
– fixes wrong commands likeheroku
heroku 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 towlan0
wlp2s0
;java
– removes extension when running Java programs;.java
javac
– appends missing when compiling Java files;.java
lein_not_task
– fixes wrong tasks likelein
lein 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;-A
ls
ls_lah
– adds to-lah
ls
;man
– changes manual section;man_no_space
– fixes man commands without spaces, for examplemandiff
;mercurial
– fixes wrong commands;hg
missing_space_before_subcommand
– fixes command with missing space likenpminstall
;mkdir_p
– adds when you try to create a directory without a parent;-p
mvn_no_command
– adds toclean package
mvn
;mvn_unknown_lifecycle_phase
– fixes misspelled life cycle phases withmvn
;npm_missing_script
– fixes custom script name innpm
npm run-script <script>
;npm_run_script
– adds missing for custom scripts;run-script
npm
npm_wrong_command
– fixes wrong npm commands likenpm urgrade
;no_command
– fixes wrong console commands, for examplevom/vim
;no_such_file
– creates missing directories with and commands;mv
cp
omnienv_no_such_command
– fixes wrong commands for , , and (eg.: orgoenv
nodenv
pyenv
rbenv
pyenv isntall
goenv list
);open
– either prepends to address passed to or creates a new file or directory and passes it tohttp://
open
open
;pip_install
– fixes permission issues with commands by adding or prepending if necessary;pip install
--user
sudo
pip_unknown_command
– fixes wrong commands, for examplepip
pip 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 tohg log
git log
;sed_unterminated_s
– adds missing '/' to 's commands;sed
s
sl_ls
– changes tosl
ls
;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$PATH
sudo
;switch_lang
– switches command from your local layout to en;systemctl
– correctly orders parameters of confusingsystemctl
;terraform_init.py
– runs before plan or apply;terraform init
terraform_no_command.py
– fixes unrecognized commands;terraform
test.py
– runs instead ofpytest
test.py
;touch
– creates missing directories before "touching";tsuru_login
– runs if not authenticated or session expired;tsuru login
tsuru_not_command
– fixes wrong commands liketsuru
tsuru shell
;tmux
– fixes commands;tmux
unknown_command
– fixes hadoop hdfs-style "unknown command", for example adds missing '-' to the command onhdfs 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-install
apt install
git-log
git log
yarn_alias
– fixes aliased commands likeyarn
yarn 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
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_default
requires_output
priority
Command
has three attributes: , and . Your rule should not change .script
output
script_parts
Command
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 rules, utility functions for rules, app/os-specific helpers.
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 defaultthefuck.const.DEFAULT_RULES
;exclude_rules
– list of disabled rules, by default[]
;require_confirmation
– requires confirmation before running new command, by defaultTrue
;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 defaultFalse
;history_limit
– the numeric value of how many history commands will be scanned, like2000
;alter_history
– push fixed command to history, by defaultTrue
;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 orDEFAULT_RULES:rm_root
sudo:no_command
;THEFUCK_EXCLUDE_RULES
– list of disabled rules, likegit_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=100
priority
THEFUCK_DEBUG
– enables debug output,true/false
;THEFUCK_HISTORY_LIMIT
– how many history commands will be scanned, like2000
;THEFUCK_ALTER_HISTORY
– push fixed command to historytrue/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, likelein: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'
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
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.
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)
