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

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

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

TheFuck:Python寫的超實(shí)用命令糾正工具

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-01 11:35 ? 次閱讀

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

修復(fù)效果如下動(dòng)圖所示:

圖片

更多示例如:

自動(dòng)識(shí)別沒(méi)有權(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
...

識(shí)別到?jīng)]有推送到遠(yuǎn)程分支,自動(dò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.
...

識(shí)別到拼寫錯(cuò)誤:

? 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é)果是錯(cuò)誤的,你可以禁用require_confirmation 選項(xiàng),讓fuck自動(dòng)運(yùn)行更正的命令:

? 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ā)機(jī)上可以這么做,在生產(chǎn)機(jī)器上最好是謹(jǐn)慎一點(diǎn),不推薦這么做。

1.安裝

在OS X上,可以通過(guò)Homebrew(或在Linux上通過(guò)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.配置

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

Bash

chcp.com 65001 
eval "$(thefuck --alias)"

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

Zsh:

eval "$(thefuck --alias)"

其他的可見:

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

3.原理

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

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

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

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

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

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

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

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

下面是簡(jiǎn)單的 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

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

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

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

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207910
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

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

    關(guān)注

    37

    文章

    3198

    瀏覽量

    57360
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84077
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python命令補(bǔ)全工具argcomplete簡(jiǎn)介

    在使用Python 命令或者 Python命令工具的時(shí)候,一個(gè)痛點(diǎn)是沒(méi)有補(bǔ)全。比如python
    發(fā)表于 07-04 10:19 ?409次閱讀

    如何使用命令區(qū)保存數(shù)據(jù)至優(yōu)盤

    本文主要介紹的是如何使用命令區(qū)保存數(shù)據(jù)至優(yōu)盤。
    發(fā)表于 04-10 09:21 ?31次下載

    cmd常用命令大全 cmd運(yùn)行命令

    cmd常用命令大全 2K和XP下的CMD命令 accwiz.exe > 輔助工具向?qū)?/div>
    發(fā)表于 01-08 09:12 ?3.1w次閱讀

    Ubuntu常用命令大全

    Ubuntu常用命令大全,包括常用管理目錄,系統(tǒng)命令,硬盤相關(guān),內(nèi)存相關(guān),查看進(jìn)程等命令
    發(fā)表于 01-06 11:16 ?0次下載

    vim常用命令

    vim常用命令
    發(fā)表于 01-08 15:59 ?3次下載

    redis常用命令總結(jié)

    本文是對(duì)redis常用命令總結(jié)。
    發(fā)表于 02-09 11:25 ?1542次閱讀

    linux常用命令手冊(cè)

    linux常用命令手冊(cè)免費(fèi)下載。
    發(fā)表于 06-01 14:59 ?63次下載

    Memcache系統(tǒng)常用命令講解

    Memcache系統(tǒng)常用命令講解(無(wú)線電源技術(shù)商業(yè)計(jì)劃書)-該文檔為Memcache系統(tǒng)常用命令講解文檔,是一份還算不錯(cuò)的參考文檔,感興趣的可以下載看看,,,,,,,,,,,,,,,,
    發(fā)表于 09-28 11:27 ?5次下載
    Memcache系統(tǒng)常<b class='flag-5'>用命令</b>講解

    linux常用命令大全

    linux常用命令大全,一些常用的命令都可以找到
    發(fā)表于 03-03 09:20 ?0次下載

    Linux常用命令TOP 10詳細(xì)匯總,入門必學(xué)。

    Linux常用命令TOP 10詳細(xì)匯總,入門必學(xué)。 大家應(yīng)該都知道Linux操作系統(tǒng),就算不熟悉至少也聽說(shuō)過(guò)吧,由于它是開放性的,也是免費(fèi)的,且安全性比較高等,近些年受到越來(lái)越多人的喜歡,不少公司
    的頭像 發(fā)表于 10-09 14:31 ?1090次閱讀

    Linux常用命令

    Linux常用命令
    的頭像 發(fā)表于 01-12 11:19 ?1036次閱讀

    Linux常用命令手冊(cè)分享

    linux常用命令合集
    發(fā)表于 04-26 11:46 ?1次下載

    TheFuck:實(shí)用的命令自動(dòng)糾正工具

    The Fuck 是一款功能強(qiáng)大的、Python編寫的應(yīng)用程序,可用于糾正控制臺(tái)命令中的錯(cuò)誤,非常強(qiáng)大。此外,用戶還可通過(guò)Python代碼
    的頭像 發(fā)表于 10-31 10:46 ?407次閱讀

    用命令工具ADB(Android Debug Bridge)常見的ADB命令

    ADB(Android Debug Bridge)是一種通用命令工具,可以讓您通過(guò)計(jì)算機(jī)與設(shè)備通信。
    的頭像 發(fā)表于 11-05 11:26 ?1223次閱讀

    Python自帶的命令窗口

    Python自帶的命令窗口,也稱為Python交互式解釋器,是Python編程語(yǔ)言的一個(gè)重要工具,它允許用戶在
    的頭像 發(fā)表于 11-22 14:02 ?709次閱讀