哈嘍兄弟們,我們在學習Python的程序中,有這么一款工具,可以輕松糾正我們寫錯的命令,簡直太好用了~
The Fuck 是一款功能強大的、Python撰寫的應用程式,可用于糾正控制臺命令中的錯誤,非常強大,此外,用戶還可通過寫Python代碼的方式自定義修復規則,
修復效果如下動圖所示:

更多示例如:
自動識別沒有權限,在命令前面添加 sudo
? 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)
如果你不擔心fuck修正的結果是錯誤的,你可以禁用require_confirmation 選項,讓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 [sudo] password for nvbn: Reading package lists... Done
在開發機上可以這么做,在生產機器上最好是謹慎一點,不推薦這么做,
安裝
在OS X上,可以通過Homebrew(或在Linux上通過Linuxbrew)安裝The Fuck:
brew install thefuck
在Ubuntu / Mint上,使用以下命令安裝The Fuck:
sudo apt update sudo apt install python3-dev python3-pip python3-setuptools sudo pip3 install thefuck
在FreeBSD上,使用以下命令安裝The Fuck:
pkg install thefuck
在其他系統上, 使用pip安裝The Fuck:
pip install thefuck
配置
接下來需要把這個命令寫入到啟動腳本中,根據你的終端型別,運行相應的命令即可:
Bash
chcp.com 65001 eval "$(thefuck --alias)"
其中 http://chcp.com 65001 只有在windows環境下才需要運行,
Zsh
eval "$(thefuck --alias)"
原理
其實TheFuck的原理就是規則匹配(正則運算式),如果找到匹配規則的命令,則創建一個命令給用戶選擇或直接運行,
默認情況下的規則有:
- cat_dir - 當你嘗試cat目錄的時候,用ls替換cat;
- cd_correction – 拼寫檢查和糾正失敗的cd命令;
- cd_mkdir – 在進入目錄之前創建目錄;
- cd_parent – 更改 cd… 為cd …;
- dry – 修復類似的重復問題:git git push;
- fix_alt_space – 用空格字符代替Alt + Space;
等等,具體可以在官方檔案中找到:
https://github.com/nvbn/thefuck
創建自己的修復規則
要添加自己的規則,在 ~/.config/thefuck/rules 檔案夾中,
創建一個檔案名為 your-rule-name.py 的規則檔案,其中必須包含兩個函式:
match(command: Command) -> bool
get_new_command(command: Command) -> str | list[str]
下面是簡單的 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
# 兄弟們學習python,有時候不知道怎么學,從哪里開始學,掌握了基本的一些語法或者做了兩個案例后,不知道下一步怎么走,不知道如何去學習更加高深的知識, # 那么對于這些大兄弟們,我準備了大量的免費視頻教程,PDF電子書籍,以及源代碼! # 直接在這個君羊 872937351 自取即可
如果命令運行結果出現 permission denied 或者 EACCES,則執行 sudo xxx.
此外,還可以配置side_effect,如果你配置了enabled_by_default = True,side_effect函式內的操作將會被執行,本例中是對當前目錄下的檔案夾執行賦權操作: chmod 777 .
最后
大家可以動手試試自己配一個修復命令,還是相當有意思的,
好了今天的分享就到這里結束了,下次見~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539753.html
標籤:其他
