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


11

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

何か案は?

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

例

回答:


15

約30分かけてandhrimnirのコードをいじり、さらに調査を行った後、私はついに自分が望むものを手に入れました。

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@~ます。


6

上記のスマイリーフェイスはユニコード文字のようです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に送られます(彼はここに投稿しました)。


if / thenサンプルのすばらしい作業。私は、改行を実行し、を削除し$、実際にUnicodeシンボルを使用し、完全なを表示する方法に興味がありますcwd
ジョシュスミス

...そして1時間後、私自身の質問に答えました(ありがとう!)。
ジョシュスミス

1
お役に立てて嬉しいです!カスタムの$PS1ものをもっと深く知りたい場合は、上記のリンクのスレッドに多くの情報があります。
ジェイクロー

ええ、私の研究の半分はそのスレッドで始まりました。とても助かりました。また、コマンドラインをさらに詳しく知りたい人のために、Peepcodeには高度なスクリーンキャストが用意されています。
ジョシュスミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.