2010-12-16 10 views
32

Zsh incluye la capacidad de mostrar el código de retorno/código de salida del comando anterior en el indicador utilizando la secuencia de escape %?.Personalizar el indicador de zsh al mostrar el código de salida del comando anterior

Sin embargo, me gustaría tener el siguiente mensaje:

[email protected] ~ [%?] % 

cuando el código de salida es diferente de 0 y:

[email protected] ~ % 

al código de salida es 0.

Si yo use %? solo, siempre se muestra, incluso si %? es 0. Además, quiero los corchetes, pero solo cuando la salida código no 0.

¿Cuál es la forma más sencilla de hacer esto?

+0

Excelente adición a mi mensaje. Lo que tengo actualmente está personalizado en el tema de robbyrussell: PROMPT = '$ {ret_status}% {$ fg [cyan]%}% n @% m:% 4 ~% {$ reset_color%} $ (git_prompt_info)' –

Respuesta

48

Añadir esta en la posición en PS1 donde desea que aparezca el código de salida:

%(?..[%?]) 

Es una expresión condicional. La parte entre los dos puntos (nada en este caso) se muestra si la expresión anterior al primer punto es verdadera. La parte después del segundo punto sale si es falsa.

Por ejemplo:

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

Alternativamente, se puede:

setopt PRINT_EXIT_VALUE 

para imprimir siempre una nueva línea que muestra el valor de retorno anterior.

No lo prefiero para uso ordinario, pero a menudo es bueno para depurar scripts de shell.

Cuestiones relacionadas