The Fuck เป็นแอปที่ยอดเยี่ยม ซึ่งได้รับแรงบันดาลใจจากทวีต @liamosaur ซึ่งแก้ไขข้อผิดพลาดในคำสั่งคอนโซลก่อนหน้า
The Fuck ช้าเกินไปหรือเปล่า? ลองใช้โหมดทดลองเล่นทันที!
ตัวอย่างเพิ่มเติม:
➜ 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
...
➜ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
➜ fuck
git push --set-upstream origin master [enter/↑/↓/ctrl+c]
Counting objects: 9, done.
...
➜ puthon
No command ' puthon ' found, did you mean:
Command ' python ' from package ' python-minimal ' (main)
Command ' python ' from package ' python3 ' (main)
zsh: command not found: puthon
➜ fuck
python [enter/↑/↓/ctrl+c]
Python 3.4.2 (default, Oct 8 2014, 13:08:17)
...
➜ git brnch
git: ' brnch ' is not a git command. See ' git --help ' .
Did you mean this ?
branch
➜ fuck
git branch [enter/↑/↓/ctrl+c]
* master
➜ lein rpl
' rpl ' is not a task. See ' lein help ' .
Did you mean this ?
repl
➜ fuck
lein repl [enter/↑/↓/ctrl+c]
nREPL server started on port 54848 on host 127.0.0.1 - nrepl://127.0.0.1:54848
REPL-y 0.3.1
...
หากคุณไม่กลัวที่จะรันคำสั่งที่ถูกแก้ไขอย่างสุ่มสี่สุ่มห้า คุณสามารถปิดใช้งานตัวเลือกการตั้งค่า require_confirmation
ได้:
➜ 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
[sudo] password for nvbn:
Reading package lists... Done
...
บน macOS หรือ Linux คุณสามารถติดตั้ง The Fuck ผ่าน Homebrew ได้:
brew install thefuck
บน Ubuntu / Mint ให้ติดตั้ง The Fuck ด้วยคำสั่งต่อไปนี้:
sudo apt update
sudo apt install python3-dev python3-pip python3-setuptools
pip3 install thefuck --user
บน FreeBSD ให้ติดตั้ง The Fuck ด้วยคำสั่งต่อไปนี้:
pkg install thefuck
บน ChromeOS ให้ติดตั้ง The Fuck โดยใช้ chromebrew ด้วยคำสั่งต่อไปนี้:
crew install thefuck
บนระบบที่ใช้ Arch ให้ติดตั้ง The Fuck ด้วยคำสั่งต่อไปนี้:
sudo pacman -S thefuck
บนระบบอื่น ให้ติดตั้ง The Fuck โดยใช้ pip
:
pip install thefuck
หรือคุณสามารถใช้ตัวจัดการแพ็คเกจ OS (OS X, Ubuntu, Arch)
# ขอแนะนำให้คุณวางคำสั่งนี้ใน .bash_profile
, .bashrc
, .zshrc
หรือสคริปต์เริ่มต้นอื่น ๆ ของคุณ:
eval $( thefuck --alias )
# You can use whatever you want as an alias, like for Mondays:
eval $( thefuck --alias FUCK )
หรือในการกำหนดค่าเชลล์ของคุณ (Bash, Zsh, Fish, Powershell, tcsh)
การเปลี่ยนแปลงมีเฉพาะในเซสชันเชลล์ใหม่เท่านั้น หากต้องการให้การเปลี่ยนแปลงพร้อมใช้งานทันที ให้เรียกใช้ source ~/.bashrc
(หรือไฟล์กำหนดค่าเชลล์ของคุณเช่น .zshrc
)
หากต้องการรันคำสั่งคงที่โดยไม่มีการยืนยัน ให้ใช้ตัวเลือก --yeah
(หรือเพียง -y
เรียกสั้นๆ หรือ --hard
หากคุณหงุดหงิดเป็นพิเศษ):
fuck --yeah
หากต้องการแก้ไขคำสั่งแบบวนซ้ำจนกว่าจะสำเร็จ ให้ใช้ตัวเลือก -r
:
fuck -r
pip3 install thefuck --upgrade
หมายเหตุ: ฟังก์ชันนามแฝงมีการเปลี่ยนแปลงใน The Fuck เวอร์ชัน 1.34
หากต้องการลบ The Fuck ให้ย้อนกระบวนการติดตั้ง:
The Fuck พยายามจับคู่คำสั่งก่อนหน้ากับกฎ หากพบรายการที่ตรงกัน คำสั่งใหม่จะถูกสร้างขึ้นโดยใช้กฎที่ตรงกันและดำเนินการ กฎต่อไปนี้เปิดใช้งานตามค่าเริ่มต้น:
adb_unknown_command
– แก้ไขคำสั่งที่สะกดผิด เช่น adb logcta
;ag_literal
- เพิ่ม -Q
ให้กับ ag
เมื่อแนะนำaws_cli
– แก้ไขคำสั่งที่สะกดผิด เช่น aws dynamdb scan
;az_cli
– แก้ไขคำสั่งที่สะกดผิด เช่น az providers
;cargo
- ดำเนินการ cargo build
แทน cargo
;cargo_no_command
– แก้ไขคำสั่งที่ไม่ถูกต้อง เช่น cargo buid
;cat_dir
- แทนที่ cat
ด้วย ls
เมื่อคุณพยายาม cat
ไดเร็กทอรีcd_correction
- ตรวจการสะกดและแก้ไขคำสั่ง cd ที่ล้มเหลวcd_cs
– เปลี่ยน cs
เป็น cd
;cd_mkdir
– สร้างไดเร็กทอรีก่อนที่จะใส่ cd'ing;cd_parent
– เปลี่ยน cd..
เป็น cd ..
;chmod_x
– เพิ่มบิตการประมวลผล;choco_install
– ต่อท้ายส่วนต่อท้ายทั่วไปสำหรับแพ็คเกจช็อคโกแลตcomposer_not_command
- แก้ไขชื่อคำสั่งผู้แต่ง;conda_mistype
– แก้ไขคำสั่ง conda;cp_create_destination
- สร้างไดเร็กทอรีใหม่เมื่อคุณพยายาม cp
หรือ mv
ไปยังไดเร็กทอรีที่ไม่มีอยู่จริงcp_omitting_directory
– เพิ่ม -a
เมื่อคุณไดเร็กทอรี cp
;cpp11
– เพิ่มหายไป -std=c++11
ใน g++
หรือ clang++
;dirty_untar
- แก้ไขคำสั่ง tar x
ที่ไม่ได้ติดตั้งในไดเร็กทอรีปัจจุบันdirty_unzip
- แก้ไขคำสั่ง unzip
ที่คลายซิปในไดเร็กทอรีปัจจุบันdjango_south_ghost
- เพิ่ม --delete-ghost-migrations
ให้ล้มเหลวเนื่องจาก ghosts django อพยพไปทางทิศใต้;django_south_merge
- เพิ่ม --merge
เพื่อการโยกย้าย django south ที่ไม่สอดคล้องกันdocker_login
- ดำเนินการเข้า docker login
และทำซ้ำคำสั่งก่อนหน้าdocker_not_command
- แก้ไขคำสั่งนักเทียบท่าที่ไม่ถูกต้อง เช่น docker tags
;docker_image_being_used_by_container
- ลบคอนเทนเนอร์ที่ใช้รูปภาพก่อนที่จะลบรูปภาพdry
– แก้ไขการซ้ำเช่น git git push
;fab_command_not_found
- แก้ไขคำสั่ง Fabric ที่สะกดผิดfix_alt_space
– แทนที่ Alt+Space ด้วยอักขระ Spacefix_file
– เปิดไฟล์ที่มีข้อผิดพลาดใน $EDITOR
ของคุณ;gem_unknown_command
– แก้ไขคำสั่ง gem
ที่ไม่ถูกต้องgit_add
- แก้ไข "pathspec 'foo' ไม่ตรงกับไฟล์ใด ๆ ที่รู้จักใน git" -git_add_force
– เพิ่ม --force
เพื่อ git add <pathspec>...
เมื่อเส้นทางเป็น .gitignore'd;git_bisect_usage
- แก้ไข git bisect strt
, git bisect goood
, git bisect rset
ฯลฯ เมื่อแบ่งเป็นสองส่วนgit_branch_delete
– เปลี่ยน git branch -d
เป็น git branch -D
;git_branch_delete_checked_out
– เปลี่ยน git branch -d
เป็น git checkout master && git branch -D
เมื่อพยายามลบสาขาที่เช็คเอาท์git_branch_exists
- เสนอ git branch -d foo
, git branch -D foo
หรือ git checkout foo
เมื่อสร้างสาขาที่มีอยู่แล้วgit_branch_list
– จับ git branch list
แทนที่ git branch
และลบสาขาที่สร้างขึ้นgit_branch_0flag
– แก้ไขคำสั่ง เช่น git branch 0v
และ git branch 0r
ลบสาขาที่สร้างขึ้นgit_checkout
– แก้ไขชื่อสาขาหรือสร้างสาขาใหม่git_clone_git_clone
- แทนที่ git clone git clone ...
ด้วย git clone ...
git_clone_missing
- เพิ่ม git clone
ให้กับ URL ที่ดูเหมือนจะเชื่อมโยงไปยังที่เก็บ gitgit_commit_add
– เสนอ git commit -a ...
หรือ git commit -p ...
หลังจากการคอมมิตครั้งก่อน หากล้มเหลวเนื่องจากไม่มีการจัดฉากgit_commit_amend
– เสนอ git commit --amend
หลังจากการคอมมิตครั้งก่อนgit_commit_reset
– เสนอ git reset HEAD~
หลังจากการคอมมิตครั้งก่อนgit_diff_no_index
– เพิ่ม --no-index
ให้กับ git diff
ก่อนหน้าในไฟล์ที่ไม่ได้ติดตามgit_diff_staged
- เพิ่ม --staged
ให้กับ git diff
ก่อนหน้าพร้อมเอาต์พุตที่ไม่คาดคิดgit_fix_stash
– แก้ไขคำสั่ง git stash
(คำสั่งย่อยที่สะกดผิดและ save
หายไป)git_flag_after_filename
- แก้ไข fatal: bad flag '...' after filename
git_help_aliased
– แก้ไขคำสั่ง git help <alias>
ที่แทนที่ด้วยคำสั่ง aliasedgit_hook_bypass
– เพิ่ม --no-verify
flag ก่อนหน้าให้กับคำสั่ง git am
, git commit
หรือ git push
git_lfs_mistype
– แก้ไขคำสั่ง git lfs <command>
ที่พิมพ์ผิดgit_main_master
– แก้ไขชื่อสาขาที่ไม่ถูกต้องระหว่าง main
และ master
git_merge
– เพิ่มระยะไกลให้กับชื่อสาขาgit_merge_unrelated
– เพิ่ม --allow-unrelated-histories
เมื่อจำเป็นgit_not_command
– แก้ไขคำสั่ง git ที่ไม่ถูกต้อง เช่น git brnch
;git_pull
– ตั้งค่าอัปสตรีมก่อนดำเนินการ git pull
ก่อนหน้าgit_pull_clone
- โคลนแทนการดึงเมื่อไม่มี repogit_pull_uncommitted_changes
- เก็บการเปลี่ยนแปลงก่อนที่จะดึงและแสดงในภายหลังgit_push
– เพิ่ม --set-upstream origin $branch
ให้กับ git push
ที่ล้มเหลวก่อนหน้านี้git_push_different_branch_names
- แก้ไขการพุชเมื่อชื่อสาขาท้องถิ่นไม่ตรงกับชื่อสาขาระยะไกลgit_push_pull
- รัน git pull
เมื่อ push
ถูกปฏิเสธgit_push_without_commits
– สร้างการคอมมิตครั้งแรกหากคุณลืมและมีเพียง git add .
เท่านั้น , เมื่อตั้งโครงการใหม่git_rebase_no_changes
- รัน git rebase --skip
แทน git rebase --continue
เมื่อไม่มีการเปลี่ยนแปลงgit_remote_delete
- แทนที่ git remote delete remote_name
ด้วย git remote remove remote_name
;git_rm_local_modifications
- เพิ่ม -f
หรือ --cached
เมื่อคุณพยายาม rm
ไฟล์ที่แก้ไขในเครื่องgit_rm_recursive
- เพิ่ม -r
เมื่อคุณพยายาม rm
ไดเรกทอรีgit_rm_staged
- เพิ่ม -f
หรือ --cached
เมื่อคุณพยายาม rm
ไฟล์ที่มีการเปลี่ยนแปลงแบบฉากgit_rebase_merge_dir
– เสนอ git rebase (--continue | --abort | --skip)
หรือลบ .git/rebase-merge
dir เมื่อทำการ rebase อยู่git_remote_seturl_add
- รัน git remote add
เมื่อ git remote set_url
บนรีโมทที่ไม่มีอยู่git_stash
– ซ่อนการแก้ไขในเครื่องของคุณก่อนที่จะรีบูตหรือเปลี่ยนสาขาgit_stash_pop
- เพิ่มการแก้ไขในเครื่องของคุณก่อนที่จะเปิดที่ซ่อน จากนั้นจึงรีเซ็ตgit_tag_force
– เพิ่ม --force
ให้กับ git tag <tagname>
เมื่อมีแท็กอยู่แล้วgit_two_dashes
– เพิ่มเส้นประที่หายไปให้กับคำสั่งเช่น git commit -amend
หรือ git rebase -continue
;go_run
– ต่อท้ายส่วนขยาย .go
เมื่อคอมไพล์/รันโปรแกรม Gogo_unknown_command
– แก้ไขคำสั่ง go
ที่ไม่ถูกต้อง เช่น go bulid
;gradle_no_task
- ไม่พบการแก้ไขหรืองาน gradle
ที่คลุมเครือgradle_wrapper
– แทนที่ gradle
ด้วย ./gradlew
;grep_arguments_order
– แก้ไขลำดับอาร์กิวเมนต์ grep
สำหรับสถานการณ์เช่น grep -lir . test
;grep_recursive
- เพิ่ม -r
เมื่อคุณพยายามไดเรกทอรี grep
grunt_task_not_found
- แก้ไขคำสั่ง grunt
ที่สะกดผิดgulp_not_task
- แก้ไขงาน gulp
ที่สะกดผิดhas_exists_script
– นำหน้า ./
เมื่อมีสคริปต์/ไบนารี่อยู่heroku_multiple_apps
– เพิ่ม --app <app>
ให้กับคำสั่ง heroku
เช่น heroku pg
;heroku_not_command
- แก้ไขคำสั่ง heroku
ที่ไม่ถูกต้อง เช่น heroku log
;history
– พยายามแทนที่คำสั่งด้วยคำสั่งที่คล้ายกันมากที่สุดจากประวัติhostscli
– พยายามแก้ไขการใช้งาน hostscli
;ifconfig_device_not_found
– แก้ไขชื่ออุปกรณ์ที่ไม่ถูกต้อง เช่น wlan0
ถึง wlp2s0
;java
– ลบนามสกุล .java
เมื่อรันโปรแกรม Javajavac
– ผนวก .java
ที่ขาดหายไปเมื่อรวบรวมไฟล์ Java;lein_not_task
- แก้ไขงาน lein
ที่ไม่ถูกต้องเช่น lein rpl
;long_form_help
- เปลี่ยน -h
เป็น --help
เมื่อไม่รองรับเวอร์ชันรูปแบบสั้นln_no_hard_link
– จับการสร้างฮาร์ดลิงก์ในไดเร็กทอรี แนะนำลิงก์สัญลักษณ์ln_s_order
– แก้ไขลำดับอาร์กิวเมนต์ ln -s
;ls_all
- เพิ่ม -A
ไปที่ ls
เมื่อเอาต์พุตว่างเปล่าls_lah
– เพิ่ม -lah
ไปที่ ls
;man
– เปลี่ยนส่วนคู่มือ;man_no_space
– แก้ไขคำสั่ง man โดยไม่ต้องเว้นวรรค เช่น mandiff
;mercurial
– แก้ไขคำสั่ง hg
ที่ไม่ถูกต้องmissing_space_before_subcommand
- แก้ไขคำสั่งที่มีพื้นที่หายไปเช่น npminstall
;mkdir_p
- เพิ่ม -p
เมื่อคุณพยายามสร้างไดเร็กทอรีโดยไม่มีพาเรนต์mvn_no_command
– เพิ่ม clean package
ให้กับ mvn
;mvn_unknown_lifecycle_phase
- แก้ไขเฟสวงจรชีวิตที่สะกดผิดด้วย mvn
;npm_missing_script
- แก้ไขชื่อสคริปต์ที่กำหนดเองของ npm
ใน npm run-script <script>
;npm_run_script
– เพิ่ม run-script
ที่ขาดหายไปสำหรับสคริปต์ npm
ที่กำหนดเองnpm_wrong_command
– แก้ไขคำสั่ง npm ที่ไม่ถูกต้อง เช่น npm urgrade
;no_command
– แก้ไขคำสั่งคอนโซลที่ไม่ถูกต้อง เช่น vom/vim
;no_such_file
– สร้างไดเร็กทอรีที่หายไปด้วยคำสั่ง mv
และ cp
;omnienv_no_such_command
- แก้ไขคำสั่งที่ไม่ถูกต้องสำหรับ goenv
, nodenv
, pyenv
และ rbenv
(เช่น: pyenv isntall
หรือ goenv list
);open
- นำหน้า http://
ไปยังที่อยู่ที่ส่งผ่านเพื่อ open
หรือสร้างไฟล์หรือไดเร็กทอรีใหม่แล้วส่งผ่านเพื่อ open
;pip_install
– แก้ไขปัญหาการอนุญาตด้วยคำสั่ง pip install
โดยเพิ่ม --user
หรือเติม sudo
ไว้ข้างหน้าหากจำเป็นpip_unknown_command
– แก้ไขคำสั่ง pip
ที่ไม่ถูกต้อง เช่น pip instatl/pip install
;php_s
– แทนที่ -s
ด้วย -S
เมื่อพยายามเรียกใช้เซิร์ฟเวอร์ php ในเครื่องport_already_in_use
- ฆ่ากระบวนการที่ผูกกับพอร์ตprove_recursively
- เพิ่ม -r
เมื่อถูกเรียกพร้อมกับไดเร็กทอรี;python_command
- เพิ่ม python
เมื่อคุณพยายามเรียกใช้งานที่ไม่สามารถเรียกใช้งานได้/ไม่มี ./
สคริปต์ pythonpython_execute
– ผนวก .py
ที่ขาดหายไปเมื่อเรียกใช้ไฟล์ Pythonpython_module_error
- แก้ไข ModuleNotFoundError โดยพยายาม pip install
โมดูลนั้นquotation_marks
– แก้ไขการใช้งานที่ไม่สม่ำเสมอของ '
และ "
เมื่อมี args';path_from_history
- แทนที่เส้นทางที่ไม่พบด้วยเส้นทางสัมบูรณ์ที่คล้ายกันจากประวัติrails_migrations_pending
– รันการโยกย้ายที่รอดำเนินการ;react_native_command_unrecognized
- แก้ไขคำสั่ง react-native
ที่ไม่รู้จักremove_shell_prompt_literal
– ลบสัญลักษณ์พร้อมต์เชลล์นำหน้า $
ซึ่งพบได้ทั่วไปเมื่อคัดลอกคำสั่งจากเอกสารประกอบremove_trailing_cedilla
– ลบ cedillas ที่ต่อท้าย ç
ซึ่งเป็นการพิมพ์ผิดทั่วไปสำหรับรูปแบบแป้นพิมพ์ของยุโรปrm_dir
- เพิ่ม -rf
เมื่อคุณพยายามลบไดเร็กทอรีscm_correction
– แก้ไข scm ที่ไม่ถูกต้อง เช่น hg log
เป็น git log
;sed_unterminated_s
– เพิ่ม '/' ที่หายไปให้กับคำสั่ง s
sed
sl_ls
– เปลี่ยน sl
เป็น ls
;ssh_known_hosts
– ลบโฮสต์ออกจาก known_hosts
เมื่อมีคำเตือนsudo
- เพิ่ม sudo
ไว้หน้าคำสั่งก่อนหน้าหากล้มเหลวเนื่องจากการอนุญาตsudo_command_from_user_path
- รันคำสั่งจากผู้ใช้ $PATH
ด้วย sudo
;switch_lang
– สลับคำสั่งจากเค้าโครงในเครื่องของคุณเป็น en;systemctl
– สั่งพารามิเตอร์ของ systemctl
ที่สับสนได้อย่างถูกต้องterraform_init.py
- รัน terraform init
ก่อนวางแผนหรือนำไปใช้terraform_no_command.py
- แก้ไขคำสั่ง terraform
ที่ไม่รู้จักtest.py
– รัน pytest
แทน test.py
;touch
– สร้างไดเร็กทอรีที่ขาดหายไปก่อนที่จะ "สัมผัส";tsuru_login
- เรียกใช้ tsuru login
หากไม่ได้รับการรับรองความถูกต้องหรือเซสชันหมดอายุtsuru_not_command
– แก้ไขคำสั่ง tsuru
ที่ไม่ถูกต้อง เช่น tsuru shell
;tmux
– แก้ไขคำสั่ง tmux
unknown_command
– แก้ไข "คำสั่งที่ไม่รู้จัก" ในรูปแบบ hadoop hdfs เช่น เพิ่ม '-' ที่ขาดหายไปให้กับคำสั่งบน hdfs dfs ls
;unsudo
– ลบ sudo
ออกจากคำสั่งก่อนหน้าหากกระบวนการปฏิเสธที่จะทำงานบนสิทธิ์ superuservagrant_up
- เริ่มต้นอินสแตนซ์คนจรจัด;whois
– แก้ไขคำสั่ง whois
;workon_doesnt_exists
- แก้ไขชื่อ virtualenvwrapper
env ที่ระบบปฏิบัติการแนะนำให้สร้างใหม่wrong_hyphen_before_subcommand
- ลบยัติภังค์ที่วางไว้ไม่ถูกต้อง ( apt-install
-> apt install
, git-log
-> git log
ฯลฯ )yarn_alias
– แก้ไขคำสั่ง yarn
นามแฝงเช่น yarn ls
;yarn_command_not_found
– แก้ไขคำสั่ง yarn
ที่สะกดผิดyarn_command_replaced
- แก้ไขแทนที่คำสั่ง yarn
;yarn_help
– ช่วยให้เปิดเอกสาร yarn
ได้ง่ายขึ้น กฎต่อไปนี้จะเปิดใช้งานตามค่าเริ่มต้นบนแพลตฟอร์มเฉพาะเท่านั้น:
apt_get
– ติดตั้งแอปจาก apt หากไม่ได้ติดตั้ง (ต้องใช้ python-commandnotfound
/ python3-commandnotfound
);apt_get_search
- การเปลี่ยนแปลงที่พยายามค้นหาโดยใช้ apt-get
ด้วยการค้นหาโดยใช้ apt-cache
;apt_invalid_operation
- แก้ไขการโทร apt
และ apt-get
ที่ไม่ถูกต้อง เช่น apt-get isntall vim
;apt_list_upgradable
- ช่วยให้คุณรัน apt list --upgradable
after apt update
;apt_upgrade
- ช่วยให้คุณรัน apt upgrade
หลังจาก apt list --upgradable
;brew_cask_dependency
– ติดตั้งการพึ่งพาถัง;brew_install
– แก้ไขชื่อสูตรสำหรับ brew install
;brew_reinstall
– เปลี่ยน brew install <formula>
เป็น brew reinstall <formula>
;brew_link
– เพิ่ม --overwrite --dry-run
หากการเชื่อมโยงล้มเหลวbrew_uninstall
- เพิ่ม --force
เพื่อ brew uninstall
หากติดตั้งหลายเวอร์ชันbrew_unknown_command
– แก้ไขคำสั่ง brew ที่ไม่ถูกต้อง เช่น brew docto/brew doctor
;brew_update_formula
– เปลี่ยน brew update <formula>
เป็น brew upgrade <formula>
;dnf_no_such_command
- แก้ไขคำสั่ง DNF ที่พิมพ์ผิดnixos_cmd_not_found
- ติดตั้งแอปบน NixOS;pacman
– ติดตั้งแอปด้วย pacman
หากไม่ได้ติดตั้ง (ใช้ yay
, pikaur
หรือ yaourt
ถ้ามี)pacman_invalid_option
- แทนที่ตัวเลือก pacman
ตัวพิมพ์เล็กด้วยตัวพิมพ์ใหญ่pacman_not_found
– แก้ไขชื่อแพ็คเกจด้วย pacman
, yay
, pikaur
หรือ yaourt
yum_invalid_operation
– แก้ไขการเรียก yum
ที่ไม่ถูกต้อง เช่น yum isntall vim
;คำสั่งต่อไปนี้มาพร้อมกับ The Fuck แต่ไม่ได้เปิดใช้งานตามค่าเริ่มต้น:
git_push_force
- เพิ่ม --force-with-lease
ให้กับ git push
(อาจขัดแย้งกับ git_push_pull
);rm_root
- เพิ่ม --no-preserve-root
ใน rm -rf /
command หากต้องการเพิ่มกฎของคุณเอง ให้สร้างไฟล์ชื่อ your-rule-name.py
ใน ~/.config/thefuck/rules
ไฟล์กฎจะต้องมีสองฟังก์ชัน:
match ( command : Command ) - > bool
get_new_command ( command : Command ) - > str | list [ str ]
นอกจากนี้ กฎอาจมีฟังก์ชันเสริม:
side_effect ( old_command : Command , fixed_command : str ) - > None
กฎยังสามารถมีตัวแปรเผื่อเลือกได้ enabled_by_default
, requires_output
และ priority
Command
มีคุณลักษณะสามประการ: script
, output
และ script_parts
กฎของคุณไม่ควรเปลี่ยน Command
กฎ API เปลี่ยนไปใน 3.0: หากต้องการเข้าถึงการตั้งค่าของกฎ ให้นำเข้าด้วย from thefuck.conf import settings
settings
เป็นวัตถุพิเศษที่ประกอบจาก ~/.config/thefuck/settings.py
และค่าจาก env (ดูเพิ่มเติมด้านล่าง)
กฎตัวอย่างง่ายๆ สำหรับการรันสคริปต์ด้วย 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
ตัวอย่างกฎเพิ่มเติม ฟังก์ชันยูทิลิตี้สำหรับกฎ ตัวช่วยเฉพาะแอป/ระบบปฏิบัติการ
พารามิเตอร์ The Fuck หลายตัวสามารถเปลี่ยนแปลงได้ในไฟล์ $XDG_CONFIG_HOME/thefuck/settings.py
( $XDG_CONFIG_HOME
ค่าเริ่มต้นเป็น ~/.config
):
rules
– รายการกฎที่เปิดใช้งานตามค่าเริ่มต้น thefuck.const.DEFAULT_RULES
;exclude_rules
– รายการกฎที่ปิดใช้งานโดยค่าเริ่มต้น []
;require_confirmation
- ต้องได้รับการยืนยันก่อนที่จะรันคำสั่งใหม่ โดยค่าเริ่มต้น True
;wait_command
- ระยะเวลาสูงสุดในการรับเอาต์พุตคำสั่งก่อนหน้าในหน่วยวินาทีno_colors
- ปิดการใช้งานเอาต์พุตสีpriority
– กำหนดลำดับความสำคัญของกฎ กฎที่มีลำดับ priority
ต่ำกว่าจะถูกจับคู่ก่อนdebug
– เปิดใช้งานเอาต์พุตการดีบักโดยค่าเริ่มต้น False
;history_limit
– ค่าตัวเลขของจำนวนคำสั่งประวัติที่จะสแกน เช่น 2000
;alter_history
- ผลักดันคำสั่งคงที่ไปที่ประวัติโดยค่าเริ่มต้น True
;wait_slow_command
– ระยะเวลาสูงสุดเป็นวินาทีในการรับเอาต์พุตคำสั่งก่อนหน้า หากอยู่ในรายการ slow_commands
slow_commands
– รายการคำสั่งที่ช้าnum_close_matches
– จำนวนสูงสุดของการจับคู่ที่ใกล้เคียงที่จะแนะนำ โดยค่าเริ่มต้น 3
excluded_search_path_prefixes
- คำนำหน้าเส้นทางที่จะละเว้นเมื่อค้นหาคำสั่งตามค่าเริ่มต้น []
ตัวอย่างของ 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
หรือผ่านตัวแปรสภาพแวดล้อม:
THEFUCK_RULES
– รายการกฎที่เปิดใช้งาน เช่น DEFAULT_RULES:rm_root
หรือ sudo:no_command
;THEFUCK_EXCLUDE_RULES
– รายการกฎที่ปิดใช้งาน เช่น git_pull:git_push
;THEFUCK_REQUIRE_CONFIRMATION
– ต้องได้รับการยืนยันก่อนที่จะรันคำสั่งใหม่ true/false
;THEFUCK_WAIT_COMMAND
- จำนวนเวลาสูงสุดเป็นวินาทีในการรับเอาต์พุตคำสั่งก่อนหน้าTHEFUCK_NO_COLORS
- ปิดการใช้งานเอาต์พุตสี true/false
;THEFUCK_PRIORITY
– ลำดับความสำคัญของกฎ เช่น no_command=9999:apt_get=100
กฎที่มี priority
ต่ำกว่าจะถูกจับคู่ก่อนTHEFUCK_DEBUG
- เปิดใช้งานเอาต์พุตการดีบัก true/false
;THEFUCK_HISTORY_LIMIT
– จำนวนคำสั่งประวัติที่จะสแกน เช่น 2000
;THEFUCK_ALTER_HISTORY
- กดคำสั่งคงที่ไปที่ประวัติ true/false
;THEFUCK_WAIT_SLOW_COMMAND
- จำนวนเวลาสูงสุดเป็นวินาทีในการรับเอาต์พุตคำสั่งก่อนหน้าหากอยู่ในรายการ slow_commands
THEFUCK_SLOW_COMMANDS
– รายการคำสั่งที่ช้า เช่น lein:gradle
;THEFUCK_NUM_CLOSE_MATCHES
– จำนวนการแข่งขันที่ใกล้เคียงสูงสุดที่จะแนะนำ เช่น 5
THEFUCK_EXCLUDED_SEARCH_PATH_PREFIXES
- คำนำหน้าเส้นทางที่จะละเว้นเมื่อค้นหาคำสั่งตามค่าเริ่มต้น []
ตัวอย่างเช่น:
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 '
หากคุณต้องการสร้างชุดกฎที่ไม่เปิดเผยต่อสาธารณะโดยเฉพาะ แต่ยังคงต้องการแชร์กฎเหล่านั้นกับผู้อื่น ให้สร้างแพ็คเกจชื่อ thefuck_contrib_*
โดยมีโครงสร้างดังต่อไปนี้:
thefuck_contrib_foo
thefuck_contrib_foo
rules
__init__.py
*third-party rules*
__init__.py
*third-party-utils*
setup.py
The Fuck จะค้นหากฎที่อยู่ในโมดูล rules
พฤติกรรมเริ่มต้นของ The Fuck ต้องใช้เวลาในการรันคำสั่งก่อนหน้าอีกครั้ง เมื่ออยู่ในโหมดทันใจ The Fuck จะช่วยประหยัดเวลาด้วยการบันทึกเอาต์พุตด้วยสคริปต์ จากนั้นจึงอ่านบันทึก
ปัจจุบันโหมดทันใจรองรับเฉพาะ Python 3 ที่มี bash หรือ zsh จำเป็นต้องปิดการใช้งานฟังก์ชันแก้ไขอัตโนมัติของ zsh เพื่อให้ thefuck ทำงานได้อย่างถูกต้อง
หากต้องการเปิดใช้งานโหมดทันใจ ให้เพิ่ม --enable-experimental-instant-mode
ในการเริ่มต้นนามแฝงใน .bashrc
, .bash_profile
หรือ .zshrc
ตัวอย่างเช่น:
eval $( thefuck --alias --enable-experimental-instant-mode )
ดูการมีส่วนร่วม.md
ใบอนุญาตโครงการสามารถพบได้ที่นี่