!
現在正しいプロンプトがあります。扱いにくい次のように:
export RPS1="%B%F{red}!%f%b"
私が使うときマルチプレクサそして、コマンド履歴は(残念ながら)ウィンドウ全体で同期されません。この数字は私にとってほとんど役に立たない。
RPS1
設定?
して$?
表示しようとしています戻りコード/エラーレベル成功せずにコマンドを受け取りました。
次のように設定しなければならなかったことが記憶されます。
setopt promptbang
!
補間(解釈、拡張)を実行します。
前のコマンドの結果がエラー番号であることを示すプロンプトをコマンドラインの右側に実装する方法。
現在のプロンプトのサンプルスクリーンショットには>
、、as 、およびが含まれています。>>
!
$PS1
$PS2
$RPS1
答え1
前のコマンドの戻り状態を表示するには、次のものを使用できます。早く脱出 %?
。
RPS1='%B%F{red}%?%f%b'
終了状態に応じて色を切り替えることもできます。
RPS1='%B%(?.%F{green}.%F{red})%?%f%b'
あるいは、コマンドがエラーを返した場合は何も表示されません。
RPS1='%(?..%?)'
%?
計算結果がある場合、出力は緑色で0
、そうでなければ赤色です。
任意のパラメータ(たとえば)を置き換えるには、$?
このオプションを有効にする必要がありますPROMPT_SUBST
。
setopt promptsubst
この場合、宣言時にパラメータが変更されるのを防ぐために、パラメータを完全に引用する必要があります。たとえば、一重引用符を使用するか、$
内部\
二重引用符を使用して引用します。
RPS1='$?'
RPS1="\$?'
注:RPS1
これを行うには、エクスポート(または他のシェル構成パラメータ)は必要ありません。
答え2
${?##0}
ゼロ以外のPS1
終了コードを表示する場所に配置するだけです。前のコマンドの終了コードが0の場合は空の文字列に切り捨てられます(空の0
文字列を取得するには先行ゼロをすべて削除します)。
user@host:~
$ bash
user@host:~
$ exit 4
logout
user@host:~ 4
$
PS1
私の関連セクションには\e[31m${?##0}\n\[\e[$(((($?>0))*31))m\]
。前のコマンドにゼロ以外の終了コードがある場合は、赤で表示します。