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 .