Last Update 2022/09/16
プロンプト
(01)
\d
「Weekday Month Date」形式の日付
$ PS1='\d \$ ' <--- 日付(Weekday Month Date)を指定
Mon Sep 12 $
(02)
\D{ フォーマット }
フォーマット がstrftime(3)に渡され、結果をプロンプト文字列に挿入
$ PS1='\D{%Y-%m-%d} \$ ' <--- 日付(%Y-%m-%d)を指定
2022-09-13 $
(03)
\e
ASCIIエスケープ文字
$ PS1='\[\e[34m\]\u \$ \[\e[0m\]' <--- 文字属性の指定時のC1制御文字として記述
testusr $
(04)
\h
最初の「.」までのホスト名
$ PS1='\h \$ '
samplehost $
samplehost $ hostname <--- ホスト名を確認
samplehost.sampledomain
(05)
\H
ホスト名
$ PS1='\H \$ '
samplehost.sampledomain $
samplehost.sampledomain $ hostname <--- ホスト名を確認
samplehost.sampledomain
(06)
\j
シェルが現在管理しているジョブの数
$ PS1='\j \$ '
0 $ sleep 10 & <--- バックグラウンドでジョブを実行
[1] 333
1 $ sleep 10 & <--- プロンプトにジョブ数を反映(1)。更にジョブを実行
[2] 334
2 $ sleep 10 & <--- プロンプトにジョブ数を反映(2)。更にジョブを実行
[3] 335
3 $ sleep 10 & <--- プロンプトにジョブ数を反映(3)。更にジョブを実行
[4] 336
4 $ <--- 4つのジョブが動作中
[1] Done sleep 10
[2] Done sleep 10
[3]- Done sleep 10
[4]+ Done sleep 10
0 $ <--- 全てのジョブの動作完了
(07)
\l
シェルの端末デバイスのベースネーム
$ PS1='\l \$ '
0 $ tty <--- デバイス名を確認
/dev/pts/0
$ PS1='\l \$ ' <--- 異なる端末(ターミナル)で実行
1 $ tty <--- デバイス名を確認
/dev/pts/1
(08)
\n
改行
$ PS1='\n \$ '
<--- プロンプトによる改行
$
(09)
\s
シェルの名前、$0 のベースネーム
$ echo $0 <--- パラメータ$0を確認
bash
$ PS1='\s \$ '
bash $ <--- プロンプトに反映
(10)
\t
24時間表示のHH:MM:SS形式での現在時刻
$ PS1='\t \$ '
10:50:18 $ <--- 現在時刻を反映
(11)
\T
12時間表示のHH:MM:SS形式での現在時刻
$ date <--- 現在時刻を確認
Wed 14 Sep 14:44:30 JST 2022
$ PS1='\T \$ '
02:44:33 $ <--- 12時間表示のHH:MM:SS形式のプロンプト
(12)
\@
現在時刻(12時間HH:MM am/pm形式)
$ date <--- 現在時刻を確認
Wed 14 Sep 14:59:41 JST 2022
$ PS1='\@ \$ '
02:59 pm $ <--- 12時間HH:MM am/pm形式のプロンプト
(13)
\A
現在時刻(24時間HH:MM形式)
$ date <--- 現在時刻を確認
Wed 14 Sep 15:54:22 JST 2022
$ PS1='\A \$ '
15:54 $ <--- 24時間HH:MM形式のプロンプト
(14)
\u
現在のユーザー名
$ PS1='\u \$ '
testusr $ <--- 現在のユーザー名
(15)
\v
bashのバージョン
$ PS1='\v \$ '
5.1 $ <--- bashのバージョンを付加されたプロンプト
5.1 $ bash --version <--- bashのバージョンの確認
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
5.1 $
(16)
\V
bashのバージョン + パッチレベル
$ PS1='\V \$ '
5.1.16 $ <--- bashのバージョン + パッチレベルを付加されたプロンプト
5.1.16 $ bash --version <--- bashのバージョンの確認
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
5.1 $
(17)
\w
現在の作業ディレクトリ
$ pwd <--- 現在の作業ディレクトリの確認
/home/testusr/workdir
$ PS1='\w \$ '
~/workdir $ <--- $HOMEはチルダで省略
(18)
\W
現在の作業ディレクトリのベース名
$ pwd <--- 現在の作業ディレクトリの確認
/home/testusr/workdir
$ PS1='\W \$ '
workdir $
(19)
\!
このコマンドのヒストリーリスト上の位置
$ PS1='\! \$ '
676 $ sleep 1 <--- プロンプトとして履歴番号を出力。プロンプト設定後にコマンド実行
677 $ history <--- ヒストリーリスト出力
︙
675 PS1='\! \$ '
676 sleep 1
677 history
678 $ <--- 最新のヒストリーリスト上の番号
(20)
\#
このコマンドの現在のシェルセッションで実行されたコマンドの順序番号
$ su testusr <--- testusrに切り替え
Password:
$ PS1='\# \$ '
2 $ sleep 1 <--- プロンプト変数設定の次のコマンド番号「2」を出力。次のコマンド「sleep」を実行
3 $ <--- 最新のコマンド番号「3」
(21)
\$
実効UIDが0の場合は#、それ以外の場合は$
testusr > PS1='\$ ' <--- 初期のプロンプト「testusr >」を変更
$ <--- UIDが0以外なので「$」
$ su <--- root(UID=0)へ切り替え
Password:
root [ /home/testusr ]# PS1='\$ '
# <--- UIDが0なので「#」
(22)
\nnn
8進数nnnに対応する文字
$ PS1='\050\u\051 \$ '
(testusr) $ <--- 8進数を対応する文字「(」「)」に変換
(23)
\\
バックスラッシュ
$ PS1='\\!=\! \$ '
\!=32 $ <--- バックスラッシュを出力
(24)
\[
\]
プロンプトに端末制御シーケンスを埋め込むために使用する非印刷文字列を開始、終了
$ PS1='\[\e[34m\]\u \$ \[\e[0m\]'
testusr $
実行環境
GNU bash, version 5.1.16
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。