Use a função redraw-current-line
de bind
builtin. Primeiro verifique se já está vinculado, talvez:
bind -q redraw-current-line
Eu nunca o vi ligado por padrão, então você provavelmente precisará vinculá-lo. Escolha uma combinação de teclas, digamos Ctrl + Y . Verifique se já foi tirado:
bind -p | grep -F '"\C-y'
Saída vazia significa que a combinação não é usada. Se sim, vamos ligar redraw-current-line
a ele:
bind "\C-y":redraw-current-line
Agora, sempre que um processo de segundo plano bagunça sua linha de comando, pressione Ctrl + Y . Em seguida, seu prompt será redesenhado junto com qualquer comando que você tenha digitado parcialmente (se houver), para que você possa continuar como se nada tivesse acontecido.
Para tornar a ligação permanente, você pode adicionar o comando acima ao seu ~/.bashrc
, mas não o faça. A abordagem correta é modificar ~/.inputrc
(para usuário) ou /etc/inputrc
(todo o sistema). Desta forma, qualquer programa que use readline(3)
library irá obedecer. A linha a ser adicionada a qualquer arquivo é assim:
"\C-y":redraw-current-line
Mas se você criar ~/.inputrc
novamente, verifique se a primeira linha diz $include /etc/inputrc
. Isso porque, até esse momento, readline
usou /etc/inputrc
e talvez seu fluxo de trabalho dependa do conteúdo desse arquivo. De agora em diante, a biblioteca usará seu ~/.inputrc
; a linha $include /etc/inputrc
faz com que ele analise também o arquivo do sistema.
Para mais informações, consulte help bind
e man 3 readline
.