プロンプトエラーコード

プロンプトエラーコード

!現在正しいプロンプトがあります。次のように:

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\]。前のコマンドにゼロ以外の終了コードがある場合は、赤で表示します。

関連情報