Coloque o seguinte em um arquivo:
command1()
{
if [ "$BASH_COMMAND" != command2 ]
then
command_flag=1
fi
return 0
}
trap command1 debug
command2()
{
if [ "$command_flag" ]
then
echo ""
fi
command_flag=
}
PROMPT_COMMAND=command2
Eu aconselho você a alterar os nomes command1
, command2
e command_flag
para valores que você provavelmente não digita. Então source
desse arquivo.
(Ou apenas coloque o acima em seu .bashrc
.)
O comando trap command1 debug
faz com que a função command1
seja chamada
sempre que você digitar um comando. A função command1
define o sinalizador command_flag
para indicar que houve um comando.
(A função command1
não é chamada quando você aperta Enter .)
PROMPT_COMMAND=command2
faz com que a função command2
seja chamada
sempre que o shell estiver prestes a emitir um prompt PS1
.
A função command2
verifica o sinalizador command_flag
para ver se você digitou um comando ou apenas Enter .
Se você digitou um comando, command_flag
será definido
e command2
escreverá uma linha em branco na tela.
(Se você descobrir como criar um espaço vertical que seja uma fração de uma linha,
altere o comando echo
.)
Se você acabou de pressionar Enter , command_flag
não será definido.
Em seguida, limpe o sinalizador para que o próximo prompt seja feito corretamente.
Observe que a função command1
é chamada
quando o shell executa a função command2
;
portanto, command1
precisa torná-lo um caso especial
(não conta como um comando).