curto: é possível, mas complexo como .inputrc
de ligações.
long: Como sugerido em um comentário, você poderia fazer algo assim em seu prompt bash e ligações de linha de leitura.
Salvar / restaurar o cursor seria ineficaz, já que o único ponto em que você seria capaz de limpar com segurança o restante da tela seria pressionar Enter para concluir a seleção.
Depois de passar o controle para accept-line
, é tarde demais para limpar o restante da tela. É possível (mas complexo) definir uma série de "bindings" reais e ad hoc para tornar a readline mais de uma operação. Veja por exemplo
Mas essa abordagem limita o envio de caracteres para bash e a emissão de comandos para readline. Nenhum dos comandos readline faz
printf '3[J'
para limpar o restante da tela. O mais próximo seria o clear-screen
do readline ( não o que você quer). Sua ligação teria que fazer algo como
-
beginning-of-line
- insira "
printf '3[J';
" -
end-of-line
-
accept-line
O end-of-line
funcionaria em torno de uma peculiaridade de readline. Ele permite que você pressione Enter em qualquer lugar na linha. Se o seu cursor estivesse no meio da linha, você teria apenas um fragmento de sua entrada deixada visível (embora o bash obtenha a string inteira).