一鍵fxxk,程式碼修復神器拯救你
作者 | 一一
出品 | AI科技大本營(ID:rgznai100)
在成為一個合格的開發者之前,大多數人一般都經歷過被命令列反覆“fuck”蹂躪。當然,改程式碼改不動了,你的內心也是“無 fuck 可說”,尤其在檢查半天之後發現這個 bug 可能只是拼寫出現了錯誤。
這時候,你應該萬分期待有個 AI 工具進行智慧處理或者自動化的程式碼修復工具。
在 GitHub 上,就有這樣一個程式碼修復萬能神器的專案,它可以糾正你之前的控制檯命令中的錯誤,一鍵執行,隨後一路暢通。
目前,這個名叫 The Fuck 的抒情性名稱專案在 GitHub 上已收穫 40564 個 Star,2011 個 fork,可以說擁有超高人氣。
這個工具的用法簡單高效,當你在 Terminal 裡打錯一個命令時,不用修改後重新打一遍,而是直接寫個 fuck,該工具就會自動幫你修證然後執行程式。站在錯誤命令列的對面,這詞天生大有“去你的”的壓迫性氣勢,聽起來是不是既解氣又暢快?
具體是如何糾正程式碼錯誤的?舉幾個例子:
比如忘記輸入 sudo,只執行 apt-get install vim,它就會提示 permission denied,這時執行 fuck,就會自動幫你執行 sudo apt-get install vim。
➜ 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,就會提示 The current branch master has no upstream branch,隨後執行 fuck,則自動執行 git push --set-upstream origin master。
➜ 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. ...
如果犯了低階拼寫錯誤,比如把 python 打成了 puthon,執行 puthon 後就會提醒 No command 'puthon' found,那麼再次祭出 fuck,就會自動執行 python,再也不用為拼寫錯誤費神了。
➜ 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,就會顯示 not a git command,這時果斷 fuck,就會自動執行 git branch 。
➜ 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 時會提示 not a task,同樣 fuck 一出,通暢無阻,它會自動執行 lein repl。一招致勝,厲害嗎?
➜ 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 ...
對了,在知乎有開發者朋友在這裡想要友情提醒一下:執行的時候千萬不要讀出來,用習慣了容易成為口頭禪......用著就會發現,每一個需要修改的命令列你都會不由自主想使 fuck。
還有個問題你可能想問,The Fuck 的執行速度會不會太慢了?在這裡你感受下的即時模式。(https://github.com/nvbn/thefuck#experimental-instant-mode)
The Fuck 的預設行為需要時間來重新執行以前的命令。在即時模式下,The Fuck 通過使用指令碼記錄輸出,然後讀取日誌來節省時間。
目前,即時模式僅支援使用 bash 或 zsh 的 Python 3,還需禁用 zsh 的自動更正功能才能正常使用。
要啟用即時模式,新增 --enable-experimental-instant-mode 到別名初始化 .bashrc,.bash_profile 或 .zshrc。
例如:
eval $(thefuck --alias --enable-experimental-instant-mode)
有沒有想要試一試的衝動?接下來,將為你介紹 The Fuck 如何安裝?具體又有哪些要求?
要求
python (3.4+)
pip
python-dev
安裝
可以安裝 The Fuck 的系統有很多,你可以在 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 上使用以下命令進行安裝:
sudo portsnap fetch updatecd /usr/ports/misc/thefuck && sudo make install clean
在 ChromeOS 的 chromebrew 中使用以下命令安裝:
crew install thefuck
在其他系統,使用 pip 進行安裝:
pip install thefuck
或者,你也可以使用 OS package 管理器(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)
或者使用 shell 配置(Bash,Zsh,Fish,Powershell,tcsh)。
更改僅在新的 shell 會話中可用。如果要立即進行更改,請執行 source ~/.bashrc(或者像 .zshrc 這樣的 shell 配置檔案)。
要在沒有確認的情況下執行固定命令,請使用 --yeah 選項(或者 -y):
fuck --yeah
如果要以遞迴方式修復命令,請使用 -r 選項:
fuck -r
如何運轉?
The Fuck 整體的運轉依靠的是將上一個命令與規則進行匹配。如果找到匹配項,則使用匹配的規則建立新命令並執行。另外,你也可以建立屬於自己的規則,還可以在檔案中更改幾個 The Fuck 引數。
預設情況下啟用的規則大約有 120 個,以下給出 5 個命令的示例:
adb_unknown_command—像 adb logcta 那樣修復拼寫錯誤的命令;
ag_literal—需要建議時給 ag 新增 -Q ;
aws_cli—像 aws dynamdb scan 那樣修復拼寫錯誤的命令 ;
az_cli—像 az providers 那樣修復拼寫錯誤的命令;
cargo—替換 cargo,執行 cargo build。
預設情況下,僅在特定平臺上啟用的規則有 15 個,以下列出 3 個示例:
apt_get—如果還沒有安裝,則從 apt 安裝應用程式(需要 python-commandnotfound/ python3-commandnotfound);
apt_invalid_operation—修復無效 apt 和 apt-get calls,如 apt-get isntall vim;
brew_cask_dependency—安裝 cask 依賴項。
以下命令與 The Fuck 捆綁在一起,但預設情況下不啟用:
git_push_force—給--force-with-lease 新增一個 git push(可能與 git_push_pull 衝突);
rm_root—給 rm -rf / 命令新增 --no-preserve-root。
如果你要新增屬於自己的規則,在 ~/.config/thefuck/rules 建立一個 your-rule-name.py 檔案。規則檔案必須包含兩個函式:
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。
以下給出使用 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
走起來,安裝一個試試?不爽就扔個 fuck。
GitHub 連結:
https://github.com/nvbn/thefuck
推薦閱讀
點選“閱讀原文”,開啟CSDN APP 閱讀更貼心!
相關文章
- 拯救你的程式碼
- 拯救你的Go程式碼Go
- Android熱修復原理(一)熱修復框架對比和程式碼修復Android框架
- win10鍵盤驅動怎麼修復_win10鍵盤驅動一鍵修復Win10
- 程式碼報錯不用愁,CodeGeeX一鍵完成程式碼修復、錯誤解釋的功能上線了!
- win10系統如何使用一鍵修復 win10電腦執行一鍵修復的步驟Win10
- 程式碼注入漏洞以及修復方法
- webstrom配置一鍵修復ESLint的報錯WebEsLint
- win10系統dll檔案一鍵修復 缺少dll檔案修復方法Win10
- 這個牛逼的IDE外掛,讓你輕鬆檢測程式碼安全漏洞,一鍵修復,核心引擎已開源IDE
- CartPole小車擺修復版程式碼
- win10缺失dll檔案怎麼修復 win10一鍵修復dll缺失Win10
- win10怎麼進入系統修復_一鍵修復win10系統教程Win10
- 低程式碼如何“拯救”企業?
- 讓程式設計師少掉幾根頭髮的Facebook智慧bug修復神器程式設計師
- 程式設計師,請儘早修復你的Bug程式設計師
- 程式設計師 請儘早修復你的Bug程式設計師
- Unity下Bug修復神器InjectFix正式對外開源Unity
- win10系統登錄檔怎麼修復 win10一鍵修復登錄檔Win10
- 網站存在漏洞怎麼修復 如何修補網站程式程式碼漏洞網站
- 膝上型電腦鍵盤失靈一鍵修復步驟詳解
- 養髮神器:重複程式碼一鍵生成,從此遠離加班,告別禿頭!
- 鍵盤失靈了要怎麼解決 電腦鍵盤失靈一鍵修復
- 一鍵修復王祖賢、林青霞照片的AI小程式火了,但技術還不到火候AI
- 你值得知道的Android 熱修復,以及熱修復原理Android
- 你期待已久的熱修復—Tinker熱修復整合總結
- 拿什麼拯救你,我的程式碼--c#編碼規範實戰篇C#
- 推薦一款 Python 神器,5 行 Python 程式碼 實現一鍵批量扣圖Python
- 華碩win10鍵盤失靈怎麼辦 一鍵修復鍵盤失靈的方法Win10
- 一鍵完成php程式碼部署,你還在一點點的編輯?PHP
- 一張圖講解物件鎖和關鍵字synchronized修飾方法(程式碼塊)物件synchronized
- 深入探索Android熱修復技術原理讀書筆記 —— 程式碼熱修復技術Android筆記
- 網站漏洞測試php程式碼修復詳情網站PHP
- 網站程式碼漏洞審計挖掘與修復方法網站
- 最新黑金桌布小程式原始碼 二開修復版原始碼
- 修復ASM磁碟頭(一)ASM
- 手把手帶你打造一個 Android 熱修復框架Android框架
- 同學,你的系統吐司可能需要修復一下