技術ノート 特徴 Bash プロンプトをカスタマイズ (および色付け) する方法

Bash プロンプトをカスタマイズ (および色付け) する方法

Bash プロンプトをカスタマイズ (および色付け) する方法

ほとんどの Linux ディストリビューションは、Bash プロンプトを次のように設定します。

 username @hostname :directory$
Bash プロンプトをカスタマイズ (および色付け) する方法

。ただし、Bash プロンプトを構成して、好きなものを含めたり、好きな色を選択したりすることもできます。

Bash プロンプトをカスタマイズ (および色付け) する方法

ここでの手順例は、Ubuntu 16.04 LTS で実行されました。他の Linux ディストリビューションでもプロセスは同じはずですが、デフォルトの Bash プロンプトと .bashrc ファイルの設定は少し異なる場合があります。

プロンプト変数の保存場所

Bash プロンプト構成は、ユーザー アカウントの .bashrc ファイルに保存されます。

 ~/.bashrc

。したがって、ユーザー名が bob の場合、ファイルは次の場所にあります。

 /home/bob/.bashrc

ファイルを開いて現在の Bash 変数を表示できます。ここではテキスト エディターの例として nano を使用しますが、 vi 、 emacs 、またはその他の使い慣れたテキスト エディターを使用することもできます。ターミナルを開いて次を実行します。

ナノ ~/.bashrc

PS1= セクションまで下にスクロールします。最初の変数には色の情報が含まれているため、かなり複雑に見えます。これについては後で説明します。 2 番目の変数は、色情報を持たないため、次のようになります。

 ${debian_chroot:+($debian_chroot)}\u@\h:\w\$

${debian_chroot:+($debian_chroot)} ビットがあるため、これはまだ少し複雑です。これらは、Debian chroot 環境を使用しているかどうかを Bash に知らせるだけであり、通常は表示されません。これらを無視して、Bash プロンプト変数のデフォルトの構造は次のとおりです。

 \u@\h:\w\$

\u はユーザー名を示し、 @ は @ 記号を示し、 \h はホスト名 (コンピューター名) を示し、 : は : 文字を示し、 \w 作業ディレクトリを示し、通常のユーザー アカウントの場合、 \$ $ を示します。 # あなたが root の場合。したがって、これらをすべて組み合わせると、 username@hostname:working_directory$ が得られます。

Bash プロンプトを変更するには、PS1 変数内の特殊文字を追加、削除、または再配置するだけです。ただし、デフォルトの変数以外にも使用できる変数はたくさんあります。

ここではテキスト エディターをそのままにしておきます。nano では、Ctrl+X を押して終了します。実際に .bashrc ファイルに新しい変数を書き込む前に、変数を試してみる方法を示します。

Bash プロンプトをカスタマイズ (および色付け) する方法

カスタム Bash プロンプトを作成する方法

Bash プロンプト設定は PS1 変数に保存されます。 PS1 変数の内容を新しい変数に保存するには、次のコマンドを実行します。

デフォルト=$PS1

PS1 変数をさまざまな値に設定して実験できるようになりました。たとえば、ここの最初の行はプロンプトを基本的な「user$」プロンプトに設定し、2 行目はプロンプトを基本的な「user:working_directory$」プロンプトに設定します。

 PS1="\u\$ "

PS1=”\u:\w\$ ”

デフォルトのプロンプトに戻りたい場合は、次のコマンドを実行してください。

 PS1=$デフォルト

デフォルト設定を以前に保存したため、Bash はデフォルトのプロンプトに復元されます。ここで行う変更は現在の Bash セッションに対してのみ一時的なものであるため、いつでもサインアウトしてサインインし直すか、ターミナル ウィンドウを閉じて再度開いてデフォルトのプロンプトに戻ることができることに注意してください。ただし、上記の行を使用すると、サインアウトしたりウィンドウを閉じたりする手間をかけずに、デフォルトの Bash プロンプトに簡単に戻ることができます。

変数には任意の文字またはテキストを追加できます。したがって、デフォルトのプロンプトに「Hello World」というプレフィックスを付けるには、次のように使用できます。

 PS1="Hello World \u@\h:\w\$ "

