GIT shell emulando TTY com Winpty

Ao baixar e instalar o GIT no Windows usando os exceutáveis que estão disponíveis no https://git-scm.com/ você instala o GIT Shell, o utilitário de linha de comando que fornece um emulador dos terminais usados em sistemas Unix / Linux.

Este emulador é excelente, no entanto, em alguns casos específicos apresenta uma deficiência que consiste no não funcionamento das setas de navegação.

Neste post iremos falar um pouco sobre emulação de terminal no GIT Bash e mostrar como utilziar o comando winpty para contornar a limitação de que falamos acima. 

Durante a instalação do GIT no Windows em dado momento o pograma de setup exibirá uma tela semelhante a ilustrada abaixo:

Nesta tela você poderá escolher se deseja utilizar a emulação MinTTY, que aprsenta uma cli e comandos mais semelhantes aos encontrados no Linux. Ou se utilizará o console padrão do Windows, o famoso prompt de comando.

Se você, como eu, prefere utilzar o emulador MinTTY no lugar do prompt de comando do Windows, e com isso ter disponíveis os mesmos comandos do Linux (bom pelo menos a maioria deles).  Poderá, em alguns casos bem específicos, ter alguma dificuldade quando for executar alguns comandos que necessitem da emulação totalmente compatível com os terminais TTY.

Um exemplo disso é o comado que executa a criação de um aplicativo Nuxt.js. utilizando o npm. 

Assim, por exemplo, quando você executar no GIT bash o comando:

npm init nuxt-app my-app

Verá que não consegue utilizar as setas do teclado para navegar entre as opções, nem a tecla de espaço para selecioná-las.

Se você estivesse utilizando um programa de terminal totalmente compatível, como por exemplo o Power Shell ou CMDER, você não teria este problema.

Contudo, não precisa deixar de usar o nosso amado GIT Bash, tudo que você vai precisar é aprender este artifício que descrevo abaixo e utilziar o winpty para que o comando acima funcione da maneira esperada no GIT Bash. 

Assim, substitua o comando npm acima pelo seguinte:

winpty npm.cmd init nuxt-app my-app

Comparando os dois comandos podemos notar que no segundo foi inserido no início o winpty e, além disso, o comando npm recebeu em seu final a extensão .cmd, o restante do comando ficou inalterado.

Segundo seu criador, winpty é um pacote de software do Windows que fornece uma interface semelhante a um pty-master Unix para comunicação com programas de console do Windows.
Veja a referência no final do post.

O acréscimo da extensão .cmd no final do comando npm, foi necessário devido a forma como o winpty faz para reconhecer os arquivos executáveis. Em alguns casos pode não ser necessário, assim caso surja algum problema experimente: tente sem a extensão; ou com a extensão .cmd e finalmente com a extensão .exe




Observe agora que utilzando o winpty seu progrma (em nosso exemplo o npm) será executado em um terminal totalmente compativel com TTY. O primeiro sinal disto são as cores de texto diferentes onde antes era tudo preto e branco.

Além disso, agora você pode usar as setas para cima e para baixo e navegar nas opções. Também pode utilizar a tecla de espaço para selecionar o que deseja.

Ficamos por aqui neste post, era isso que queria mostrar para vocês. Espero que seja útil e até o próximo. 

Se você gostou, pode me ajudar:

Visite nossas Redes
Twitter
Instagram
Git Hub

Assine nosso Canal no YouTube
https://www.youtube.com/channel/UCwItQMRW3WszPpyWyPiRrrA

Referências
https://github.com/rprichard/winpty
https://git-scm.com/