481
299

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コマンドを間違えるたびに美少女に罵られたい!

Last updated at Posted at 2017-10-22

コマンドを間違えるたびに美少女に罵られたい!

コマンドを間違えるたびに美少女に罵られてみたい、と誰しも思ったことはありませんか?
そんな長年の夢を叶えましょう!!!

結果

k.png

罵ってくれました。

方法

jp2aを導入する

任意のJPEG画像をアスキーアートにして表示してくれるパッケージです。
たぶん以下でインストールできます。

$ sudo apt install jp2a # for Debian,Ubuntu
$ brew install jp2a     # for MacOSX,Linuxbrew

画像を用意する

可愛い女の子の画像を用意しましょう。また、グレースケールにしておくと表示が綺麗になります。

シェルにフックを登録する

コマンドを間違えたときに呼ばれる関数があるので、それを使いましょう。
jp2aを使い画像を表示し、その後にメッセージを表示します。

Bashの場合

bashrc
function command_not_found_handle(){
  if [ -e /usr/bin/jp2a ];then
    if [ -e ~/kirino.jpg ];then
      jp2a ~/kirino.jpg -i
    fi
  fi
  echo "ハァ…?$1とか何言ってんの?\nコマンドもろくに覚えられないなんて、アンタどうしようもないクズね。"
}

ZSHの場合

zshrc
function command_not_found_handler(){
  if [ -e /usr/bin/jp2a ];then
    if [ -e ~/kirino.jpg ];then
      jp2a ~/kirino.jpg -i
    fi
  fi
  echo "ハァ…?$1とか何言ってんの?\nコマンドもろくに覚えられないなんて、アンタどうしようもないクズね。"
}

fishの場合

@QUANON さんから、以下のようなコメントを頂きました!ありがとうございます!!

僕は fish を使っているのですが、このシェルでも次の function を定義することで実現できました。

function command_not_found_handler --on-event fish_command_not_found
    if type -q jp2a; and test -e ~/kirino.jpg
        jp2a ~/kirino.jpg -i
    end

    echo ハァ…?$argv[1]とか何言ってんの?
    echo コマンドもろくに覚えられないなんて、アンタどうしようもないクズね。
end

bashとzshで'handle'と'handler'の違いがあるので注意です。また画像のパスは適宜変更してください。
また、jp2a自体のオプションを弄ることで、表示するときの行や列を指定することができます。
デフォルトでは、白に近い部分を表示させますが、ぼくの場合白黒にしてほとんど白となってしまい、見づらかったので、あえて黒の部分を表示させるために-iを付けています。

$ jp2a hoge.jpg --width=100 # 横幅を100列固定で表示
$ jp2a hoge.jpg --height=100 # 横幅を100列固定で表示
$ jp2a hoge.jpg -i # 白黒反転で表示

これで一通りの手順は完了です。

k.png

もっと高解像度で罵られたい。というかもう動画がいい。

そう思った方、とても良い考え方だと思います。同士です。
次は、アスキーアートだけではなく、本当の画像やgifアニメを表示させたいと思います。

iTerm2.appの場合

コメント欄にて、@kuzukuzu1gou さんがiTerm2でimgcatを使う方法を教えてくれました。

k.png

jp2aの部分を、そのままimgcatというコマンドに置き換えれば表示できます。

$ imgcat hoge.jpg

xterm mltermの場合

img2sixelというパッケージを使えば、画像の表示や、gitアニメの再生ができます。

$ img2sixel hoge.jpg
$ img2sixel hoge.gif -l disable # -l disableを付けないとアニメがループしてプロンプトが帰ってこない

また、任意のyoutubeや動画ファイルをgitアニメにするには以下を参考にしてください。
Linuxで、コマンドだけでyoutubeから動画をダウンロードして任意の時間を切り出してgitアニ化する

k.png

demo.gif

ゾクゾクしちゃいますね。
これで楽しいシェルライフを送りましょう!

481
299
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
481
299

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?