O [m
é provavelmente o final de um código de escape ANSI \e[m
(= redefinido para cores e atributos normais, formato curto) com o caractere ESC inicial ( \e
) removido.
Meu palpite seria que seu grep
esteja colorindo sequências de caracteres correspondentes quando executado interativamente, e a detecção de interatividade está falhando quando executada como parte de uma função de shell cuja saída se torna parte do prompt.
O sinal de porcentagem na saída aciona o processamento especial em prompts e, se %\e
não significar nada, ele será simplesmente excluído.
Tente definir sua função bat
assim:
bat () { acpi | grep --color=never -oP "(\d+)%" }