サーチ…


PS1のプロンプトを変更する

PS1を変更するには、PS1シェル変数の値を変更するだけです。この値はディストリビューションに応じて、 ~/.bashrcファイルまたは/etc/bashrcファイルで設定することができます。 PS1は以下のようなプレーンテキストに変更できます:

PS1="hello "

プレーンテキストのほかに、多くのバックスラッシュエスケープ特殊文字がサポートされています。

フォーマットアクション
\a ASCIIベル文字(07)
\d 「Weekday Month Date」形式の日付(例:「Tue May 26」)
\D{format} フォーマットはstrftime(3)に渡され、結果はプロンプト文字列に挿入されます。空の形式の場合は、ロケール固有の時刻表現になります。中かっこは必須です
\e ASCIIエスケープ文字(033)
\h 最初の '。'までのホスト名
\H ホスト名
\j 現在シェルによって管理されているジョブの数
\l シェルの端末名のベース名
\n 改行
\r キャリッジリターン
\s シェルの名前、$ 0の基本名(最後のスラッシュの後の部分)
\t 24時間制HH:MM:SS形式の現在時刻
\T 現在の12時間のHH:MM:SS形式の時刻
\@ 12時間のam / pm形式の現在の時刻
\A 現在の24時間HH:MM形式の時刻
\u 現在のユーザのユーザ名
\v bashのバージョン(例えば、2.00)
\V bashのリリース、バージョン+パッチレベル(例:2.00.0)
\w $ HOMEがチルダで省略されている現在の作業ディレクトリ
\W 現在の作業ディレクトリのベース名。$ HOMEはチルダで省略されています。
\! このコマンドの履歴番号
\# このコマンドのコマンド番号
\$ 実効UIDが0の場合は#、それ以外の場合は$
\nnn* 8進数nnnに対応する文字
\ バックスラッシュ
\[ ターミナル制御シーケンスをプロンプトに埋め込むために使用できる一連の非印字文字を開始する
\] 一連の非印字文字を終了する

たとえば、PS1を次のように設定することができます。

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

そしてそれは出力されます:

user @ machine:〜$

PROMPT_COMMANDを使ってgitブランチを表示する

gitリポジトリのフォルダの中にいる場合は、現在のブランチを表示するのが良いかもしれません。 ~/.bashrcまたは/etc/bashrcに次の/etc/bashrc追加してください(これが機能するにはgitが必要です):

function prompt_command {
    # Check if we are inside a git repository
    if git status > /dev/null 2>&1; then
        # Only get the name of the branch
        export GIT_STATUS=$(git status | grep 'On branch' | cut -b 10-)
    else
        export GIT_STATUS=""
    fi
}
# This function gets called every time PS1 is shown
PROMPT_COMMAND=prompt_command

PS1="\$GIT_STATUS \u@\h:\w\$ "

gitリポジトリ内のフォルダにある場合、次のように出力されます:

branch user @ machine:〜$

そして、もし私たちが普通のフォルダの中にいるなら、

user @ machine:〜$

ターミナルプロンプトでgitブランチ名を表示する

PS1変数に関数を持つことができます。単引用符で囲むか、特別な文字にエスケープを使用してください:

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}

PS1='\u@\h:\w$(gitPS1)$ '

次のようなプロンプトが表示されます。

user@Host:/path (master)$ 

ノート:

  • ~/.bashrcまたは/etc/bashrcまたは~/.bash_profileまたは~./profileファイル(OSに応じて)を変更して保存します。
  • ファイルを保存した後、 source ~/.bashrc (distro specific)を実行します。

ターミナルプロンプトで時間を表示する

timeNow(){
    echo "$(date +%r)"
}
PS1='[$(timeNow)] \u@\h:\w$ '

次のようなプロンプトが表示されます。

[05:34:37 PM] user@Host:/path$ 

ノート:

  • ~/.bashrcまたは/etc/bashrcまたは~/.bash_profileまたは~./profileファイル(OSに応じて)を変更して保存します。
  • ファイルを保存した後、 source ~/.bashrc (distro specific)を実行します。

ターミナルプロンプトのカラー化とカスタマイズ

これは著者が自分の個人PS1変数を設定する方法です:

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}
#Please use the below function if you are a mac user
gitPS1ForMac(){
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
timeNow(){
    echo "$(date +%r)"
}
if [ "$color_prompt" = yes ]; then
  if [ x$EUID = x0 ]; then
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;31m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;31m\]:/#\[\033[00m\] '
  else
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;32m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;32m\]:/$\[\033[00m\] '
  fi
else
    PS1='[$(timeNow)] \u@\h \w$(gitPS1) :/$ '
fi

そして、これは私のプロンプトの様子です: ここに画像の説明を入力

カラーリファレンス:

# Colors
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
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' # Yellow
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' # Yellow
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
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

ノート:

  • ~/.bashrcまたは/etc/bashrcまたは~/.bash_profileまたは~./profileファイル(OSに応じて)を変更して保存します。

  • root場合は、 /etc/bash.bashrc / /root/.bashrcファイルまたは/root/.bashrcファイルを編集する必要があります

  • ファイルを保存した後、 source ~/.bashrc (distro specific)を実行します。

  • 注: ~/.bashrc変更を保存した場合は、 ~/.bash_profile source ~/.bashrcを追加して、 PS1この変更がターミナルアプリケーションが起動するたびに記録されるようにしてください。

直前のコマンドの戻り状況と時刻を表示する

時には、以前のコマンドの戻り状況を示す視覚的なヒントが必要な場合もあります。次のスニペットは、PS1の先頭に置いています。

__stat()関数は、新しいPS1が生成されるたびに呼び出される必要があります。そうしないと、.bashrcまたは.bash_profileの最後のコマンドの戻り状態に固執することに注意してください。

# -ANSI-COLOR-CODES- #
Color_Off="\033[0m"
###-Regular-###
Red="\033[0;31m"
Green="\033[0;32m"
Yellow="\033[0;33m"
####-Bold-####

function __stat() {
    if [ $? -eq 0 ]; then
        echo -en "$Green ✔ $Color_Off "
    else
        echo -en "$Red ✘ $Color_Off "
    fi
}

PS1='$(__stat)'
PS1+="[\t] "
PS1+="\e[0;33m\u@\h\e[0m:\e[1;34m\w\e[0m \n$ "

export PS1

ここに画像の説明を入力



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow