Como isso costumava funcionar, e funciona bem para pessoas que estão executando o bash no Unices (eu testei no Debian aqui), acho que você encontrou um bug do Cygwin. O projeto Cygwin tem uma página sobre relatórios de erros do Cygwin . Eles têm um monte de informações úteis e passos por lá, tempo demais para resumir aqui.
Nesse meio tempo, eu suspeito que você possa contornar isso escapando do personagem. O echo
do Bash, quando recebe o sinal -e
, interpreta várias seqüências de escape:
c:\cygwin\bin\bash --login -c "echo -e '\xd1\x84'"
deve funcionar. Hexadecimal D1 84
é a codificação UTF-8 de ф. Se você tiver a ferramenta unicode
, ela informará a você, mas apenas fará o eco do caractere em od
ou xxd
:
$ echo -n 'ф' | od -t x1
0000000 d1 84
0000002
$ echo -n 'ф' | xxd -p
d184
O FAQ do Cygwin me diz que usa o UTF-8 por padrão, então isso deve funcionar. Mas é claro que você também pode usar outras codificações (acho que O Windows usa principalmente o UTF16le :
$ echo -n 'ф' | iconv -t utf16le | xxd -p
4404