0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TheFuck:實用的命令自動糾正工具

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-31 10:46 ? 次閱讀

The Fuck 是一款功能強大的、Python編寫的應(yīng)用程序,可用于糾正控制臺命令中的錯誤,非常強大。此外,用戶還可通過寫Python代碼的方式自定義修復(fù)規(guī)則。

更多示例如:

自動識別沒有權(quán)限,在命令前面添加 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
...

識別到?jīng)]有推送到遠程分支,自動追加:

? 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)
...

如果你不擔(dān)心fuck修正的結(jié)果是錯誤的,你可以禁用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
...

在開發(fā)機上可以這么做,在生產(chǎn)機器上最好是謹慎一點,不推薦這么做。

1.安裝

在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

在其他系統(tǒng)上, 使用pip安裝 The Fuck

pip install thefuck

2.配置

接下來需要把這個命令寫入到啟動腳本中,根據(jù)你的終端類型,運行相應(yīng)的命令即可:

Bash

chcp.com 65001 
eval "$(the***pan>"

其中 chcp.com 65001 只有在windows環(huán)境下才需要運行。

Zsh:

eval "$(the***pan>"

其他的可見:

https://github.com/nvbn/thefuck/wiki/Shell-aliases

3.原理

其實TheFuck的原理就是規(guī)則匹配(正則表達式),如果找到匹配規(guī)則的命令,則創(chuàng)建一個命令給用戶選擇或直接運行。

默認情況下的規(guī)則有:

  • cat_dir - 當(dāng)你嘗試cat目錄的時候,用ls替換cat;
  • cd_correction – 拼寫檢查和糾正失敗的cd命令;
  • cd_mkdir – 在進入目錄之前創(chuàng)建目錄;
  • cd_parent – 更改 cd..cd ..;
  • dry – 修復(fù)類似的重復(fù)問題:git git push
  • fix_alt_space – 用空格字符代替Alt + Space;

等等,具體可以在官方文檔中找到:
https://github.com/nvbn/thefuck

4. 創(chuàng)建自己的修復(fù)規(guī)則

要添加自己的規(guī)則,在 ~/.config/thefuck/rules 文件夾中,

創(chuàng)建一個文件名為 your-rule-name.py 的規(guī)則文件,其中必須包含兩個函數(shù):

match(command: Command) - > bool
get_new_command(command: Command) - > str | list[str]

下面是簡單的 sudo 規(guī)則示例:

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

如果命令運行結(jié)果出現(xiàn) permission denied 或者 EACCES,則執(zhí)行 sudo xxx.

此外,還可以配置side_effect,如果你配置了enabled_by_default = True,side_effect函數(shù)內(nèi)的操作將會被執(zhí)行,本例中是對當(dāng)前目錄下的文件夾執(zhí)行賦權(quán)操作: chmod 777 .

