Até recentemente, obter um shell Unix adequado no Windows significava que eu precisava encontrar uma solução alternativa. O Windows não vem com os melhores comandos que estou acostumado a encontrar no Linux, como grep, find, ls e muito mais. Sempre que quis trabalhar com essas ferramentas, tive que executar um ambiente Linux inteiro para elas. WSL acabou se tornando minha principal resposta para esse problema, mas ainda exigia que eu usasse um sistema operacional diferente, mesmo que eu quisesse acessar apenas alguns comandos.
Há anos que tenho uma guia WSL fixada permanentemente em meu terminal Windows e clico principalmente no ambiente Linux para obter algo simples, como executar grep em um arquivo de log. Isso é muita sobrecarga para uma tarefa tão trivial, então a mudança de contexto parece um exagero. O Microsoft Coreutils para Windows mudou isso. É a versão original das ferramentas diárias do Unix, para as quais o Windows nunca foi um bom substituto. Depois de algumas semanas usando o Coreutils, meu terminal do Windows finalmente parece estar no mesmo nível do que estou acostumado no Linux e no macOS.
O que o Coreutils faz no seu sistema Windows
Uma pequena instalação oferece dezenas de comandos do Linux
Quase todas as distribuições Linux vêm com a instalação de GNU Coreutils e Findutils, que muitas pessoas chamam de “comandos Linux” – cat, xargs, touch e todos os outros itens comuns que você esperaria em um terminal Linux. Na verdade, esses pacotes são mantidos separadamente do Linux e podem ser encontrados na maioria dos sistemas do tipo Unix, incluindo BSD e macOS. Eles estão disponíveis gratuitamente para inclusão em qualquer sistema operacional, e a Microsoft finalmente aderiu.
Instalar o Coreutils para Windows é muito fácil, pois requer apenas um único comando WinGet. Abrir o PowerShell e executar o seguinte comando instalará o pacote:
winget install Microsoft.Coreutils
Após reiniciar o terminal (ou abrir um novo), os novos comandos ficam disponíveis para uso. O que este pacote realmente inclui é a parte mais interessante. O pacote da Microsoft inclui uutils, uma reimplementação do GNU coreutils Rust, junto com findutils para find e xargs, e um grep compatível com GNU recém-desenvolvido. Como esta implementação é originalmente baseada na mesma usada pelas distribuições Linux, os comandos funcionam como você esperaria que funcionassem em uma máquina Linux.
Existem algumas omissões gritantes no pacote, o que faz sentido, uma vez que existem diferenças significativas entre o Windows e o Linux. Comandos como chmod, chown e chroot estão faltando porque as permissões de arquivo do Windows não funcionam da maneira pretendida por essas ferramentas. Uma coisa que inicialmente me fez pensar foram os scripts em lote mais antigos que dependem de sintaxe primitiva para comandos como classificar e localizar. Mas depois de alguns testes, as novas versões do Unix não entram em conflito com os comandos do Windows. Ainda posso usar os comandos originais do Windows com as versões Unix.
Onde isso realmente muda a forma como eu trabalho
Chega de guias WSL para executar apenas uma linha
A diferença entre esses comandos está inicialmente disponível pequenas obras permanentes Eu uso a guia no WSL. Coisas como pesquisar um arquivo de log, passar o resultado por wc, executar uma pesquisa no diretório do projeto para procurar um arquivo específico. Não preciso mais abrir uma sessão WSL separada. Posso executar comandos no terminal em que já estou trabalhando, em vez de alternar entre guias o tempo todo.
No entanto, essa mudança pode compensar mais. Muitos dos scripts que escrevo adotam o comportamento GNU e agora podem ser executados em uma máquina Windows sem modificação. Esta é a primeira vez que consigo escrever um script que abrange tanto o Windows quanto o Linux sem ter que reescrever sinalizadores ou levar em conta pequenas diferenças na ordem de classificação. Anteriormente, eu tinha que traduzir manualmente a maioria das linhas do script se quisesse que fossem portáveis para o Windows.
A outra grande vantagem é o desempenho. O WSL precisa rotear o acesso ao sistema de arquivos através da camada de tradução do kernel, e essa sobrecarga é perceptível para comandos como grep e find quando você está trabalhando com um diretório de alguns milhares ou mais de arquivos. A execução desses mesmos comandos ignora essa camada de tradução, e a diferença é óbvia quando executo os comandos recursivos em diretórios grandes.
Coreutils me permite pular o WSL para coisas simples
Mas ainda não substitui completamente o WSL
Eu nunca precisei tecnicamente do Coreutils, mas com certeza é legal. WSL já fornece aos usuários um kernel Linux completo e acesso a todos os softwares Linux que desejarem. Coreutils realmente não trouxe nada de novo que já não estivesse disponível no WSL. Em muitos aspectos, o Coreutils é apenas uma versão menor e mais limitada do que o WSL já fazia.
Coreutils certamente não pode substituir o WSL para cargas de trabalho pesadas do Linux. Ainda preciso do WSL para executar um ambiente de desenvolvimento completo que depende de vários contêineres e serviços. Coreutils existe para coisas fáceis, como um grep rápido ou um script compatível com GNU. É melhor do que executar um ambiente separado e sair do terminal atual quando preciso apenas de um breve acesso a um comando que normalmente considero garantido em sistemas Linux.
Meu terminal finalmente parece completo
Dividir meu terminal em duas guias, ambas capazes de executar um conjunto específico de comandos sem sobreposição, nunca foi um fluxo de trabalho ideal. Coreutils remove o imposto WSL que eu pagava toda vez que queria executar um grep rápido ou encontrar um arquivo perdido, porque não preciso mais parar e decidir qual guia realmente contém a ferramenta que preciso. Agora meu terminal parece um ambiente unificado que combina o melhor dos dois mundos.