基本を理解したら、すべての特殊文字が何であるかを知る必要があります。おそらくこれらの多くは気にしないでしょうが、 Bash マニュアル に記載されている完全なリストは次のとおりです。

  • ベルの文字: \a
  • 「平日月日」形式の日付 (例: 「火曜日 5 月 26 日」): \d
  • 形式は strftime(3) に渡され、結果がプロンプト文字列に挿入されます。空の形式では、ロケール固有の時刻表現になります。中かっこは必須です: \D{format}
  • エスケープ文字: \e
  • ホスト名 (最初の ‘.’ まで): \h
  • ホスト名: \H
  • 現在シェルによって管理されているジョブの数: \j
  • シェルの端末デバイス名のベース名: \l
  • 改行: \n
  • キャリッジリターン: \r
  • シェルの名前、$0 のベース名 (最後のスラッシュに続く部分): \s
  • 24 時間形式の HH:MM:SS 形式の時刻: \t
  • 12 時間形式の時刻 (HH:MM:SS): \T
  • 午前/午後 12 時間形式の時刻: \@
  • 24 時間形式の HH:MM 形式: \A
  • 現在のユーザーのユーザー名: \u
  • Bash のバージョン (例: 2.00): \v
  • Bash のリリース、バージョン + パッチレベル (例: 2.00.0): \V
  • $HOME をチルダで省略した現在の作業ディレクトリ ($PROMPT_DIRTRIM 変数を使用): \w
  • $PWD のベース名 ($HOME をチルダで省略したもの): \W
  • このコマンドの履歴番号: \!
  • このコマンドのコマンド番号: \#
  • 有効な uid が 0 の場合は #、それ以外の場合は $: \$
  • ASCII コードが 8 進数値 nnn である文字: \nnn
  • バックスラッシュ: \\
  • 非印刷文字のシーケンスを開始します。これは、ターミナル制御シーケンスをプロンプトに埋め込むために使用できます: \[
  • 一連の非印刷文字を終了します: \]

したがって、Bash プロンプトに日付と時刻を追加し、コマンドの 2 行目に作業ディレクトリを置きたい場合は、次の構造を使用できます。

 PS1="[\d \t] \u@\h\n\w\$ "

ここでの角括弧はまったく必要ありませんが、視覚的に内容を分割し、行を読みやすくするのに役立ちます。前に説明したように、変数には任意のテキストまたは通常の文字を追加できるため、自分に合ったものを自由に使用してください。

