nyarn.tech

にゃーん

bashでもプロンプトに寿司🍣を出す

元ネタ Terminal_appのプロンプトに寿司を出す(zsh)

前回のコマンドの実行結果は $? で取得することができます。
プロンプトを変更するにはPS1という環境変数をいじってやればいいです。

ただ、動的に変更するにはちょっと工夫をしなければいけません。
シンプルな解決策は、動的に変えたい部分を関数に切り出して、
PS1='$(command)' とやってやればよいです。

ということで動いている様子と完成したbashrcです。

f:id:asayamakk:20170929122015g:plain

__show_status() {
  local result=$?
  if [ $result -eq 0 ] ; then
    echo '🍙'
  elif [ $result -eq 126 ] ; then
    # permision denied
    echo '🙅'
  elif [ $result -eq 127 ] ; then
    # command not found
    echo '👀'
  elif [ $result -eq 130 ] ; then
    # interrupted by ctrl-c
    echo '🐱'
  else
    echo '🍣'
  fi
}

export PS1='\[\033[33m\][\w]\[\033[32m\]$(__git_ps1)\[\033[00m\]\n$(__show_status)  '

でも実はこのままだと Enterキーを押したときに前回の結果が変わらないので 寿司が出続けるしまうのをなんとかしたい

参考記事

Bash で PROMPT_COMMAND を使わずに PS1 を動的に変更