コマンドプロンプト

ユーザーが Bash に入ると、Bash はコマンド プロンプトを表示し、この場所の後にコマンドを入力するようユーザーに求めます。

環境変数 PS1

コマンド プロンプトは通常、ドル記号「$」、または root ユーザーの場合はポンド記号「#」です。このシンボルは環境変数 PS1 によって決定されます。 現在のコマンド プロンプトの定義を確認するには、次のコマンドを実行します。

$ エコー $PS1

Bash を使用すると、ユーザーはこの変数を上書きすることでコマンド プロンプトをカスタマイズできます。書き換えられた「PS1」は、ユーザーの Bash 構成ファイル「.bashrc」に配置できます。今後、新しい Bash セッションを作成するときに、新しいプロンプトが有効になります。現在のウィンドウで変更されたプロンプトを表示するには、次のコマンドを実行します。

$ ソース ~/.bashrc

コマンド プロンプトの定義には、特定の内容を表す特別なエスケープ文字を含めることができます。

  • \a: 鳴る、コンピューターが音を鳴らします。
  • \d: 現在の日付を週、月、日の形式で表します (例: 「Mon May 26」)。
  • \h: このマシンのホスト名。
  • \H: 完全なホスト名。
  • \j: 現在のシェル セッションで実行されているジョブの数。
  • \l: 現在の端末デバイス名。
  • \n: 改行文字。
  • \r: 復帰文字。
  • \s: シェルの名前。
  • \t: 現在時刻は 24 時間形式の 時:分:秒 形式で表されます。
  • \T: 12 時間形式の現在時刻。
  • \@: 12 時間制の AM/PM 形式は現在時刻を表します。
  • \A: 24 時間形式の 時間:分 は現在時刻を表します。
  • \u: 現在のユーザー名。
  • \v: シェルのバージョン番号。
  • \V: シェルのバージョン番号とリリース番号。
  • \w: 現在の作業パス。
  • \W: 現在のディレクトリ名。
  • \!: コマンド履歴内の現在のコマンドの番号。
  • \#: 現在のシェル セッション内のコマンドの数。
  • \$: 一般ユーザーは $ 文字で表示され、root ユーザーは # 文字で表示されます。
  • \[: 一連の非印刷文字の開始マーク。
  • \]: 非印刷文字列の終了マーク。

たとえば、プロンプト定義 [\u@\h \W]\$[user@host ~]$ として表示されます (具体的な表示内容はシステムによって異なります)。

[ユーザー@ホスト ~]$ echo $PS1
[\u@\h \W]\$

このコマンド プロンプトは、「PS1」変数を上書きすることで変更できます。

$ PS1="\A \h \$ "
17:33 ホスト $

ユーザーの入力とプロンプトが結合されないように、$ の後にスペースを続けるのが最適であることに注意してください。

デフォルトでは、コマンド プロンプトは端末の事前定義された色で表示されます。 Bash ではプロンプトの色をカスタマイズできます。

以下のコードを使用すると、その後に続くテキストの色を設定できます。

  • \033[0;30m: 黒
  • \033[1;30m: ダークグレー
  • \033[0;31m: 赤
  • \033[1;31m: ライトレッド
  • \033[0;32m: 緑
  • \033[1;32m: ライトグリーン
  • \033[0;33m: 茶色
  • \033[1;33m: 黄色
  • \033[0;34m: 青
  • \033[1;34m: ライトブルー
  • \033[0;35m: ピンク
  • \033[1;35m: ライトピンク
  • \033[0;36m: シアン
  • \033[1;36m: ライトシアン
  • \033[0;37m: ライトグレー
  • \033[1;37m: ホワイト

たとえば、プロンプトを赤色にしたい場合は、「PS1」を次のコードに設定します。

PS1='\[\033[0;31m\]<\u@\h \W>\$'

ただし、上記の設定後は、プロンプトの後にユーザーが入力したテキストも赤色になります。この問題を解決するには、最後に別の特別なコード \[\033[00m\] を追加します。これは、次のテキストをデフォルトの色に戻すことを意味します。

PS1='\[\033[0;31m\]<\u@\h \W>\$\[\033[00m\]'

前景色の設定に加えて、Bash では背景色も設定できます。

  • \033[0;40m: 青
  • \033[1;44m: 黒
  • \033[0;41m: 赤
  • \033[1;45m: ピンク
  • \033[0;42m: 緑
  • \033[1;46m: シアン
  • \033[0;43m: 茶色
  • \033[1;47m: ライトグレー

以下は背景が赤いプロンプトです。

PS1='\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] '

環境変数 PS2、PS3、PS4

「PS1」に加えて、Bash はプロンプトに関連する他の 3 つの環境変数も提供します。

環境変数 PS2 は、コマンド ラインを新しい行に入力するときのシステム プロンプトであり、デフォルトは > です。

$ echo "こんにちは
>世界」

上記のコマンドでは、「hello」と入力して Enter キーを押すと、入力を続けるように求めるプロンプトが表示されます。このとき、2行目に表示されるプロンプトは、PS2で定義された>です。

環境変数 PS3 は、select コマンドを使用するときのシステム入力メニューのプロンプトです。

環境変数「PS4」のデフォルトは「+」です。これは、Bash の -x パラメータを使用してスクリプトを実行するときに、実行前にコマンドの各行が出力されるときに行の先頭に表示されるプロンプトです。

たとえば、次はスクリプト「test.sh」です。

#!/bin/bash

「ハローワールド」をエコーする

-x パラメータを使用してこのスクリプトを実行します。

$ bash -x テスト.sh
+ 「hello world」をエコーする
こんにちは世界

上記の例では、出力の最初の行の前に「+」があり、これは変数「PS4」が定義されているものです。


作者: wangdoc

アドレス: https://wangdoc.com/

ライセンス: クリエイティブ・コモンズ 3.0