入力されたコマンドが視覚的に「目立つ」端末のスクリーンショットをキャプチャする必要があります。今、これを使って「red」と入力するコマンドを作成しています。
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[0;31m\]'
問題は、私が入力したテキストだけでなく、プロンプトの後ろのすべてが赤であるということです。
この問題をどのように解決できますか?
私はbash(CentOS 7)を使用しています。
答え1
これを達成するためにトラップを使用することができる。
trap 'echo -ne "\e[0m"' DEBUG
DEBUG
bash manによると:実行トラップ
すべての単純コマンドの前、forコマンド、caseコマンド、selectコマンド、コマンドのすべての算術演算前、シェル関数で最初のコマンドを実行する前
したがって、コマンドが実行されるたびに、シェルは\e[0m
無効な古いカラーコードを挿入します。コマンドを実行した後、プロンプトでのみリセットしてください。
ここで許可されているハッキングを見つけました。https://wiki.archlinux.org/index.php/Color_Bash_Prompt#Different_colors_for_text_entry_and_console_output
答え2
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[1;31m\]'
次の例では、出力色を変更することでこの問題を解決できます。
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[1;32m\]'
上記のコマンドは、次の出力を緑色で表示します。