2010-12-16 8 views
32

Zshには、%?エスケープシーケンスを使用して、前のコマンドの戻りコード/終了コードをプロンプトに表示する機能が含まれています。終了コードが0前のコマンド終了コードを表示するときにzshのプロンプトをカスタマイズする

私の場合であるとき

[email protected] ~ % 

:終了コードが0と異なるとき

[email protected] ~ [%?] % 

:私は次のプロンプトを持っていると思いますが

%?を単独で使用すると、%?が0であっても表示されます。 さらに、角括弧が必要ですが、終了時コードは0ではありません。

これを行う最も簡単な方法は何ですか?

+0

私のプロンプトに大きく追加されました。私は現在、robbyrussellテーマでカスタマイズされています:PROMPT = '$ {ret_status}%{$ fg [シアン]%}%n @%m:%4〜%{$ reset_color%} $(git_prompt_info)' –

答えて

48

を使用すると、終了コードを表示させたいPS1内の位置にこれを追加します。

%(?..[%?]) 

それは条件式です。最初のドットの前の式が真の場合、2つのドットの間の部分(この場合は何も出力されません)が出力されます。 2番目のドットの後の部分は、falseの場合は出力されます。例えば

また
PS1='%n%m %~ %(?..[%?])%# ' 
10

、次のことができます。

setopt PRINT_EXIT_VALUE 

常に前回の戻り値を示す改行を印刷します。

通常の使用ではこれは好まれませんが、シェルスクリプトのデバッグにはよく適しています。

関連する問題