Skip to content

Latest commit

 

History

History
86 lines (71 loc) · 4.04 KB

README-ja.md

File metadata and controls

86 lines (71 loc) · 4.04 KB

wanna

ChatGPTを用いた自然言語によるシェルコマンドランチャー

wanna

概要

wannaコマンドは、ChatGPTを用いた自然言語によるシェルコマンドランチャーです。自然言語によって、shell commandを生成して実行し、名付けし、管理できます。

コマンドライン上での操作は簡単に多くのことを行うことができるため、非常に便利です。しかし、多くのコマンドやオプションの組み合わせを覚えておくのは熟練したプログラマでもむずかしく、Google検索やmanコマンドなどを駆使して思い出しながら実行することも多くあるでしょう。

たとえば、「このディレクトリの配下にあるすべての.pyファイルを再帰的に発見して、それらの行数の合計を出力する」 といったタスクを行おうとするとき、findxargswcなどのコマンドをどのように組み合わせたら良いのかを一発で思い出すのは中々難しいです。

wanna think

このようなときにwanna thinkコマンドを使います。

$ wanna think このディレクトリの配下にあるすべての.pyファイルを再帰的に発見して、それらの行数の合計を出力する

と打てば、AIアシスタントが自動的に次のようなbash scriptを生成します。

#!/usr/bin/env bash
find . -name "*.py" -exec cat {} + | wc -l

あなたはただ、それをみて、実行するかしないかを決めれば良いだけです。

? What's next? (Use arrow keys)
 » Do
   Save
   Additonal Request
   Another Question
   Exit

あなたの依頼に対して、AIはスクリプトを生成し、その解説をします。 Doを選べば、提案されたスクリプトを実際に実行してその結果を表示します。 実行後に問題なく動作することを確認したら、保存をすることができます。

? I thought of the following names. Which one do you like? (Use arrow keys)
 » count_py_lines
   py_line_counter
   recursive_py_counter
   py_line_sum

そういえば、「コンピュータサイエンスで最も難しいことは"命名"である」とフィルカールトンも言っていました。 このAIは、生成したスクリプトに丁度良い名前も提案してくれます。あなたは、コードレビューアとして良さそうな名前を選ぶだけです。

wanna do

wanna doコマンドを使えば、過去に保存したコマンドを実行することができます。 ただ単にwanna doと入力すればインクリメンタルに保存済のコマンドを選び、実行できます。

$ wanna do

wanna-do

$ wanna do random_passwords

のようにコマンド名を直接打って実行することもできます。

wanna list

記録済のスクリプトをリストアップします。

$ wanna list 
count_py_lines      :このディレクトリの配下にあるすべての.pyファイルを再帰的に発見して、それらの行数の合計を出力する
top_memory_usage    :メモリ使用量の多いプロセスを上位10個出力する
random_passwords    :ランダムに10個のパスワードを生成する

これを用いると、たとえば、こんなことができます。

$ wanna list | peco | xargs wanna do

wanna-list-peco

インストール

インストールは、pipを用いて簡単にできます。python3.10以上の環境で動作します。

pip install wanna

また、OEPNAI_API_KEYを使うため、ご自身のアカウントでtokenを取得してください。

export OPENAI_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"