役に立つかもしれないbashプロンプトの3tips

ここで言うプロンプトはコマンド打つときにいつもでるアレです
bashではPS1変数で変更できます

知っておくと便利かもしれないtipsを3つ紹介

1. 色を付けられる

プロンプトもターミナルで表示されるのでエスケープシーケンスが使えます
設定方法は簡単で
\[\033[カラーコードm\]\[\033[00m\]で囲むだけです
カラーコードはこんな感じです

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

背景色も指定できるのでいろいろ試してみると面白いです

参考リンク
http://archive.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO-5.html

文字色を緑にしたり青にしたり、背景色を赤にしてみたり

PS1='\[\033[01;32m\]Green\[\033[00m\]\[\033[01;34m\]Blue\[\033[00m\]\$ '
PS1='\[\033[41;01;32m\]Green BG=red\[\033[00m\]\[\033[01;34m\]Blue\[\033[00m\]\$ '

デモ

2. コマンドが使える

コマンドも使えます
$()で囲めばいいだけです
沢山のコマンドを実行する場合はPROMPT_COMMANDという環境変数に関数名を設定して
実行させることもできます

バックグラウンドジョブの数を表示する
バックグラウンドジョブの存在を忘れる人用

PS1='\u@\h:\w\$ \[\033[01;32m\][$(jobs|wc -l)]\[\033[00m\]'

gitリポジトリ内ならgitブランチ名,変更ファイル数を表示
gitリポジトリでない場合は何も表示しない

PS1='\u@\h:\w\$ \[\033[01;32m\]$(if git status &>/dev/null;then echo git[branch:$(git branch | cut -d" "  -f2-) change:$(git status -s |wc -l)];fi)\[\033[00m\] '

デモ

3. 環境変数が使える

環境変数は現在のシェルと同様のものを参照できます
$SHLVLや$?も参照できます

現在のシェルの深さ$SHLVLを表示(シェルの深さがわからなくなる人用)
前回のコマンドが失敗したら背景色を赤色にする

export PS1='\[\033[44;01;33m\]$SHLVL\[\033[00m\] \[\033[$(if [ "$?" != "0" ];then echo "41;";fi)01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

デモ

気に入った設定があったら.bashrcに書いておきましょう

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

yamasita

東京電機大学工学部→3年間某SIerにて銀行システムの開発→bpsに入社

yamasitaの書いた記事

インフラ
現場で使うansible

2014年12月25日

インフラ
検証環境の作り方

2014年08月14日

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