コマンドを打ち間違えた!そんな時は「The Fuck」で自動修正!

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 -y 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に追記したので、次回ログイン時は自動的に設定されます。