大家可以動手試試自己配一個修復(fù)命令,還是相當(dāng)有意思的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67765
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3198

    瀏覽量

    57360
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84077
收藏 人收藏

    評論

    相關(guān)推薦

    Python命令補全工具argcomplete簡介

    在使用Python 命令或者 Python的命令工具的時候,一個痛點是沒有補全。比如python -m后面輸入包名字,就沒有提示,每次想運行一個http server的時候,都需要搜索一下http服務(wù)的包名。另外,像pip,p
    發(fā)表于 07-04 10:19 ?409次閱讀

    matlab的實用工具命令

    matlab的實用工具命令實用工具 Abcdchk  檢測(A、B、C、D)組的一致性 Chop 取n個重要的位置 Dexresp 離散取樣響應(yīng)函數(shù) 
    發(fā)表于 09-22 15:56

    基于FPGA的錯誤檢測與自動糾正的設(shè)計

    本文利用糾錯編碼的基本知識,提出了一種簡單實用的能自動糾正一位錯誤和檢查兩位錯誤的編碼方法,并且通過VHDL語言編程,用FPGA器件來實現(xiàn)。在我們自己的嵌入式系統(tǒng)中,EDAC電路
    發(fā)表于 01-18 16:29 ?2595次閱讀
    基于FPGA的錯誤檢測與<b class='flag-5'>自動</b><b class='flag-5'>糾正</b>的設(shè)計

    學(xué)習(xí)記憶Linux命令的5大工具解析

    Linux 新手往往對命令行心存畏懼。部分原因是因為需要記憶大量的命令,畢竟掌握命令是高效使用命令行的前提。不幸的是,學(xué)習(xí)這些命令并無捷徑,
    的頭像 發(fā)表于 12-25 17:24 ?4539次閱讀
    學(xué)習(xí)記憶Linux<b class='flag-5'>命令</b>的5大<b class='flag-5'>工具</b>解析

    語音識別命令生成工具的應(yīng)用程序(免費下載)

    可以自己編程寫語音命令功能的語音識別命令生成工具的應(yīng)用程序
    發(fā)表于 06-04 10:00 ?36次下載

    Xilinx軟件命令工具:XSCT開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令工具進行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺。
    的頭像 發(fā)表于 11-21 06:02 ?1.4w次閱讀

    Xilinx軟件命令工具進行開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令工具進行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺。
    的頭像 發(fā)表于 11-22 06:53 ?6465次閱讀

    Linux網(wǎng)絡(luò)狀態(tài)工具ss命令使用詳解

    很多流行的Linux發(fā)行版都支持ss以及很多監(jiān)控工具使用ss命令.熟悉這個工具有助于您更好的發(fā)現(xiàn)與解決系統(tǒng)性能問題.本人強烈建議使用ss命令替代netstat部分
    的頭像 發(fā)表于 11-12 15:43 ?4181次閱讀

    Linux命令大全搜索工具大全

    ,增加了一些數(shù)據(jù)。對他們的辛勤勞動表示敬意,個人希望能本地離線搜索,不喜歡廣告,希望得到干凈漂亮的預(yù)覽界面,業(yè)余和工作時間需要使用大量的命令,所以干了一件看似比較愚蠢的事情,在回頭有空的時候估計能做一個App?或者是命令行幫助工具
    發(fā)表于 01-05 08:00 ?4次下載

    Git常見的誤區(qū)和命令工具等綜述

    Git常見的誤區(qū)和命令工具等綜述
    發(fā)表于 08-31 09:51 ?0次下載

    Golang基于flag庫實現(xiàn)一個命令工具

    Golang 標準庫中的 flag 庫提供了解析命令行選項的能力,我們可以基于此來開發(fā)命令工具
    的頭像 發(fā)表于 10-28 09:26 ?1175次閱讀

    新的開源命令工具west

    電子發(fā)燒友網(wǎng)站提供《新的開源命令工具west.zip》資料免費下載
    發(fā)表于 11-11 09:25 ?0次下載
    新的開源<b class='flag-5'>命令</b>行<b class='flag-5'>工具</b>west

    Synopsys工具命令中filter的妙用

    在S家的后端設(shè)計工具里,包括DC、ICC、ICC2、PT , 大體的命令都是相通的。并且主要命令的命名和分類都是有一定的相似性的(_但是要注意:盡管在相同的命令下,由于輸入和參數(shù)配置的
    的頭像 發(fā)表于 06-14 14:57 ?774次閱讀
    Synopsys<b class='flag-5'>工具</b>中<b class='flag-5'>命令</b>中filter的妙用

    TheFuck:Python寫的超實用命令糾正工具

    The Fuck 是一款功能強大的、Python編寫的應(yīng)用程序,可用于糾正控制臺命令中的錯誤,非常強大。此外,用戶還可通過寫Python代碼的方式自定義修復(fù)規(guī)則。 修復(fù)效果如下動圖所示: 更多示例
    的頭像 發(fā)表于 11-01 11:35 ?293次閱讀
    <b class='flag-5'>TheFuck</b>:Python寫的超實用<b class='flag-5'>命令</b><b class='flag-5'>糾正</b><b class='flag-5'>工具</b>

    jvm內(nèi)存分析命令工具

    JVM內(nèi)存分析是Java開發(fā)和調(diào)優(yōu)過程中非常重要的一部分。通過對JVM內(nèi)存分析命令工具的深入了解和使用,可以幫助開發(fā)人員識別內(nèi)存泄漏、性能瓶頸等問題,并對Java應(yīng)用進行優(yōu)化。 下面將從不同的角度
    的頭像 發(fā)表于 12-05 11:07 ?981次閱讀