端末を使用していますが、コマンドを書くときに特定の色を使いたいです。
たとえば、コマンドラインに「history」と書いたとします。キーボードで入力したコマンドをあらかじめ定義された色で色分けしたいと思います。
要約すると、ユーザーが入力したすべてのコマンドは同じ色で表示されます。
だから
history
grep -hir -C 8 "hello world" .
青で表示されます。
現在、PS1には次のものがあります。
PS1='\n\[\033[01;36m\]\u@\h:'
PS1=$PS1'\n+ \[\033[38;5;214m\]\w\[\033[00m\]\n'
それから私は次のことをしました。
OPS0="$PS0" OPS1="$PS1"
t7="$(tput setaf 7)" t5="$(tput setaf 5)"
[[ -n "$PS1" ]] && PS0="\[$t7\]" PS1="\[$t7\]$PS1\[$t5\]"
01cuneus直前、最初に奇妙なキャラクター2人を見ました。
pete@home:~$ ls
01cuneus Admir Documents logs Public
02chaos conjgrad.f90~ Downloads Music temp
03marshl Desktop fontconfig Pictures Videos
ベストアンサー1
文書を読むと、bash
プロンプトに関連する変数のセクションにリンクされます。私たちはこれらに興味があります
PS0
対話型シェルは、コマンドを読み取り、コマンドを実行する前にこのパラメーターの値を拡張して表示します。PS1
このパラメータの値は拡張され、デフォルトのプロンプト文字列として使用されます。
どちらの変数も PROMPTING の以降のセクションを参照します。この2つのタグはプロンプト文字列に使用できます。
\[
端末制御シーケンスをプロンプトに含めるために使用できる非印刷文字シーケンスを開始します。\]
印刷されない文字の終了シーケンス
最後に、色の次のセクションを含むコマンドtput
リファレンスterminfo
setab
背景色を#1に設定し、ANSIエスケープを使用します。setaf
ANSIエスケープを使用して前景色を#1に設定します。
そして
setaf
/[...]関数はsetab
それぞれ数値引数を使用します。setaf
/パラメータ値0〜7は、setab
次のように移植可能に定義されています。 [...]Color #define Value RGB black COLOR_BLACK 0 0, 0, 0 red COLOR_RED 1 max,0,0 green COLOR_GREEN 2 0,max,0 yellow COLOR_YELLOW 3 max,max,0 blue COLOR_BLUE 4 0,0,max magenta COLOR_MAGENTA 5 max,0,max cyan COLOR_CYAN 6 0,max,max white COLOR_WHITE 7 max,max,max
これらすべてをまとめると、コマンド入力の色が変わりますが、コマンドが実行される前に復元されるように既存PS1
および変数を変更できます。PS0
OPS0="$PS0" OPS1="$PS1" # Save originals
t7="$(tput setaf 7)" t6="$(tput setaf 6)" # White, Cyan
[[ -n "$PS1" ]] && PS0="\[$t7\]" PS1="\[$t7\]$PS1\[$t6\]" # After and before command entry
表示された内容が気に入らない場合は、値を復元できます(または新しいシェルを起動するだけです)。
PS0="$OPS0" PS1="$OPS1"
準備ができたら、レパートリーにセリフを追加して.bashrc
永久的な興味を感じてください。