Se estiver usando bash
, o seguinte deve fazer o seguinte:
TOLASTLINE=$(tput cup "$LINES")
PS1="\[$TOLASTLINE\]$PS1"
Ou (menos eficiente, pois executa um comando tput
antes de cada prompt, mas funciona depois que a janela do terminal foi redimensionada):
PS1='\[$(tput cup "$LINES")\]'$PS1
Para evitar que tput
altere o código de saída, você pode salvá-lo e redefini-lo explicitamente:
PS1='\[$(retval=$?;tput cup "$LINES";exit $retval)\]'$PS1
Observe que a variável retval
é local; isso não afeta nenhuma variável retval
que você possa ter definido no shell.
Como a maioria dos terminais cup
capacity é o mesmo \e[y;xH
, você também pode codificá-lo:
PS1='\[\e[$LINES;1H\]'$PS1
Se você quiser que seja seguro contra a reinicialização posterior do PS1, você também pode utilizar a variável PROMPT_COMMAND
. Se definido, ele é executado como o comando antes de ser emitido o prompt. Então, o efeito também pode ser alcançado por
PROMPT_COMMAND='(retval=$?;tput cup "$LINES";exit $retval)'
É claro que, embora a redefinição de PS1
não afete isso, algum outro software também pode alterar PROMPT_COMMAND
.