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

来源:https://www.cnblogs.com/hahaa/archive/2022/12/12/16971815.html
-Advertisement-
Play Games

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


哈嘍兄弟們,我們在學習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 .

最後

大家可以動手試試自己配一個修複命令,還是相當有意思的。

好了今天的分享就到這裡結束了,下次見~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • keepalived 主備使用 本篇主要介紹一下 keepalived 的基本的 主備使用 1.概述 什麼是 keepalived呢,它是一個集群管理中 保證集群高可用的軟體,防止單點故障,keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundanc ...
  • 有了非對稱密鑰、摘要、對稱密鑰等現代密碼學演算法與技術,是不是就能夠保證通信的安全無虞呢,並不是。 密碼學在互聯網應用的四個目標:機密性、完整性、身份驗證、防抵賴。到目前為止,我們討論的技術中,其中防抵賴的目標並沒有達到。 假設A、B、C三個人共用一個對稱加密演算法密鑰,現在A和B互相通信,A和B一直認 ...
  • 多線程程式 競態條件:多線程程式執行的結果是一致的,不會隨著CPU對線程不同的調用順序而產生不同的運行結果. 解決?:互斥鎖 mutex 經典的賣票問題,三個線程賣100張票 代碼1 #include <iostream> #include <thread> #include <list> #inc ...
  • C++語言層面多線程=>好處:跨平臺 windows/linux thread/mutex/condition_variable lock_gurad/unique_lock atomic/原子類型,基於CAS操作的原子類型 線程安全的 睡眠sleep_for C++ thread => windo ...
  • JZ45 把數組排成最小的數 描述 輸入一個非負整數數組numbers,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。 例如輸入數組[3,32,321],則列印出這三個數字能排成的最小數字為321323。 1.輸出結果可能非常大,所以你需要返回一個字元串而不是整數 2.拼接 ...
  • 1. String 字元串是 Redis 最基本的數據類型,不僅所有 key 都是字元串類型,其它幾種數據類型構成的元素也是字元串。註意字元串的長度不能超過 512M。 1.1 編碼方式(encoding) 字元串對象的編碼可以是 int ,raw 或者 embstr 。 int 編碼:保存的是可以 ...
  • 應用背景: 隨著科學技術的發展,崗位數量越來越多,特別是每逢畢業季找工作的人數也很多,如果人們找工作或者企業招人靠純手工的話,費時費力,僅僅是篩選簡歷和費勁,並且員工找工作投簡歷可能得需要剋服時間和空間上的困難。所以為了方便員工找工作和企業招人,節約時間,特此開發員工招聘系統。(個人課設) 用例圖( ...
  • 原文:Jgit的使用筆記 - Stars-One的雜貨小窩 之前整的一個系統,涉及到git代碼的推送,是通過cmd命令去推送的,然後最近在產品驗收的時候,測試部門隨意填了個git倉庫,然後導致倉庫代碼被覆蓋了,還好本地留有備份,沒出現啥大問題 然後就計劃於是就改為使用Jgit庫來實現推送代碼的功能, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...