.bashrcをカスタマイズしてコマンドプロンプトを構成する方法


8

私のBashプロンプトを変更して、色と表示されるテキストを変更する簡単な方法はありますか?これはで行われると聞いたことがありますが、これ.bashrcを変更する簡単で便利な方法は見つかりませんでした。バッシュで色はどのように表現されますか?


bash+promptチュートリアルはありませんが、必ず参照してください。
Gilles 'SO-悪をやめる'

2
Arch Linux wikiに色のbashプロンプトを設定するための良いガイドがあり、色のリストといくつかの良い例が含まれています。
jasonwryan

回答:


4

私はかつて私の中でそれらを定義していた.bashrc

export e="\e["

function cls          { echo -n "${e}H${e}J${e}0m"; }
function rcls         { echo -n "${e}H${e}J${e}S${e}H${e}J${e}0m${e}u${e}J"; } # not quite yet !
# rcls only works when no funny codes have been issued in between, i.e. the buffer is clean
# below the current screen. And then there can be issues with the first line of the buffer.

function bright       { echo -n "${e}1m"; }
function normal       { echo -n "${e}0m"; }
function colour       { echo -n "${e}$1;$2;$3m"; }
function black        { echo -n "${e}30m"; }
function bg_black     { echo -n "${e}40m"; }
function red          { echo -n "${e}31m"; }
function bg_red       { echo -n "${e}41m"; }
function green        { echo -n "${e}32m"; }
function bg_green     { echo -n "${e}42m"; }
function yellow       { echo -n "${e}33m"; }
function bg_yellow    { echo -n "${e}43m"; }
function blue         { echo -n "${e}34m"; }
function bg_blue      { echo -n "${e}44m"; }
function magenta      { echo -n "${e}35m"; }
function bg_magenta   { echo -n "${e}45m"; }
function cyan         { echo -n "${e}36m"; }
function bg_cyan      { echo -n "${e}46m"; }
function white        { echo -n "${e}37m"; }
function bg_white     { echo -n "${e}47m"; }
function c_up         { echo -n "${e}$1A"; }
function c_down       { echo -n "${e}$1B"; }    # within
function c_right      { echo -n "${e}$1C"; }
function c_left       { echo -n "${e}$1D"; }    # screen
function c_pos        { echo -n "${e}$1;$2f"; } # [Hf]
function c_line       { echo -n "${e}$1d"; }
function screentop    { echo -n "${e}H"; }      # [Hdf]
function linetop      { echo -n "${e}G"; }
function buffertop    { echo -n "${e}u"; }      # depends on other control characters ?
function tab          { echo -n "${e}I"; }
function backtab      { echo -n "${e}Z"; }
function scrolldown   { echo -n "${e}$1T"; }    # within screen
function scrolldown_B { echo -n "${e}$1L"; }    # scroll down below cursor
function scrollup_B   { echo -n "${e}$1M"; }    # scroll up below cursor
function clear        { echo -n "${e}J"; }      # delete to end of screen
function cleanbuffer  { echo -n "${e}S"; }      # copies first screen to bottom and clears
                                                # everything else above the cursor.
#function xxx { echo -n "${e}xxx"; }

export -f bright normal colour
export -f black bg_black red bg_red green bg_green yellow bg_yellow
export -f blue bg_blue magenta bg_magenta cyan bg_cyan white bg_white
export -f c_up c_down c_right c_left c_pos c_line
export -f screentop linetop buffertop tab backtab
export -f scrolldown scrolldown_B scrollup_B clear cleanbuffer

次に、たとえば次のように使用できます。

PS1_init="\n$(bright)$(black)$(hostname):\w\n$(bg_blue)"
PS1_end="$(normal)$(bright)\n\! -> $(normal)$(clear)"
export PS1="$PS1_init"'$(date)'"$PS1_end"

これらはあなたを助けるかもしれません。

変数ではなく関数にした理由は、怠惰です。タイピングを省きたかっただけです。もちろん、効率変数を探す場合はより良いでしょう。

結局のところ、これらは特定の端末にしか適合しません。したがって、ヘルプについては、bashやその他のシェルのヘルプではなく、ターミナルのドキュメントを参照してください。


今まで見た中で最高のbashrc定義の1つです。
theTuxRacer 2011

