Linux ターミナル プロンプトで Bash の色とコンテンツをカスタマイズする方法
現在、Bash は、すべてではないにしても、ほとんどの最新の Linux ディストリビューションのデフォルト シェルです。ただし、ターミナルのテキストの色とプロンプトの内容がディストリビューションごとに異なる場合があることに気づいたかもしれません。
推奨読書: Linux で最も頻繁に使用される 5 つのオープンソース シェル
アクセシビリティを向上させるため、または単なる気まぐれのためにこれをカスタマイズする方法を疑問に思っている場合は、読み続けてください。この記事ではその方法について説明します。
PS1 Bash 環境変数
コマンド プロンプトとターミナルの外観は、PS1
という環境変数によって制御されます。 Bash のマニュアル ページによると、PS1 は、シェルがコマンドを読み取る準備ができたときに表示される主なプロンプト文字列を表します。
PS1 で許可されているコンテンツは、バックスラッシュでエスケープされたいくつかの特殊文字で構成されており、その意味はマニュアル ページの プロンプト セクションに記載されています。
説明のために、システム内の PS1
の現在の内容を表示してみましょう (これはあなたのケースでは多少異なるかもしれません):
echo $PS1
[\u@\h \W]$
ここではPS1を必要に応じてカスタマイズする方法を説明します。
PS1 フォーマットのカスタマイズ
man ページの PROMPTING セクションによると、各特殊文字の意味は次のとおりです。
\u:
現在のユーザーのユーザー名。\h:
完全修飾ドメイン名の最初のドット(.)までのホスト名。\W:
現在の作業ディレクトリのベース名。$HOME はチルダ(~)で省略されます。\$:
現在のユーザーが root の場合は # を表示し、それ以外の場合は $ を表示します。
たとえば、現在のコマンドの履歴番号を表示したい場合は \!
を追加するか、代わりに FQDN を表示したい場合は \H
を追加することを検討するとよいでしょう。短いサーバー名。
次の例では、次のコマンドを実行して両方を現在の環境にインポートします。
PS1="[\u@\H \W \!]$"
Enter を押すと、プロンプトの内容が以下のように変化することがわかります。上記のコマンドを実行する前と後のプロンプトを比較してください。
ここでさらに一歩進んで、 コマンド プロンプトのユーザーとホスト名の色 (テキストとその周囲の背景の両方) を変更しましょう。
実際には、プロンプトの 3 つの側面をカスタマイズできます。
Text Format | Foreground (text) color | Background color |
0: normal text | 30: Black | 40: Black |
1: bold | 31: Red | 41: Red |
4: Underlined text | 32: Green | 42: Green |
33: Yellow | 43: Yellow | |
34: Blue | 44: Blue | |
35: Purple | 45: Purple | |
36: Cyan | 46: Cyan | |
37: White | 47: White |
最初に特殊文字 \e
を使用し、最後に m
を使用して、その後に続くのがカラー シーケンスであることを示します。
このシーケンスでは、3 つの値 (背景、形式、前景) がカンマで区切られています (値が指定されていない場合は、デフォルトが想定されます)。 。
推奨読書: Linux での Bash シェル スクリプトの学習
また、値の範囲が異なるため、どれ(背景、形式、前景)を最初に指定しても問題はありません。
たとえば、次の PS1
では、プロンプトが赤色の背景に黄色の下線付きテキストで表示されます。
PS1="\e[41;4;33m[\u@\h \W]$ "
見た目は良いのですが、このカスタマイズは現在のユーザー セッションの間のみ持続します。ターミナルを閉じるかセッションを終了すると、変更は失われます。
これらの変更を永続的にするには、ディストリビューションに応じて、次の行を ~/.bashrc
または ~/.bash_profile
に追加する必要があります。
PS1="\e[41;4;33m[\u@\h \W]$ "
自由に色を試して、自分に最適なものを見つけてください。
まとめ
この記事では、Bash プロンプトの色と内容をカスタマイズする方法を説明しました。この投稿に関してご質問やご提案がございましたら、お気軽に以下のコメント フォームをご利用ください。お返事おまちしております!