bashでコマンドが無い時にやる夫が動いて煽ってくるcommand_not_found_handle()
Pocket

先日、ちょろっと調べ物をしていたところこんなページを見かけた。
某掲示板から生まれたキャラクタの「やる夫」が煽ってくるcommand_not_found_handleを作ってみるよ、という内容のもの。

あー、これはうざいなぁ、と思いつつ、できればターミナルの画面をまるごと使用するのではなく、プロンプトのすぐ下で煽ってくるようにしたほうが面白そうだなーと思ったので、ちょっとやってみることにした。
オリジナルのはAAをechoで表示後にclearしてやることで処理しているのだけど、そうではなくプロンプトを表示させつつAA等を動かす場合、ANSI Escapeで処理してやる必要がある。

Sponsored Links

 

で、やってみた結果がこちら

command_not_found_handle() {
####
# 変数の定義
####
# 変数(ASCII ART)定義
AA1="
          ____
       / \  /\ キリッ
     / (ー)(ー)\
    /  ⌒(__人__)⌒\     「$1」、
    |     |r┬-|    |
     \    \`ー'´  /
    ノ         \
    /´            ヽ
    | l              \
    ヽ -''\"~`\`'ー-、 -一'''''ー-、.
   ヽ __(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))"
AA2_1="
        ____
       /_ノ  ヽ、\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒) ⌒) ⌒.::⌒(__人__)⌒:::    /⌒ )⌒ )⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwwwwwwwwwwwwwwwww
| :::::::(⌒)   | | |   /  ゝ ::::::/   そんなコマンドないおwwwwwwwwwwwww
|     ノ    | | |   \  / )   /
ヽ    /     \`ー'´    ヽ  /    /      バ
 |    |  l|l        l||l 从 ノ    バ   ン
 ヽ    -''\"~`\`'ー-、    -一'''''ー-、    ン
  ヽ __          __/"
AA2_2="
          ____
        /_ノ  ヽ、\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒) ⌒) ⌒.::⌒(__人__)⌒:::    /⌒ )⌒ )⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwwwwwwwwwwwwwwwww
| :::::::(⌒)   | | |   /  ゝ ::::::/   そんなコマンドないおwwwwwwwwwwwww
|     ノ    | | |   \  / )   /
ヽ    /     \`ー'´    ヽ  /    /     バ
 |    |  l|l 从人 l|l   l||l 从 人 l|l  バ   ン
 ヽ    -''\"~`\`'ー-、    -一'''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )    (⌒_(⌒)⌒)⌒))"
AA2_3="
          ____
        /_ノ  ヽ、\
       o゚((●)) ((●))゚o
     /:::⌒(__人__)⌒:::
     |     |r┬-|     |          だっておwwwwwwwwwwwwwwwwwww
     \    | | |   /           そんなコマンドないおwwwwwwwwwwwww
      ノ    | | |   \
    /´     \`ー'´    ヽ           バ
    | |            \        バ   ン
    ヽ  -''\"~`\`'ー-、    -一'''''ー-、    ン
    ヽ __(⌒)(⌒)⌒) )    (⌒_(⌒)⌒)⌒))"
AA_NUM_MIN=1
AA_NUM_MAX=3
COUNT=20
SUFFIX="AA2_"
trap '' 1 2 3 4 5 15
####
# メインの処理
####
# 最初のAA(AA1)の出力
echo -e "$AA1"
sleep 1
# COUNT分のループ処理(AA2_1〜AA2_3の出力)
LINE=$(echo -e "${AA1}"|wc -l)
NUM=${AA_NUM_MIN}
until [ ${COUNT} -eq 0 ];
do
for i in $(seq 1 ${LINE});do
echo $'\e[1A' $'\e[1G' $'\e[2K' $'\e[1A'
done
eval echo \"\${${SUFFIX}${NUM}}\"
sleep 0.15
LINE=$(eval echo -e \"\${${SUFFIX}${NUM}}\"|wc -l)
NUM=$((${NUM} + 1))
if [ ${NUM} -gt ${AA_NUM_MAX} ];then
NUM=${AA_NUM_MIN}
fi
COUNT=$((COUNT - 1))
done
}

 

…うーん、うざい(´・ω・`)
Ctrl+Cを効かなくしたらよりうざくなった。
誰かのMacに、難読化して嫌がらせで設定してみたら面白いかもしれない(やっちゃいけません)。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

This article has 1 comments

  1. Pingback: bashやzshなどのターミナル上で動作するアニメーションの作り方 | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。

*