f

2014-07-19

Auto linebreak in bash prompt

調べ物をしているとbashの設定が気になった。zshでもいいけど,bashしか使えない環境もあるのでこちらの設定を見なおした。zshのようにある階層以上になればプロンプトの現在ディレクトリの表示を2行にさせたかった。いろいろ調べて実装した。


以下の内容を.bashrcに書いておくとディレクトリの階層が8になるとプロンプトが2行になる。


## prompt
PURPLE="\[\e[35m\]"
RED="\[\e[31m\]"
GREEN="\[\e[32m\]"
CLEAR="\[\e[m\]"
#PS1="$PURPLE\u:$RED\w$PURPLE\$ $CLEAR"
PS1="\`if [[ \$(expr length \${PWD//[^\/]/}) > 7 ]]; then
echo '$PURPLE\u:$RED\w$PURPLE\n\$ $CLEAR'
else echo '$PURPLE\u:$RED\w$PURPLE\$ $CLEAR' ; fi\`"




主な処理内容
\${PWD//[^\/]/} # $PWD変数から/以外の文字を除去
$(expr length \${PWD//[^\/]/}) # /の数をカウント。最初の$\でクォートするのが大事。




例:
senooken:~/Copy/project/config/dotfile/.vim$ cd bundle/
senooken:~/Copy/project/config/dotfile/.vim/bundle
$




参考:【レビュー】おもしろくて役に立つ8つのbashプロンプト | マイナビニュース http://news.mynavi.jp/articles/2009/09/09/bash/

このサイトの最初の例が最も参考になった。

0 件のコメント:

コメントを投稿