bashコマンドの出力がコマンドとは異なる色になるように$PS1変数を編集するにはどうすればよいですか?

bashコマンドの出力がコマンドとは異なる色になるように$PS1変数を編集するにはどうすればよいですか?

$PS1bashコマンドの出力がコマンドとは異なる色になるように変数を編集するにはどうすればよいですか?たとえば、コマンドは黒で、出力は緑で表示したいと思います。

username$ seq 1 3
1
2
3

上記の例では、seq 1 3出力番号を黒と緑で表示したいと思います。

これは私の現在の$PS1変数です:

\[\e[1;0:31m\]\u \[\e[m\] \[\e[1;0:36m\] \@ \[\e[m\] \[\e[1;0:32m\]\W $ \[\e[m\]

ベストアンサー1

trap "changesColorHere" DEBUGとを活用する必要がありますPS1。変数の値のPS1末尾に色を割り当てることができます。これはtrap "" DEBUG、他の命令を実行する直前に1つの命令を実行する効果がある。したがって、以前dfに指定されたコマンドを実行した場合。trap "" DEBUGdf

PS1変数は次のように設定できます。

PS1="\[\e[1;0:31m\]\u \[\e[m\] \[\e[1;0:36m\] \@ \[\e[m\] \[\e[1;0:32m\]\W $ \[\e[1;35m\]"

この設定では、プロンプトの後に入力したすべての入力が色で表示されます。

trap "" DEBUG次のように設定できます。

trap "echo -ne '\e[1;33m'"  DEBUG

この設定を使用すると、出力は次のようになります。ほぼ入力するすべてのコマンドには色が割り当てられます。

いくつかのコマンド(例えば、、lsなどdmesgjourncaltclは、設定された色を使用して出力を表示します。したがって、以下を使用して無効にする必要があります。

  1. このコマンドを使用する場合、ls通常はoptionsを含むエイリアスです--color=tty。したがって、カスタムカラーでls出力を印刷するには、次のものを使用できます。
\ls #Add `\` before the ls command
ls --color=never ... # Add the option --color=never
  1. このdmesgコマンドはカスタムカラーを使用して出力を印刷しますが、その色の使用を防ぎ、代わりに色を使用できます。
dmesg --color=never #Add --color=never
  1. journalctl印刷はカスタムカラーを使用して印刷することもできます。この機能はエクスポートで無効にできますが、出力export SYSTEMD_COLORS=falseのみを使用する場合はjournalctlこのlessコマンドを使用します。したがって、以下を使用することをお勧めします。
export SYSTEMD_COLORS=false
journalctl  --no-pager
#Alternatively you can use:
journalctl | cat #This should be useful if there were commands whose page their
# output through `less` and they do not have an option like `--no-pager`

上記の設定を使用すると、次のようになります。

ここに画像の説明を入力してください。

おすすめ記事