Como desenvolvedores que passam a maior parte do tempo programando em OSX e Linux, estávamos curiosos sobre como seria uma configuração de linha de comando moderna no Windows.
Uma pesquisa para desenvolvedores do StackOverflow nos lembrou que há mais desenvolvedores usando o Windows do que qualquer outro SO. Por isso, tínhamos curiosidade em saber se as ferramentas disponíveis eram iguais às que estávamos acostumados a usar em *nix Land.
Depois de passar um tempo avaliando o cenário das ferramentas de CLI do Windows, escolhemos um conjunto de ferramentas que achamos que vai nos levar em 95% do caminho.
No fim das contas, chegamos a uma combinação de:
- PowerShell
- ConEmu
- PSReadLine
- PSGet
- Com chocolate
- Babun (opcional)
Veja abaixo mais algumas observações sobre o que essas diferentes máquinas oferecem.
PowerShell (shell)
- Significativamente mais próximo de um "shell" real do que o cmd.exe, oferecendo um ambiente de script avançado para automação de tarefas. É justo compará-lo a Bash ou zsh.
- Preenchimento automático de diretórios e nomes de arquivos
- Preenchimento automático de nomes de aplicativos
- Tem aliases e comandos integrados, chamados de iframes, por exemplo,
Select-String
é comogrep
,Invoke-Elevated
é comosudo
,Sort-Object
é comosort
eGet-Process
lista todos os processos ativos. Ao mudar de outro shell para o PS, oSet-Alias
permite mapear aliases que você já conhece para os equivalentes do Windows. Por exemplo:Set-Alias server python -m http.server 8000
inicia um servidor Python quando o aliasserver
é usado. - Os aliases podem ser mantidos em um perfil do PowerShell
- Compatível com piping, como o Unix. Ao contrário do Unix, ele canaliza objetos em vez de streams de texto. Isso exige se acostumar, mas evita revisar quando você quer transferir uma propriedade.
- Oferece suporte a módulos. O PSGet é um gerenciador de pacotes do PowerShell que permite estendê-lo com facilidade.
- Outra opção é usar o Posh-Git, um script do PowerShell para git para receber preenchimento de tabulação contextual.
Se você quiser saber mais, aqui está uma resposta para o motivo pelo qual o MS criou o PowerShell com um arquiteto líder.
PSReadLine (auxiliares de edição do console)
- Melhora significativamente a experiência de edição no console
- Destaque de sintaxe sempre que você começar a digitar comandos. Indica claramente erros de sintaxe com um caractere ">" vermelho.
- Vinculações de teclas altamente personalizáveis
- Preenchimento automático em estilo Bash
- Pesquisa de histórico interativo bash/zsh (Ctrl + R). Travessia avançada do histórico de comandos também. Visualize facilmente os comandos anteriores de várias linhas usando as teclas de seta em vez de apenas a última linha do comando.
- Suporte adequado para copiar/colar/recortar (Ctrl+C/X/V deve funcionar normalmente)
- Bom suporte para desfazer/refazer ações
- O histórico é salvo automaticamente
Como alternativa, você pode usar o Clink, que tem um conjunto semelhante de recursos, mas não foi desenvolvido estritamente para o PowerShell.
ConEmu (host de console)
- Um emulador de console avançado em que você pode executar o shell que preferir.
- Oferece suporte à abertura de vários terminais em guias diferentes. Torna trivial iniciar terminais como usuários diferentes.
- Extremamente personalizável: tudo pode ser alterado, desde atalhos até seleção de texto e cores da barra de status.
- Oferece suporte à exibição em tela dividida
- Apps de GUI simples podem ser executados em guias
- Suporte para listas de salto do Windows 7 e versões mais recentes
- Oferece suporte ao redimensionamento uniforme de janelas
- Suavização de fontes do Windows
- As guias iniciais podem ser totalmente personalizadas para serem iniciadas em um diretório específico
- Copiar/colar inteligente
Algumas pessoas ainda gostam de usar o Console2, e Scott Hanselman tem uma postagem no blog sobre o assunto.
Cmder
Vale a pena passar uma observação é o Cmder, um pacote de emulação de console que combina ConEmu, Clink e msysgit, que oferece assistentes Git. O Cmder basicamente oferece uma experiência mais bonita para o ConEmu por padrão pelo esquema de cores Monokai.
O Cmder também inclui alguns outros pequenos benefícios, como a integração com apps de GUI, como o Sublime Text.
Chocolatey (gerenciador de pacotes)
- Basicamente, o homebrew para Windows, permitindo que você abra seus aplicativos favoritos do Windows de forma conveniente. No momento, há aproximadamente 3 mil pacotes disponíveis que podem ser atualizados usando diretamente o Chocolatey.
- É diferente do Nuget. O NuGet é destinado a bibliotecas de desenvolvimento. O Chocolatey é um gerenciador de pacotes de máquinas binárias baseado na infraestrutura do NuGet.
- Oferece builds efetivamente silenciosos
Talvez você também esteja interessado em saber mais sobre o OneGet, o gerenciador de pacotes da Microsoft, que funcionará com o Chocolatey no Windows 10.
Babun (Cygwin pré-configurado)
- Cygwin (o ambiente do Linux para Windows), menos algumas das peculiaridades historicamente conhecidas. A configuração geral é muito mais simples usando o instalador do Babun. Se você tiver experiência particular com o Unix e preferir evitar aprender o PowerShell, vale a pena considerar o cygwin/Babun.
- Inclui um gerenciador de pacotes chamado
pact
(um pouco parecido combrew
) semelhante aapt-get
. Isso é importante, porque atualmente você precisa executar novamente o instalador do Cygwin ao adicionar pacotes em vez de apenas usar o pact. - Vim pré-instalado e pré-configurado
- Suporte integrado a oh-my-zsh
- Atualizações automáticas