Você pode acessar a linha de comando recém-executada com o history
integrado. (Eu não tenho idéia porque history 1
imprime a linha de comando que acabou de ser executada, mas fc -nl -1
imprime o comando anterior, assim como fc -nl 0
.)
PROMPT_COMMAND='echo -en "3[38;5;2m"; history 1; echo -en "3[0m\n"'
Imprime um número antes do texto do comando. Aqui está uma versão que remove o número. (Pode estar incorreto se você ultrapassar as 99999 linhas do histórico, então eu não sei como o bash formata o número).
prompt_function () {
local prompt_history="$(history 1)"
prompt_history=${prompt_history:7}
echo -En $'3[38;5;2m'"$prompt_history"$'3[0m\n'
}
PROMPT_COMMAND=prompt_function
(Observe que echo -en ..."$prompt_history"...
expandiria as barras invertidas na linha de comando, portanto, uso echo -E
e deixo a expansão do shell gerar os caracteres de controle com $''
.)