私たちのほとんどはシェルプロンプトで作業します。 デフォルトでは、ほとんどの場合、Linuxディストリビューションはホスト名と現在の作業ディレクトリを表示します。 ただし、Bashプロンプトのカスタマイズについて知っている人はごくわずかです。 シェルプロンプトの色を変更して、作業中にコマンドプロンプトに重要な情報を追加することで、友達に印象を与えたり、自分の生活をとても楽にしたりできることを知ってワクワクします。
この記事では、簡単な方法で色を変更したり、Bashプロンプトをカスタマイズしたりする方法について説明します。
BASHを理解する
The bash Linuxディストリビューションでは、シェルがデフォルトです。 プロンプトは、PS1と呼ばれる特別なシェル変数を介した制御です。 PS2、PS3、PS4などの他の変数もあります。 コマンドを読み取る準備ができると、BashはプライマリプロンプトPS1を表示します。 また、コマンドを完了するためにさらに入力が必要な場合は、セカンダリプロンプトPS2が表示されます。
要するに、 bash バックスラッシュでエスケープされた特殊文字をいくつか挿入することにより、これらのプロンプト文字列をカスタマイズできます。
現在のBashプロンプトを表示する
以下のコマンドを実行すると、現在のBashプロンプトのステータスを表示できます。
# echo $PS1
[u@h W]$
デフォルトでは、コマンドプロンプトはに設定されています [u@h W] $。 バックスラッシュでエスケープされた各特殊文字は、次のようにデコードできます。
u
:現在のユーザー名を表示します。h
:ホスト名を表示するW
:現在の作業ディレクトリのベースを出力します。$
:有効なUIDが0の場合は#(rootユーザーを示します)を表示し、そうでない場合は$を表示します。
root以外のUnixユーザーの場合、次のように表示されます。
[linodadmin@centos-01 ~]$
Bashプロンプトの変更
前に説明したように、 bash プロンプトはPS1という名前の変数によって制御され、.bashrcファイルでこの変数を調整してプロンプトをカスタマイズできます。
さらに、これらの変更をシステム上のすべてのシステムユーザーが利用できるようにする場合、またはグローバルに利用できるようにする場合は、/ etc /でこの変数を変更するだけです。bash〜/ .bashrcの代わりに.bashrcファイル(DebianおよびUbuntuシステムの場合)または/ etc / bashrc(他のLinuxディストリビューションの場合)。
Bashを使用すると、いくつかのショートカットを使用して、ユーザー名、ホスト名、現在の作業ディレクトリ、日付と時刻などの詳細を取得できます。これらのショートカットはエスケープシーケンスと呼ばれます。
取る example、ユーザーの名前、ホスト名、現在のディレクトリ、および時刻を12時間形式で表示し、その後に$を付けます。 次に、以下のように必要な情報を表示するこれらのエスケープシーケンスでPS1変数を変更することにより、取得できます。
u
:現在のユーザー名を表示します。h
:ホスト名を表示するW
:現在の作業ディレクトリのベースを出力します。@
:現在の時刻を午前/午後12時間形式で表示します
$ export PS1="[u@h W @]$"
[linodadmin@centos-01 ~ 01:50 PM]$
これにより、Bashプロンプトを一時的に変更することしかできなくなります。 後続の端末に永続的な変更を加える必要がある場合は、このPS1値(PS1 = “)を使用して〜.bashrcファイルを編集できます。[u@h W @] $ “)ファイルの終わりに向かって。
必要な情報を取得するのに役立つエスケープシーケンスのリストを確認してください。
u
現在のユーザーのユーザー名、w
現在の作業ディレクトリW
現在の作業ディレクトリの最後のフラグメント。 にとって example、現在/ home / linodadmin / varにいる場合、これによりvarが得られます。h
ドット(。)までのコンピューターの名前。 にとって example、コンピュータの名前がcentos-01.linoxide.comの場合、これによりcentos-01が得られます。H
FQDNホスト名d
「平日月日」形式の日付(例:「3月21日火曜日」)t
24時間制の現在時刻HH:MM:SS形式T
12時間制の現在時刻HH:MM:SS形式@
12時間AM / PM形式の現在時刻n
次の行に進みます。!
:このコマンドの履歴番号#
:このコマンドのコマンド番号$
:有効なUIDが0の場合は#、それ以外の場合は$j
:シェルによって現在管理されているジョブの数
プロンプトに色を追加する
ほとんどの場合、システム管理者は、鈍いシェルプロンプトに色を追加したいと考えています。 これは、PS1変数のANSIエスケープシーケンスを使用して実現できます。 これらのエスケープシーケンスはで囲む必要があります[ and ] 正しく動作するために。 簡単な方法で、このコマンド構文を使用してシェルプロンプトに色を追加できます。
' e[x;ym $PS1 e[m'
Where:
e[
: Start color scheme.x;y
: Color pair to use (x;y)$PS1
: Your shell prompt variable.e[m
: Stop color scheme.
Check out the list of color codes which can be used:
txtblk='e[0;30m' # Black - Regular
txtred='e[0;31m' # Red
txtgrn='e[0;32m' # Green
txtylw='e[0;33m' #
txtblu='e[0;34m' # Blue
txtpur="e[0;35m" # Purple
txtcyn='e[0;36m' # Cyan
txtwht="e[0;37m" # White
bldblk='e[1;30m' # Black - Bold
bldred='e[1;31m' # Red
bldgrn='e[1;32m' # Green
bldylw='e[1;33m' #
bldblu='e[1;34m' # Blue
bldpur="e[1;35m" # Purple
bldcyn='e[1;36m' # Cyan
bldwht="e[1;37m" # White
unkblk='e[4;30m' # Black - Underline
undred='e[4;31m' # Red
undgrn='e[4;32m' # Green
undylw='e[4;33m' #
undblu='e[4;34m' # Blue
undpur="e[4;35m" # Purple
undcyn='e[4;36m' # Cyan
undwht="e[4;37m" # White
bakblk='e[40m' # Black - Background
bakred='e[41m' # Red
bakgrn='e[42m' # Green
bakylw='e[43m' #
bakblu='e[44m' # Blue
bakpur="e[45m" # Purple
bakcyn='e[46m' # Cyan
bakwht="e[47m" # White
txtrst="e[0m" # Text Reset
Let’s see the examples using these color codes.
Suppose, you want to use different colors in one terminal statement itself like you want to show the username in and the directory path in cyan, followed by a , bold $ symbol. You need to use escape sequences separately as required. For example, the escape sequences for red is e[31m, for cyan, it is e[36m, and for , it is e[33m. For bold text, we need to use e[1m. In addition, we need the reset ANSI escape sequence, which prevents styles from affecting the rest of the text in the shell. The reset sequence is e[0m. The PS1 variable for this will look like this.
export PS1='[e[32mu] [e[36mw] [e[33m][e[1m]$ [e[0m]'
永続的な変更のために、エクスポートステートメントを$ HOME /.bashrcファイルに追加する必要があります。
tputコマンドの使用
tputコマンドを使用してプロンプト設定を変更することもできます。 にとって example、tputを使用してカラープロンプトを表示するには、以下のコマンドを使用できます。
export PS1="[$(tput setaf 3)]u@h:w $ [$(tput sgr0)]"
以下のtputコマンドラインオプションの一部のリスト:
tput bold
–大胆な効果tput rev
–逆の色を表示するtput sgr0
–すべてをリセットtput setaf {CODE}
–前景色を設定します。詳細については、以下の色{CODE}の表を参照してください。tput setab {CODE}
–背景色を設定します。詳細については、以下の色{CODE}の表を参照してください。
tputコマンドラインオプションのカラーコード
以下のtputコマンドを使用して例を確認してください。
Bashishを使用したプロンプト設定の変更
Bashishは、テキスト端末のテーマ環境です。 アプリケーションごとに、色、フォント、透明度、背景画像を変更できます。 さらに、次のような一般的なシェルでのプロンプト変更をサポートします bash、zshおよびtcsh。 これらのツールは、Linuxディストリビューション用に ダウンロード リンク。
私はそれを使用してそれをインストールしました tar抽出。
root@centos-01:/home/bashish-2.2.4 $ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating data/main/prompt/sh/autoload
config.status: creating data/bashish-version
config.status: creating Makefile
config.status: creating bashish.spec
config.status: creating man/bashish.1
config.status: creating bin/bashish
Bashish configuration:
prefix: /usr/local
Now run 'make' and 'make install'
root@centos-01:/home/bashish-2.2.4 $ make
root@centos-01:/home/bashish-2.2.4 $ make install
今、実行する必要があります バシッシュ ユーザー構成ファイルをインストールします。
$bashish
This will enable Bashish prompt and terminal themeing
the following files will be modified:
~/.profile
~/.bashrc
~/.bash_profile (if already exists)
~/.zprofile (if already exists)
~/.zshrc
press ENTER to enable Bashish theming
or hit CTRL+C to quit
Bashish is now installed.
Restart your terminal or logoff and logon again to start theming your shell.
次に、次のコマンドを入力してシェルを再起動する必要があります。
$exec bash
┌────[root@centos-01]───────[15:58:35]───────[/home/bashish-2.2.4]─────────────────────────────────────────────────────────────────────────────
└──#
コマンドを入力できます バシッシュリスト 利用可能なすべてのカスタムテーマを表示し、 bashish –help その他のオプションを表示します。
─# bashish list
amiga
amigados
appchat
appcompress
appeditor
appeditornofont
appeditor_reversed
appevilroot
appgeneric
apphearttracker
appinvertfgbg
bashish THEMENAMEと入力すると、コマンドプロンプトに必要な変更を適用できます。 example
$bashish moo
これにより、スナップショットのようにコマンドプロンプトが変更されます。
同様に、これらのカスタムテーマのいずれかを適用して、コマンドプロンプトまたはターミナル設定を変更できます。
プロンプトにスマイリーを追加する
さらに、スマイリーを作成してプロンプトに表示し、プロンプトでの作業(成功/失敗)の試みに対応する表現を作成できることを知っていただければ幸いです。 にとって example、あなたは私たちの成功した試みに緑の幸せなスマイリーを表示し、私たちの失敗した試みに赤い悲しいスマイリーを表示したいと思います。 次に、ブール値を取得して、返された変数値に対応するスマイリーを表示するロジックスクリプトを設定できます。
export PS1='$(if [[ $? == 0 ]]; then echo "[e[32m]:)"; else echo "[e[31m]:("; fi)[e[0m] u w $ '
$? 変数は、前のプログラムの戻り値を保持します。 成功した場合は0が含まれ、失敗した場合はゼロ以外の値が含まれます。 $(if … fi)ブロックには、スマイリーを表示するためのロジックが含まれています。
プロンプトに絵文字を追加する
スマイリーの代わりに絵文字のUnicode文字を使用して同じ論理文字列を変更し、感情をより効果的に伝えることができます。 スマイリープロンプトの絵文字バリアントで変更された文字列をご覧ください。 :)は xf0 x9f x98 x83として表され、:(は xf0 x9f x99 x81として表されます。
export PS1='$(if [[ $? == 0 ]]; then printf "xf0x9fx98x83"; else printf "xf0x9fx99x81"; fi)[e[0m] u w $ '
ただし、ターミナルエミュレータとシステムで使用されているフォントによっては、モノクロの絵文字や文字化けした文字が表示される場合があります。
結論
私はあなたがあなたの色を塗るためのこれらのいくつかの素晴らしいテクニックを読んで楽しんだことを願っています bash 促す。 色による視覚的な区別は、作業をより楽しく追跡できるようにするために端末で実行できることです。 特定の情報に色を付けると、それらを目立たせることができ、端末履歴をスクロールするときに最後のプロンプトを見つけるのに役立ちます。 ルートユーザーを他のユーザーと区別するために、カラーパターンをカスタマイズすることもできます。
さあ、これを有効に活用して作業を楽にしていきましょう。 これに関するあなたの貴重なコメントや提案を読みたいと思います。