bashでPROMPT_COMMANDを利用して右プロンプトを出力させる
Pocket

普段はzshを使っているのだが、先日ローカルのbashrcを利用してssh接続する方法を知ったので、bashrcについても多少手を入れてみることにした。
で、zshでは右プロンプトにタイムスタンプを表示させたりしているのだが、今回はこれをbashでやる方法についてを残しておく。

zshでは右プロンプトは「RPROMPT」という設定項目で右プロンプトを指定できるのだけど、残念ながらbashにはそういったものは存在していない。
なので、PS1よりも先に実行されて、多少いろいろと自由がきくPROMPT_COMMANDにfunctionを指定することで、擬似的に右プロンプトを出力させることにする。
以下、設定例。

Sponsored Links
# PS1
export PS1="\u@\h [\w]\$ "

# PROMPT_COMMANDで指定するfunction
function __command_rprompt() {
    # 右プロンプトに表示させる内容。今回はタイムスタンプ。
    local rprompt=$(date "+%Y/%m/%d %H:%M:%S")

    # 右プロンプトを表示するために必要となる幅
    local num=$(($COLUMNS - ${#rprompt} - 2))

    # 右プロンプトの表示(\rがないとうまく動作しないので注意)
    printf "%${num}s$rprompt\r" ''
}

PROMPT_COMMAND=__command_rprompt

 

残念ながらPS1と同じような指定方法だとカラーコードを認識してくれないので、色をつけたい場合にはちょっと手間が必要になる(printfで呼び出す際に記述する)ので、zshと同じ感覚で設定はできない。
とはいえ、上のような形でbashrcを設定してあげれば、一応はbashでも右プロンプトを利用できる。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*