1
変数を使用すると、タイピングを節約できますbright=$'\e1m'。($'…'構文のない非常に古いバージョンとの互換性が必要な場合を
除き

@ギレス、あなたは誤解しました:私blueはプロンプトより(またはシェルスクリプトで)入力する方が好きですecho $blue
asoundmove 2011

2

BashはAnsiカラースキームを使用しています-ウィキペディアの記事:http : //en.wikipedia.org/wiki/ANSI_escape_code#Colors

たとえば、ここに私のプロンプトがあります:(私は別の行のプロンプトが好きですが、全員がそうするわけではありません。また、私の用語の背景は暗いです-用語が明るい場合は色を調整してください。)

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[31m\]\h \[\e[0;36m\]\t \[\e[93m\]\w\[\e[36m\] p$$-\!-\$\[\e[0m\]\n\$ '

特別なプロンプト値は、「プロンプト」の下のBashマンページで説明されています。

\u  the username of the current user
\h  the hostname up to the first `.'
\t  the current time in 24-hour HH:MM:SS format
\w  the current working  directory,  with 
    $HOME  abbreviated with  a tilde
    (uses the value of the PROMPT_DIRTRIM variable)
$$  PID of the Bash (helps distinguish my many terms.
    Useful, eg, if I have to kill something.
\!  the history number of this command
\n     newline
\$  if the effective UID is 0, a #, otherwise a $

1
Bashはansiカラースキームを使用しません。エスケープコードを実装するのは端末です。Bashはどの端末でも機能するのでtput setf _n_、前景色を設定するためのエスケープコードを取得するのに使用するのが最善です。
camh 2011

0

たとえば、色を付けるには、次のようにします。

次の行を追加するだけです。

export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "

プレビュー: ここに画像の説明を入力してください

これは私の好みの色です。ANSIカラーコードであるmコード(など34m)を変更することで、プロンプトの色の各部分をカスタマイズできます。

ANSIカラーコードのリスト:

  • 黒:30m
  • 赤:31m
  • 緑:32m
  • イエロー:33m
  • ブルー:34m
  • パープル:35m
  • シアン:36m
  • 白:37m

0

これらの回答はどれも、迅速なカスタマイズのしくみを理解するのに役立ちませんでした。さまざまなフォーラム、スタック、Wikiなどを数時間検索して集めたものを以下に示します。

プロンプトを見つける

nano ~/.bashrc

あなたの検索bashrcのためには、PS1手動またはで、Altキー+ F。これは最初のbashプロンプトであり、コマンドを入力すると表示されます。PS[2-4]も存在しますが、ほとんど使用されません。

色を定義する

PS1線の上に、次の色の定義を追加します。

# Color Variables
c1='\[\033[0;30m\]' # Non-bold color 1
C1='\[\033[1;30m\]' # Bold color 1
c2='\[\033[0;31m\]' # Non-bold color 2
C2='\[\033[1;31m\]' # Bold color 2
c3='\[\033[0;32m\]' # Non-bold color 3
C3='\[\033[1;32m\]' # Bold color 3
c4='\[\033[0;33m\]' # Non-bold color 4
C4='\[\033[1;33m\]' # Bold color 4
c5='\[\033[0;34m\]' # Non-bold color 5
C5='\[\033[1;34m\]' # Bold color 5
c6='\[\033[0;35m\]' # Non-bold color 6
C6='\[\033[1;35m\]' # Bold color 6
c7='\[\033[0;36m\]' # Non-bold color 7
C7='\[\033[1;36m\]' # Bold color 7
c8='\[\033[0;37m\]' # Non-bold color 8
C8='\[\033[1;37m\]' # Bold color 8
NC='\[\033[0m\]'    # Back to default color

色を設定する

これで(おそらくグラフィカルな)端末に何らかのカスタマイズオプションが表示されます。例えば、私はKDEの使用していkonsoleのSettings > Edit Current Profile... > Appearance > Edit...ショーこのカスタマイズインターフェイスを:

Konsoleカラーのカスタマイズ

次に、これらを好きな色に変更します。前景色はデフォルトの色で、色1〜8は定義した色で、選択できます。このカスタマイズと変数は1ベースですが、定義は0ベースではありません。

プロンプトで色を使用する

私のデフォルトのプロンプトについては、私は:

PS1="[\u@\h \W]\$ "

\uあなたのあるUの sernameは、\hあなたです時間 ostname、\WあるWは、あなたが(どのディレクトリ)であり、ここでは\$迅速なブツ(ある#ユーザーID = 0 [ルート])。

$c1変更したい色の前に、$ c2`などを追加することで、これをカスタマイズできます。たとえば、私は:

PS1="$c2[$C8\u$c2@$C7\h $C6\W$c2]$C2\$$NC "

これは次の結果になります:

私のbashプロンプト

注:をNC最後に使用してデフォルトの色にリセットする必要があります。そうしないと、プロンプト(入力)の後のすべてがプロンプトの最後の色になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.