Essas estranhas sequências de escape são comandos que mudam de cor.
O código de conclusão executa o seguinte comando para listar os comandos disponíveis:
git help -a|egrep '^ [a-zA-Z0-9]'
A saída de git help -a
é assim:
adicione grep remoto adicionar - objeto de hash interativo ext remoto Sou ajuda remoto-fd … fsck-objects receive-pack árvore de gravação gc reflog get-tar-commit-id relink
Se o grep estiver configurado para imprimir a parte correspondente da linha em cores, os nomes dos comandos que estão na primeira coluna terão sua primeira letra destacada:
$ git help -a|egrep --color=always '^ [a-zA-Z0-9]' | cat -v | head -n 1
^[[01;31m^[[K a^[[m^[[Kdd grep remote
Quando o bash vê essa saída, ele acha que ^[[01;31m^[[K
, a^[[m^[[Kdd
, grep
e remote
são comandos possíveis. O primeiro não aparece, os dois últimos estão corretos, o segundo é mutilado.
Você precisa configurar grep para não use cores quando sua saída não estiver em um terminal. Se você aliasse egrep
a egrep --color=always
(e idem para grep
e fgrep
), altere para --color=auto
. Se você tiver definido a variável GREP_OPTIONS
em algum lugar, altere --color=always
para --color=auto
.