カスタムbashシェル:太字/カラーコマンド

カスタムbashシェル:太字/カラーコマンド

オンラインには多くのチュートリアル/投稿があります(例:http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/)設定でbashでプロンプトをカスタマイズする方法について説明しますPS1。入力するコマンドの色/太さをカスタマイズする方法はありますか?

つまり、たとえば、緑のプロンプトと太い青のコマンドを使用してから、デフォルトの色で出力したいと思います。次の例では、joe>「」を設定して緑、青、太字の表示方法を既に知っていますPS1。しかし、git statusディスプレイを太字で表示する方法はありますか?

joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...

答え1

PS1の後に色の末尾を残して(>例から始めるには)、DEBUGコマンドを実行する前にbashトラップを使用して色を消去する必要があります(ただし、シェルでEnterキーを押した後)。次のようにしてみてください。

shopt -s extdebug
trap "tput sgr0" DEBUG

答え2

完全性のために、bashでプロンプト色とコマンドライン入力色を設定する方法は次のとおりです。この行を.bashrc

PS1='\[\e[1;34m\]\w\$ \[\e[0;32m\]'
trap 'printf \\e[0m' DEBUG

次のDEBUGトラップChris Tangが提案した、テキスト属性をリセットするために使用されます。その目的はデバッグのためですが、ユーザーが入力したコマンドを実行する前にコードを実行することも便利です。

プロンプト設定で:

  • \[…\]エスケープシーケンスの周りに使用され、bashに画面スペースを占有しないことを知らせます(エスケープシーケンスがないと、bashがプロンプトを再描画するときに画面が壊れる可能性があります)。
  • \e[…mここでは、数字またはより一般的にセミコロンで区切られた一連の数字です。エスケープシーケンス次のテキストの色やその他の属性に影響を与えるために端末に送信されます。たとえば、1;34太い青を設定し、0;32すべてのプロパティをリセットして、色を緑に切り替えます。口当たりに合わせて調節してください。
  • \w\$現在のディレクトリと$またはを印刷します#。もちろん、これを必要に応じて変更でき、必要に応じてテキスト属性の変更を挿入できます。
  • 最後に、テキスト入力の色を設定する最後のプロパティの変更が1つあります。

答え3

私はBASHコマンドを学んでいて、ここに座って私のバージョンのカラーコマンドで遊んでいます。私はこの解決策を思い出しました。

次のコマンドを使用します。

PS1='\[\e[0:36m\]\h>\[\e[0;31m\]'

分解: PS1=: PS1 コマンド開始

'':コマンドを一重引用符で囲みます(したがって、BASHはそれがコマンドだとは思わない)。

\:各個々のコマンドは、次から始まります。

[]:各コマンドが含まれています。

\e(\033 ASCII エスケープ文字である場合もあります): カラーコマンドを開始します。

カラーコマンドは、そのコマンドが適用されるオブジェクトの前に来ます。

[\e[0;36m] : ターコイズ

\h : ホスト名

'>': ホスト名の後に印刷

[\e[0;31m]: 赤

明らかに、最後の赤いコマンドは入力を赤にします。必要に応じて色を変更するだけです。

また、次のサイトが私に少し役立ちました。

https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/

私のバージョン:GNU bash、v.4.2.46

注意深い、

イタチ

関連情報