~/.bashrc ファイルの PS1 変数を編集することで、bash プロンプトを永続的に編集できることはわかっています。私の場合は次のようになります。
PS1="\[\e[0;31m\]<HERP(._.)DERP>\[\e[0;0m\]";
しかし、そこに小さな画像を設定することはできますか? たとえば、小さなアメリカ国旗のアイコンや、「HERP(._.)DERP」の前に何かを追加したい場合、これを行うことはできますか?
実際、はい、できます。
最近のバージョンの Bash では、少なくとも 4 (私は 4.2 と 4.3 でそれを行うことができました)、16 進数で絵文字をレンダリングできます。
echo -e
フラグを使用します。
検索した絵文字を貼り付け、hexdump を実行して、それが何で構成されているかを確認します。
plasmarob ~ $ echo -n ""| hexdump
0000000 f0 9f 87 ba f0 9f 87 b8
0000008
そして、その一番上の行を取り、各 16 進数のペアを \x でエスケープします。
plasmarob ~ $ echo -e 'See? \xf0\x9f\x87\xba\xf0\x9f\x87\xb8'
See?
私は実際に私のものを次のように変更しました:
プラズマロブ ~ ⚡
そうです、このようなものを考え出して、またはに追加してみて.bashrc
ください.bash_profile
。
編集: この投稿のフラグが「US」文字としてレンダリングされるようになったため、SO またはブラウザーのレンダリングに関する何かが変更された可能性があります。YMMV ですが、記載されているバージョンの bash でも動作すると思います。
最近では、絵文字対応のフォントがあれば絵文字を追加できます。質問が最初に投稿されたとき、これは簡単に実行可能なオプションではなかったと思います
アメリカの国旗についてはわかりませんがexport PS1="\360\237\232\251 > "
、プロンプトでフラグが表示されます。
また、エコーまたはシェルプロンプトのエスケープを少し簡単に出力できるようにするシェルツールも作成しました。エモといいます
近づくほど、白旗と黒旗が表示されます。
⚐ → U+2690 ; WHITE FLAG
⚑ → U+2691 ; BLACK FLAG
上記はユニコード文字です。フラグ付きのフォントを探すこともできます-私は知りません。
申し訳ありません。ターミナルはグラフィックスを行いません。
実行できることの完全な説明については、bash(1)のマニュアルページのPROMPTINGセクションを参照してください。
プロンプト
インタラクティブに実行する場合、bashは、コマンドを読み取る準備ができたときにプライマリプロンプトPS1を表示し、コマンドを完了するためにさらに入力が必要なときにセカンダリプロンプトPS2を表示します。Bashでは、次のようにデコードされるバックスラッシュでエスケープされた特殊文字をいくつか挿入することにより、これらのプロンプト文字列をカスタマイズできます。
\a an ASCII bell character (07) \d the date in "Weekday Month Date" format (e.g., "Tue May 26") \D{format} the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required \e an ASCII escape character (033) \h the hostname up to the first ‘.’ \H the hostname \j the number of jobs currently managed by the shell \l the basename of the shell’s terminal device name \n newline \r carriage return \s the name of the shell, the basename of $0 (the portion following the final slash) \t the current time in 24-hour HH:MM:SS format \T the current time in 12-hour HH:MM:SS format \@ the current time in 12-hour am/pm format \A the current time in 24-hour HH:MM format \u the username of the current user \v the version of bash (e.g., 2.00) \V the release of bash, version + patch level (e.g., 2.00.0) \w the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable) \W the basename of the current working directory, with $HOME abbreviated with a tilde \! the history number of this command \# the command number of this command \$ if the effective UID is 0, a #, otherwise a $ \nnn the character corresponding to the octal number nnn \\ a backslash \[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt \] end a sequence of non-printing characters
コマンド番号と履歴番号は通常異なります。コマンドの履歴番号は履歴リスト内の位置であり、履歴ファイルから復元されたコマンドが含まれる場合があります(以下の履歴を参照)。コマンド番号はシーケンス内の位置です。現在のシェルセッション中に実行されたコマンドの数。文字列がデコードされた後、promptvarsシェルオプションの値に応じて、パラメータ展開、コマンド置換、算術展開、および引用符の削除によって展開されます(以下のシェルビルトインコマンドのshoptコマンドの説明を参照してください)。
、およびエスケープシーケンスは特別な注意が必要です\e
。これらを使用すると、 ANSIエスケープコードを挿入して、端末に前景色、背景色の変更、カーソルの移動、画面の一部の消去、およびその他の凝ったトリックを実行するように命令できます。\[
\]
つまり、たとえば、プロンプトの色がどのように変わるかです。\[\e[0;31m\]
前景色を赤に\[\e[0;0m\]
設定し、デフォルトにリセットします。
アイコン (ビットマップまたはベクトル グラフィック) を bash プロンプトに追加する方法はありません。