Linuxでコマンドを打ち間違えたまま実行すること、ありますよね。「sudo」が「suod」になってしまったりとか。
そんな時、どうしてますか? 「Ctrl+p」して打ちなおしてますか? でも、カーソルキーを移動して打ちなおすのって面倒ですよね。
そこで使えるのが「The Fuck」という、ちょっと普通じゃない名前のツールです。間違えたコマンドを自動修正してくれます。打ち間違えて「fuck!」って言ってしまうところから来ているんでしょうね。
fuckコマンドの使用例
まずはThe Fuckの使用例から紹介しましょう。インストール方法は後ほど紹介します。
コマンド名の間違いを修正
まずは最も基本的な使用例から。コマンド名を間違ってしまった時、続けて「fuck」コマンドを実行すると似ているものを提案してくれます。複数の候補がある場合は、矢印の上下キーで選択可能です。表示されたコマンドを実行する場合はEnter、キャンセルはCtrl-cを押します。
以下は、間違って「password」と実行してしまい、「passwd」が提案される例です。
$ password
コマンド 'password' は見つかりませんでした。もしかして:
コマンド 'assword' - パッケージ 'assword' (universe)
password: コマンドが見つかりません
$ fuck
passwd [enter/↑/↓/ctrl+c]
sudoを追加して実行
パッケージをインストールしたり更新するとき、sudoを付け忘れてaptやdnfなどを実行すること、ありますよね。そんな場合、fuckと打つことでsudoをつけたコマンドが提案されます。
Ubuntu/Debian系の場合
$ apt install iotop
E: ロックファイル /var/lib/dpkg/lock をオープンできません - open (13: 許可がありません)
E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。root 権限で実行していますか?
$ fuck
sudo apt install iotop [enter/↑/↓/ctrl+c]
Fedora 26の場合
$ dnf install iotop
エラー: This command has to be run under the root user.
$ fuck
sudo dnf install iotop [enter/↑/↓/ctrl+c]
未インストールのコマンド実行時にインストールを提案
インストールされていないコマンドを実行しようとしてエラーになった時、fuckがパッケージのインストールと実行を提案してくれます。
以下は、Ubuntuで未インストールの「iostat」を実行してエラーとなったので、fuckが「sysstat」パッケージのインストールと「iostat」の再実行を提案してきた例です。
$ iostat
bash: /usr/bin/iostat: そのようなファイルやディレクトリはありません
$ fuck
sudo apt-get install sysstat && iostat [enter/↑/↓/ctrl+c]
sedの/閉じ忘れを修正
sedで最後の「/」を打ち忘れた時、修正したコマンドを提案してくれます。
$ sed -e 's/abc/def' test.sh
sed: -e expression #1, char 9: `s' コマンドが終了していません
$ fuck
sed -e s/abc/def/ test.sh [enter/↑/↓/ctrl+c]
gitのサブコマンドを修正
コマンドによっては、サブコマンドの修正にも対応しています。以下は、間違って「git stat」と実行し、fuckが「git status」を提案してきた例です。
$ git stat
git: 'stat' はgitコマンドではありません。 'git --help'を参照してください。
Did you mean one of these?
status
stage
stash
$ fuck
git status [enter/↑/↓/ctrl+c]
The Fuckのセットアップ
パッケージのインストール
Ubuntu 16.04やDebian 9の場合、以下のコマンドでインストールできます。
sudo apt install -y python3-dev python3-pip
sudo pip3 install thefuck
Fedora 26の場合は、以下のコマンドでインストールできます。
sudo dnf -y install thefuck
fuckコマンドを使えるようにする
インストールできたら、以下の行を~/.bashrcに追加しましょう。
eval $(thefuck --alias)
そして、以下のコマンドで~/.bashrcを読み直します。
source ~/.bashrc
これで、「fuck」がaliasに追加されました。以下のコマンドで確認できます。
$ alias | grep fuck
alias fuck='eval $(thefuck $(fc -ln -1)); history -r'
~/.bashrcに追記したので、次回ログイン時は自動的に設定されます。
更新履歴
2018-07-29 Ubuntu 18.04 LTSで動作を確認
コメント