2022年6月23日木曜日

間違って実行したコマンドを訂正して実行してくれる thefuck を試す

間違って実行したコマンドを訂正して実行してくれる thefuck を試す

概要

タイポなどでコマンドミスしたり権限がなくてコマンドエラーになった場合に再度コマンドを実行せず fuck と実行すると正しいコマンドを実行してくれるツールです
今回は実際にどんな感じで動作するのか試してみました

環境

  • macOS 11.6.7
  • Python 3.10.2
  • thefuck

インストール

  • brew install thefuck
  • eval $(thefuck --alias)

とりあえず試す

puthon とタイポしたあとに fuck するとコマンドを正しく作成し直してから実行してくれます

% puthon
zsh: command not found: puthon
% fuck
python [enter/↑/↓/ctrl+c]
Python 3.9.13 (main, May 24 2022, 21:28:44) 
[Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

どうやって動作しているのか

ルールを記載することでルールに習って新しいコマンドを生成してくれます

なので対応していないコマンドや独自のコマンドがある場合は自分で追加することができます

独自のルールを作成してみる

~/.config/thefuck/rules 配下にルールファイルを作成することで独自のルールを作成できます
今回は hoge という存在しないコマンドをタイプしたあとに fuck すると ls コマンドの結果を返すルールを作成してみます

  • mkdir -p ~/.config/thefuck/rules
  • vim ~/.config/thefuck/rules/hoge_ls.py
import re
from thefuck.shells import shell

# enabled_by_default = True
# requires_output = True
# priority = 1

regex = re.compile(r'fuga')


def match(command):
    return bool(regex.findall(command.script))


def get_new_command(command):
    return "ls"

独自ルールを作成するときのポイント

match でなかなか目的の結果を補足できないケースが多かったので一旦 True を必ず返却するようにして print デバッグなど使ってみましょう

もし他のルールで補足されると独自ルールに回ってこないので priority を小さくすることでルールの評価を優先できるので優先度を上げてみましょう

参考サイト

最後に

パッケージの名前があれですが便利に使えるツールかなと思います
リバースサーチに慣れている場合は fuck に切り替えるのが大変かもしれません

あとはプロダクション環境などでは逆に誤って実行してしまうケースもあるので使わないほうがいいかもしれません

0 件のコメント:

コメントを投稿