Mostra o estado do último comando no prompt bash

Se um comando falhar, na maioria das vezes, você receberá uma mensagem de erro. Mais frequentemente, ele também sairá com um código de status diferente de zero, que pode ser inspecionado com $?.

O verdadeiro problema é que alguns aplicativos irão falhar silenciosamente (devido à preguiça do autor ou configuração de registro estranha).

Eu criei um pequeno ajudante útil para o Bash (que também pode ser adotado para trabalhar com ZSH) que mostra uma marca se o último comando foi bem-sucedido ou não:


#!/usr/bin/env bash
# helper functions for Bash - easier coloring than using escape sequences
function Color() {
echo
"\[$(tput setaf $1)\]"
}
function ResetColor() {
echo
"\[$(tput sgr0)\]"
}


# now you can add it to your prompt like this:
# function which configures the prompet...
function BashPrompt() {
local last_status=$?
local reset=$(ResetColor)

local failure="✘"
local success="✔"

if [[ "$last_status" != "0" ]]; then
last_status
="$(Color 5)$failure$reset"
else
last_status
="$(Color 2)$success$reset"
fi

# ...some other things like hostname, current git branch etc

echo
"$last_status $current_branch $hostname :"
}

# ...and the hook which updates the prompt whenever we run a command
PROMPT_COMMAND
='PS1=$(BashPrompt)'

Veja como fica na minha máquina:

Cenário