ホームページ » の仕方 » Bashプロンプトをカスタマイズ(および色付け)する方法

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

    ほとんどのLinuxディストリビューションは、Bashプロンプトを次のように設定します。 username @ hostname:ディレクトリ$ . しかし、あなたが好きなものをすべて含むようにBashプロンプトを設定したり、好きな色を選択したりすることもできます。.

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

    プロンプト変数が格納されている場所

    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変数内の特殊文字を追加、削除、または再配置するだけです。しかし、デフォルトの変数よりも多くの変数を使用できます。.

    テキストエディタをnow-in nanoのままにして、Ctrl + Xを押して終了します。実際に新しい変数を.bashrcファイルに書き込む前に、変数を試す方法を説明します。.

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

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

    デフォルト= $ PS1

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

    PS1 = "\ u \ $" PS1 = "\ u:\ w \ $"

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

    PS1 = $ DEFAULT

    あなたが以前にそれらのデフォルト設定を保存したという事実のおかげでBashはそのデフォルトのプロンプトに復元されます。ここで行った変更は現在のBashセッションの一時的なものにすぎないので、いつでもサインアウトしてサインインし直すか、端末ウィンドウを閉じて再度開いてデフォルトのプロンプトに戻ることができます。しかし、上記の行は、ログアウトしたりウィンドウを閉じたりする手間をかけずに、デフォルトのBashプロンプトに簡単に戻ることを可能にします。.

    変数には任意の文字またはテキストを追加できます。そのため、デフォルトのプロンプトの先頭に「Hello World」を付けるには、次のようにします。

    PS1 = "ハローワールド\ u @ \ h:\ w \ $"

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

    • ベル文字: \ a
    • 「Weekday Month Date」形式の日付(例:「Tue May 26」): \ d
    • フォーマットはstrftime(3)に渡され、結果はプロンプト文字列に挿入されます。空の形式はロケール固有の時間表現になります。中括弧は必須です。 \ D フォーマット
    • エスケープ文字 \ 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 = "'uname -s -r' \ w \ $で\ u @ \ h"

    別の例として、システムの稼働時間と負荷平均を表示したいとしましょう。 稼働時間 コマンド。あなたはプロンプトの残りの部分の前にそれ自身の行に稼働時間を置く次のような構造を使うことができます。.

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

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

    あなたの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 それを緑色に変える色情報が先行します。二つ目は 色を取り除く色情報が先行する文字。三つ目は \ w それを青に変える色情報が先行します。四つ目は \ $ 色情報を前に付けて、カラーリングを削除するビット.

    あなたがあなた自身のカラータグを構築する方法を理解したら、あなたはあなたが好きな色をあなたのBashプロンプトのあなたが好きな部分に追加することができます.

    ここにあなたが知る必要があるものがあります: \ [  そして \] キャラクターs。タグの内側では、どちらかで始める必要があります \ 033 [ または \ e [ これがカラー情報であることをBashに示します。両方 \ 033 [ そして \ e [ 同じことをする. \ e [ 短いので使用するほうが便利かもしれませんが、使用します \ 033 [ デフォルトで使われているものと一致するので、ここでは。タグの最後には、 m \ カラータグの終わりを示す.

    それを打破して、すべてのカラータグがどのように見えるかはここにあります。唯一の違いは、実際の色を定義するためにCOLORの代わりに追加する情報です。

    \ [\ 033 [m \]

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

    フォアグラウンドテキストの値は次のとおりです。

    • 黒:30
    • 青:34
    • シアン:36
    • グリーン:32
    • パープル:35
    • 赤:31
    • 白:37
    • イエロー:33

    たとえば、紫色のテキストはカラーコード32なので、次のようにします。 \ [\ 033 [32m \]  紫色のテキスト用.

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

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

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

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

    たとえば、赤いテキストはコード31、太字のテキストはコード1なので、次のようにします。 \ [\ 033 [1; 31m \] 太字の赤いテキストの.

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

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

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

    たとえば、青い背景はコード44なので、, \ [\ 033 [44m \] 青い背景を指定します.

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

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

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

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

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

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

    色を試し終えたら、現在のセッションで好きなBashプロンプトが表示されます。しかし、あなたはたぶんその新しいプロンプトを永久にしたいのでそれはあなたのすべてのBashセッションで自動的に使われるでしょう.

    これを行うには、先ほど見た.bashrcファイルのPS1変数の内容を変更するだけです。.

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

    ナノ〜/ .bashrc

    下にスクロールしてPS1 =セクションを見つけます。デフォルトの変数をカスタマイズした変数に置き換えるだけです。あなたはおそらく残したいと思うでしょう $ debian_chroot:+($ debian_chroot)  ちょっとだけ、しかし - あなたがchroot環境にいない限り、彼らは現れません、とにかく.

    色付きのPS1変数を if ["$ color_prompt" = yes];それから ライン。の下に色のない変数を入力してください それ以外の ライン.

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

    次回に新しいBashシェルを起動するとき - たとえば、端末でサインインするか、新しい端末ウィンドウを開くことによって - カスタマイズされたプロンプトが表示されます。.