zshでcommand not foundという冷やかなメッセージを暖かくする

  • 14
    Like
  • 1
    Comment
More than 1 year has passed since last update.

たとえば ls コマンドを実行しようとして間違えて lls と打ってしまうことがあるかもしれません。

Zsh
[kengo@tkengo-mac] $ lls
zsh: command not found: lls

いつもの通り そんなコマンドないよ と冷たくあしらわれてしまいました。

コマンドを間違った時に嫌な気持ちにならないように zsh にはもっと暖かいメッセージを言ってもらいましょう。

command_not_found_handler

zsh には command_not_found_handler という特別な関数があります。この関数は、存在しないコマンドを呼びだそうとした時に呼ばれます。

~/.zshrc に以下のように定義してみます。

~/.zshrc
function command_not_found_handler() {
  echo "your input: $0" # $0には実行されたコマンド名が入っています
}

設定を読み直して lls してみると

Zsh
[kengo@tkengo-mac] $ source ~/.zshrc
[kengo@tkengo-mac] $ lls
your input: lls

暖かいメッセージ

もうわかると思いますが echo コマンドで何でも出力できます。顔文字を出力してみると和みます。

~/.zshrc
function command_not_found_handler() {
  echo "(o^ワ^)> $0 なんてコマンド無いぽ"
}

これで

Zsh
[kengo@tkengo-mac] $ source ~/.zshrc
[kengo@tkengo-mac] $ lls
(o^ワ^)> lls なんてコマンド無いぽ

こうなります。

本当は

こんなふざけた使い方をするよりかはもっと有益な使い方があるはず orz