鉱山では、.bashrc
ANSI端末の色コードを使用して個々のビットの色を指定します。次のようになります。
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
wherevirtual_env
とgit_branch
はstdoutにコンテンツを印刷するbash関数です。
今すぐ読みやすくするためにカラーコードを直接挿入するのではなく、変数に保存して参照したいと思いますPS1
。だから、次のような変数がたくさんあります。
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
私は次のようなものを書くことを望みます:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
しかし、これはうまくいきません。カラーコードがエスケープされたかのようにプロンプトに表示されます。代わりに二重引用符を使用すると、色は正しく機能しますが、PS1
プロンプトが変更された場合にのみこれを実行しますsource ~/.bashrc
。
私は人々がしている他のことを試しました。を使用してprintf
、色に一重引用符を使用し、\[
色変数の代わりにとを入力しましたが、何も機能しないようです。\]
PS1
カラーコード変数の使い方は?
ベストアンサー1
解決策は、プロンプトを定義するときにシェルにカラー変数を置き換えさせることです。しかし、関数はそうではありません。これを行うには、最初に試したように二重引用符を使用しますが、ヒントが描画される前に評価されないようにコマンドをエスケープします。
PS1="\u@\h:\w${YELLOW}\$(virtual_env)${GREEN}\$(git_branch)${RESET}$ "
各コマンドの前に\
。$()
これをエコーすると、次のようになります。
echo "$PS1"
\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$
ご覧のとおり、カラー変数は置き換えられますが、コマンドは置き換えられません。