知っておくべきもう 1 つの強力なトリックがあります。それは、任意のコマンドの出力をプロンプトに追加できることです。プロンプトが表示されるたびに、Bash はコマンドを実行し、現在の情報を入力します。これを行うには、実行したいコマンドを 2 つの ` 文字の間に含めるだけです。これはアポストロフィではありません。キーボードの Tab キーの上に表示されるグレーブ アクセントです。

たとえば、プロンプトで Linux カーネルのバージョンを表示したいとします。次のような行を使用できます。

 PS1="\u@\h 上の `uname -s -r` \w\$ "

別の例として、 uptime コマンドで表示されるシステムの稼働時間と負荷平均を表示したいとします。次の構造を使用すると、残りのプロンプトの前に稼働時間を独自の行に配置できます。

 PS1="(`稼働時間`)\n\u@\h:\w$ "

さまざまな特殊文字やコマンドを自由に試して、理想的なコマンド プロンプトを組み立ててください。

Bash プロンプトをカスタマイズ (および色付け) する方法

Bash プロンプトに色を追加する方法

好みのプロンプトを見つけたら、それに色を追加できます。これは実際には非常に単純ですが、何を見ているのか理解していないと、変数が非常に乱雑で複雑に見えます。

たとえば、以前のデフォルトのカラー プロンプト変数は次のとおりです。

 ${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033 [00m\]\$

または、debian_chroot ビットをもう一度削除します。

 \[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

これは実際には先ほどの単なる \u@\h:\w$ 変数ですが、色の情報が含まれています。実際には、いくつかのセクションに分けることができます。

 \[\033[01;32m\] \u@\h

\[\033[00m\] :

\[\033[01;34m\] \w

\[\033[00m\] \$

最初のセクションは \u@\h ビットで、その前に緑色に変える色情報が続きます。 2 番目は : 文字で、その前に色付けを削除する色情報が続きます。 3 番目は \w ビットで、その前に色情報が続き、青になります。 4 番目は \$ ビットで、その前に色を除去する色情報が続きます。

独自のカラータグを作成する方法を理解したら、Bash プロンプトの任意のセクションに任意の色を追加できます。

知っておくべきことは次のとおりです。 \[ \] character の間にカラー コード情報全体を含める必要があります。タグ内では、これが色情報であることを Bash に示すために \033[ または \e[ で始める必要があります。 \033[ \e[ は両方とも同じことを行います。 \e[ ほうが短いので、より使いやすいかもしれませんが、デフォルトで使用されるものと一致するので、ここでは \033[ を使用します。カラータグの終わりを示すには、タグの最後に m\ を付ける必要があります。

これを詳しく見ると、各カラータグは次のようになります。唯一の違いは、実際の色を定義するために COLOR の代わりに追加する情報です。

 \[\033[カラーm\]

Bash では、前景テキストの色を変更したり、テキストに「太字」や「下線」などの属性を追加したり、背景色を設定したりできます。

前景テキストの値は次のとおりです。

  • 黒:30
  • 青: 34
  • シアン: 36
  • 緑: 32
  • 紫: 35
  • 赤:31
  • ホワイト:37
  • 黄:33

たとえば、紫色のテキストはカラー コード 35 であるため、紫色のテキストには \[\033[ 35 m\] を使用します。

テキストの属性を指定することもできます。この属性は、色番号の前にセミコロン (;) で区切って追加する必要があります。これらの属性を持つテキストは、端末エミュレータごとに異なって表示されます。

テキスト属性の値は次のとおりです。

  • 通常のテキスト: 0
  • 太字または薄い文字: 1 (端末エミュレータによって異なります。)
  • 薄暗いテキスト: 2
  • 下線付きテキスト: 4
  • 点滅テキスト: 5 (これはほとんどのターミナル エミュレーターでは機能しません。)
  • 反転テキスト: 7 (前景色と背景色が反転するため、現在のテキストが黒の背景に白のテキストである場合、白の背景に黒のテキストが表示されます。)
  • 隠しテキスト: 8

実際には、通常のテキスト属性を含める必要はありません。とにかく、それがデフォルトです。

たとえば、赤いテキストはコード 31、太字のテキストはコード 1 であるため、太字の赤いテキストには \[\033[ 1;31 m\] を使用します。

背景色を指定することもできますが、背景色に属性を追加することはできません。

背景色の値は次のとおりです。

  • 黒背景:40
  • 青色背景:44
  • シアンの背景: 46
  • 緑の背景:42
  • 紫色の背景:45
  • 赤背景:41
  • 白背景:47
  • 黄色の背景: 43

たとえば、青色の背景はコード 44 であるため、 \[\033[ 44 m\] 青色の背景を指定します。

前景色タグと背景カラータグの両方を指定できます。たとえば、42 は緑の背景を表し、31 は赤のテキストを表します。したがって、デフォルトのプロンプトを緑の背景に赤いテキストにするには、次のようにします。

 PS1="\[\033[ 42 m\]\[\033[ 31 m\]\u@\h:\w\$ "

ここでは、単一の背景色を指定し、次に単一の前景色テキスト色を指定するだけです。これは、プロンプトの先頭から始まり、プロンプト内のすべてのテキストに適用されます。ただし、変数にカラー タグを必要な数だけ指定して、プロンプトのさまざまなセクションに好きな色を付けることができます。

カラーコード 00 を指定して色の情報をクリアしない限り、背景および前景色のテキストの色はプロンプトを通過し続けます。変数内でこのタグを使用して、プロンプト内のどこかで書式設定をデフォルトにリセットすることもできます。たとえば、次の行では、 \$ 文字の前ですべての色付けが終了します。

 PS1="\[\033[ 42 m\]\[\033[ 31 m\]\u@\h:\w\\[\033[ 00 m\]\$ " 

Bash プロンプトをカスタマイズ (および色付け) する方法

新しいデフォルトのプロンプトを設定する方法

色の実験が完了すると、現在のセッションで好みの Bash プロンプトが表示されるはずです。しかし、おそらく、その新しいプロンプトを永続的にして、すべての Bash セッションで自動的に使用されるようにしたいと考えるでしょう。

これを行うには、前に説明した .bashrc ファイル内の PS1 変数の内容を変更するだけです。

次のように、好みのテキスト エディタで .bashrc ファイルを開きます。

ナノ ~/.bashrc

下にスクロールして、PS1= セクションを見つけます。デフォルトの変数をカスタマイズした変数に置き換えるだけです。おそらく ${debian_chroot:+($debian_chroot)} ビットはそのままにしておきたいでしょうが、いずれにせよ、chroot 環境にいない限り、これらのビットは表示されません。

if [ "$color_prompt" = yes ]; then の下に色付きの PS1 変数を入力します。 if [ "$color_prompt" = yes ]; then ライン。 else 行の下に色なしの変数を入力します。

ファイルを保存し、テキスト エディタを閉じます。たとえば、ファイルを nano に保存するには、Ctrl+O を押し、Enter を押してから、Ctrl+X を押して終了します。

次回、ターミナルにサインインするか、新しいターミナル ウィンドウを開いて新しい Bash シェルを起動すると、カスタマイズしたプロンプトが表示されます。

「 Bash プロンプトをカスタマイズ (および色付け) する方法」に関するベスト動画選定!

Bash プロンプト/ターミナルのカスタマイズと色付け
Bash ターミナル プロンプトをカスタマイズする方法