web-dev-qa-db-ja.com

スマイリーフェイスでターミナルbashプロンプトをカスタマイズするにはどうすればよいですか?

スマイリーフェイスを使用するように端末のbashプロンプトをカスタマイズする方法を見つけようとしています。私が欲しいのは(ブローの例に見られるように)、cwdをプロンプトから\ n離して、コマンドが成功した場合は緑色のスマイリーフェイスを表示し、失敗した場合は赤色の悲しい顔を表示することです。

何か案は?

これは、Peepcodeのスクリーンキャストに触発されました。

Example

11
Josh Smith

アンドフリームニルのコードをいじってさらに調査を行った後、私はついに私が望むものを手に入れました。

PS1="\w \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]\n\xE2\x98\xBA'; else echo -e '\[\e[01;31m\]\n\xE2\x98\xB9'; fi\` \[\e[01;34m\]\[\e[00m\]"

ここに絵文字のリスト を見つけてから それらを変換 を改行文字の後に表示される3桁のバイトコードに変換します。

cwdを取得するには、\wを使用するだけでした。 \u@\wを実行して現在のユーザーを表示することもできます。これにより、joshsmith@~のようなものが出力されます。

15
Josh Smith

上に示したスマイリーフェイスはUnicode文字のようです0x263a。したがって、Unicode対応のターミナルが必要になります(terminal.appがこれをサポートしているかどうかはわかりませんが、サポートしていると思います)。

リターンコードが0の場合は緑のスマイリーフェイスを、それ以外の場合は赤の眉をひそめた顔を印刷するサンプルコードを次に示します。

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"

クレジットはArchフォーラムのFingelに送られます(彼はそれを投稿しました ここ )。

6
jake-low