Make Tech Easier - Uncomplicating the complicated, making life easier

Joshua Price氏がMake Tech Easierにおいて8 Useful and Interesting Bash Promptsのタイトルのもと、bashシェルにおけるさまざまなコマンドプロンプトの設定例を紹介している。使いやすいコマンドプロンプトはコマンドラインの使い方を変えると説明があり、同氏が調査した中でも、特によく使われていたり、おもしろいプロンプトとその設定例が紹介されている。紹介されているプロンプトは次のとおり。

間違ったコマンドを入力すると顔が変わるプロンプト

もっともおもしろいプロンプトのひとつだが、使いやすくもあるプロンプト。コマンドの実行が成功したか失敗したかで、プロンプトに表示されるアスキーアートの顔を変更するというもの。コマンドの実行に失敗すると悲しい顔が表示される。成功すると元に戻る。

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\\$ "
間違ったコマンドを入力すると顔が変わるプロンプト

プロンプト実行例

間違ったコマンドを入力すると色が変わるプロンプト

アイディアはコマンドの成功の可否で表示する顔を変えるというものだが、これは顔の代わりに色を変更する。また、履歴に記憶されているコマンドの実行回数や、パスの表示を短縮表記からフルパス表記に変更している。

PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'
間違ったコマンドを入力すると色が変わるプロンプト

プロンプト実行例

複数行プロンプト

複数行にわたってプロンプトを表示し、より多くの情報を出力する。日付、時間、フルパス、ユーザ名、ホスト名、端末名、カレントディレクトリにあるディレクトリやファイルの総数、カレントディレクトリにあるディレクトリやファイルの総合サイズが表示される。

PS1="\n\[\033[35m\]\$(date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(tty | sed -e 's:/dev/::'): \[\033[1;36m\]\$(ls -1 | wc -l | sed 's: ::g') files \[\033[1;33m\]\$(ls -lah | grep -m 1 total | sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"
複数行プロンプト

プロンプト実行例

データごとに色を変えて見やすくしたプロンプト

時刻、ユーザ名、ホスト名、カレントディレクトリを表示するミニマムなプロンプト。ほかのプロンプトのような特徴はないが、うまく色を活用して短いなかでも視認性をあげている。

PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "
データごとに色を変えて見やすくしたプロンプト

プロンプト実行例

フルパスを表示する複数行プロンプト

ユーザ名とカレントディレクトリのフルパスを表示するシンプルでナイスな複数行プロンプト。

PS1="\[\033[32m\][\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"
フルパスを表示する複数行プロンプト

プロンプト実行例

バックグラウンドジョブ数を表示する複数行プロンプト

1行目はユーザ名とホスト名、カレントディレクトリのフルパス、2行目はコマンドの履歴数とバックグラウンドジョブの総数を表示する複数行プロンプト。

PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '
バックグラウンドジョブ数を表示する複数行プロンプト

プロンプト実行例

カレントディレクトリ情報を表示する複数行プロンプト

洗練されたデザインの複数行プロンプト。ユーザ名、ホスト名、ジョブ数、日付、時刻、カレントディレクトリのフルパス、カレントディレクトリにあるファイルやディレクトリの総数、カレントディレクトリにあるファイルやディレクトリの総合サイズが表示される。

PS1="\n\[\e[30;1m\]┌(\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n└─(\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(ls -1 | wc -l | sed 's: ::g') files, \$(ls -lah | grep -m 1 total | sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"
カレントディレクトリ情報を表示する複数行プロンプト

プロンプト実行例

Joshua Price氏の使っているプロンプト

Joshua Price氏が使っているプロンプト。ひとつ前の複数行プロンプトをベースにしつつ、よりシンプルで場所をとらないものへ調整されている。

PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"
Joshua Price氏の使っているプロンプト

プロンプト実行例

8 Useful and Interesting Bash Promptsで掲載されているサンプルには、掲載する段階で編集を誤ったとみられるミスと、日本語環境では表示されない設定も含められているため、その部分には若干の変更を加えて掲載した。設定されている色は背景色が黒でフォントはボールドのときに見やすいようになっているため、背景色を白やフォントの種類を変更する場合には、それに応じて編集を加えた方が使いやすいとみられる。なお、8 Useful and Interesting Bash Promptsでは寄せられているコメントにもプロンプト設定のサンプルが掲載されている。