
$PS1
bashコマンドの出力がコマンドとは異なる色になるように変数を編集するにはどうすればよいですか?たとえば、コマンドは黒で、出力は緑で表示したいと思います。
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 "" DEBUG
df
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
などdmesg
)journcaltcl
は、設定された色を使用して出力を表示します。したがって、以下を使用して無効にする必要があります。
- このコマンドを使用する場合、
ls
通常はoptionsを含むエイリアスです--color=tty
。したがって、カスタムカラーでls出力を印刷するには、次のものを使用できます。
\ls #Add `\` before the ls command
ls --color=never ... # Add the option --color=never
- この
dmesg
コマンドはカスタムカラーを使用して出力を印刷しますが、その色の使用を防ぎ、代わりに色を使用できます。
dmesg --color=never #Add --color=never
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`
上記の設定を使用すると、次のようになります。