注意
本文翻訳は元のドキュメントを翻訳・簡略化したものです。矛盾がある場合は、元のドキュメントを優先してください!
Tip
特に指定がない限り、この記事のすべてのコマンドは Debian/Ubuntu 系 Linux ディストリビューションで最適に動作します。
需要と問題点#
Linux システムの最適な使用法は、もちろん CLI ですが、CLI の大きな問題点は、グラフィカルなインターフェースがないことです!当たり前ですが
グラフィカルなインターフェースがないため、ユーザーはコマンドを一文字ずつ入力する必要があります。グラフィカルなインターフェースがないため、プロフェッショナルでも初心者でも、たまには文字を間違えたり、タイプミスをしたりする低レベルのエラーを犯すことがあります。しかし、プロフェッショナルと初心者の違いは、プロフェッショナルはコマンドラインのショートカットキーを使ってエラーを素早く修正することができるということです。この記事「Linux コマンドラインの編集ショートカットキー」では、Linux ユーザーがコマンドを操作するためのいくつかのショートカットキーについて詳しく説明しています。
しかし、それでも面倒だと思います。長いコマンドを入力した後にエラーを修正するのは本当に面倒です。そこで、「Fuck!」と叫びたくなるような劇的なコマンドが生まれました:TheFuck
機能#
例以下の内容は元の開発者nvbnからの引用です#
➜ 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)
...
➜ git brnch
git: 'brnch' is not a git command. See 'git --help'.
Did you mean this?
branch
➜ fuck
git branch [enter/↑/↓/ctrl+c]
* master
➜ lein rpl
'rpl' is not a task. See 'lein help'.
Did you mean this?
repl
➜ fuck
lein repl [enter/↑/↓/ctrl+c]
nREPL server started on port 54848 on host 127.0.0.1 - nrepl://127.0.0.1:54848
REPL-y 0.3.1
...
もしも修正されたコマンドを盲目的に実行することに抵抗がなければ、require_confirmation
設定項目を無効にすることができます:
➜ 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
...
インストール#
依存関係#
The Fuck は Python で動作するため、nvbn による依存関係は次のとおりです。
- Python (3.4+)
- pip
- Python-dev
依存関係と本体のインストール#
次のコマンドを使用してインストールします(他の Linux ディストリビューションの場合は、元の記事のインストール部分を参照してください)。
sudo apt update
sudo apt install python3-dev python3-pip python3-setuptools
sudo pip3 install thefuck
元の記事のインストールコマンドでは、最後のコマンドに--user
パラメータが追加されており、これにより The Fuck が現在のログインユーザーのディレクトリの.local/bin
にインストールされ、環境変数を追加する必要があります。ここでは、このプロセスをスキップするために、直接 root または sudo でパッケージをインストールするように変更しました。
エイリアスの追加#
.bash_profile
、.bashrc
、.zshrc
または他のターミナル起動スクリプトに以下のコマンドを追加することをお勧めします:eval $(thefuck --alias)
The Fuck は自動的に追加されるようになりましたので、インストールが完了した後にfuck
を 2 回入力するだけです。
アップデート#
pip3 install thefuck --upgrade
使用方法#
Fuck!#
コマンドの実行エラーが発生した場合、"Fuck" と叫びながらfuck
と入力し、上下キーでオプションを選択し、Enter キーで修正を確認します。
パラメータ#
- --yeah
fuck --yeah
またはfuck -y
を使用して確認をスキップし、修正されたコマンドを直接実行します。
- -r
fuck -r
を使用して、The Fuck が再帰的にコマンドを修正して実行するようにします。コマンドが成功するまで繰り返し修正します。
設定#
設定項目#
The Fuck の設定ファイルはデフォルトで~/.config/thefuck/settings.py
です。
rules
– 有効になっているルールのリスト。デフォルトはthefuck.const.DEFAULT_RULES
です。
exclude_rules
– 無効にするルールのリスト。デフォルトは[]
です。
require_confirmation
– 修正後のコマンドを実行する前に確認が必要かどうか。デフォルトはTrue
です。
wait_command
– 前のコマンドの出力を取得する最大時間(秒単位)
no_colors
– カラー出力を無効にする
priority
– 優先度のあるルールを持つ辞書。優先度が低いpriority
のルールが優先的にマッチします。
debug
– デバッグ出力を有効にするかどうか。デフォルトはFalse
です。
history_limit
– スキャンする過去のコマンドの数。例:2000
alter_history
– 修正後のコマンドを履歴に追加するかどうか。デフォルトはTrue
です。
wait_slow_command
–slow_commands
リストに含まれる場合、前のコマンドの出力を取得する最大時間(秒単位)
slow_commands
– 遅いコマンドのリスト
num_close_matches
– コマンド修正の最大一致数。デフォルトは 3 です。
excluded_search_path_prefixes
– コマンドの検索時に無視するパスの接頭辞のリスト。デフォルトは[]
です。
インスタントモード(実験的)#
The Fuck のデフォルトの動作は、以前のコマンドを再実行するために時間がかかります。インスタントモードでは、The Fuck はログの出力をスクリプトで記録し、ログを読み取ることで時間を節約します。
現在、インスタントモードは bash または zsh を持つ Python 3 でのみサポートされています。 zsh の自動修正機能も無効にする必要があります。
インスタントモードを有効にするには、エイリアスパラメータ内の
.bashrc
、.bash_profile
、.zshrc
などのターミナル起動スクリプトに--enable-experimental-instant-mode
を追加します。
以下は例です:
eval $(thefuck --alias --enable-experimental-instant-mode)