Eu uso Linux e Mac, e ensinarei algumas coisas da linha de comando em breve.
O que posso instalar no Windows para fornecer uma janela de terminal mais semelhante a um shell básico do Mac / Linux Bash?
Gostaria de poder definir .bash_aliases também, se possível.
putty
nos conectar a um servidor linux real. no Windows, eu sempre relutava e tentava usarcygwin
, relutante por causa da minha experiência desajeitada de instalação. Mas, pessoalmente, achei mais conveniente usar do que msys e mais rápido que um vm. uma vez instalado, o cygwin se torna portátil, basta copiar o diretório, basta criar um novo nome de usuário em cada máquina / usuário com base no nome de usuário do Windows (por padrão, pelo menos). Mas lembre-se de que, como o cygwin / msys pode ser visto como uma "distribuição" personalizada, algumas opções de comando [opcional] podem estar ausentes. testá-los.Respostas:
Você pode instalar o Cygwin ou MSYS / MinGW ou instalar uma distribuição completa do Linux em uma máquina virtual (por exemplo, usando o VirtualBox ).
fonte
Agora você pode instalar o Windows Subsystem para Linux, que permite executar o shell e as ferramentas nativas do Linux no Windows . Isso permite que você execute o Bash shell diretamente no Windows e é baseado no Ubuntu.
Isso foi introduzido no Windows 10 com a Atualização de Aniversário (2016) e não está ativado por padrão. Para habilitar o novo recurso em uma máquina Windows 10 Anniversary Update, faça o seguinte:
Um pouco de história, em 2015, o projeto Astoria foi iniciado para trazer aplicativos Android para o Windows e eles criaram um subsistema Linux chamado Windows Subsystem for Linux (WSL) para esse fim. Eventualmente, o projeto Astoria foi descartado por prejudicar sua estratégia de UWP (Universal Windows Platform), mas algumas partes foram mantidas e formam a base do bash para Windows. Durante o curso, a Microsoft colaborou com a Canonical (criadores do Ubuntu Linux) para fornecer a eles uma imagem nativa com todas as ferramentas / binários suportados.
Mais informações disponíveis aqui,
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/
https://blogs.windows.com / buildingapps / 2016/03/30 / run-bash-on-ubuntu-on-windows /
https://sec.ch9.ms/sessions/build/2016/P488.mp4 (vídeo)
fonte
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"
E instalar qualquer um dos seguintesAqui está uma lista das opções disponíveis a partir de 2018-05 com algumas atualizações sobre a WSL durante 2019-01, juntamente com um pouco de detalhes sobre cada uma.
Opções que se destacam
Cygwin e Babun
Cygwin fornece o seguinte:
O Cygwin visa facilitar a portabilidade de aplicativos Linux no Windows. Se algum programa C foi projetado para Unix e espera usar recursos como pipes, acesso a arquivos e diretórios no estilo Unix etc., você pode compilá-lo para o Cygwin e o Cygwin atuará como uma camada de compatibilidade entre o código e o SO estrangeiro (Windows) . Isso permite que o mesmo programa C funcione no Linux e no Windows com pouca ou nenhuma modificação. Uma enorme lista de programas Linux foi cumprida e pode ser executada quando você instala o Cygwin. No entanto, você, usuário desses programas, provavelmente precisará estar familiarizado com o Unix. Por exemplo, você pode precisar passar argumentos como em
/cygdrive/c/autoexec.bat
vez dec:\autoexec.bat
e estar pronto para lidar com a saída com terminação de linha Unix (\n
) em vez de terminação de linha do Windows (\r\n
).A coleção de todos os programas Cygwin inclui um repositório e, embora o Cygwin não possua um gerenciador de pacotes Linux tradicional, você pode adicionar, remover e atualizar programas desse repositório a qualquer momento, de uma maneira muito contra-intuitiva (você executa o setup.exe do Cygwin em a qualquer momento após a instalação)
Babun é Cygwin com um gerenciador de pacotes completo (pacto), oh-my-zsh, por seu shell, git, atualizações automáticas e uma arquitetura orientada a plug-ins. Embora o shell padrão seja zsh, você pode facilmente mudar para o bash. Parece uma boa atualização do Cygwin de baunilha, se você não se importa com o peso extra.
Mingw-w64
Mingw-w64 fornece o seguinte:
O MinGW é principalmente uma distribuição de software e uma plataforma de construção para Windows. Em particular, é uma porta do Windows das ferramentas do compilador GNU, como GCC, make, bash e assim por diante. Inclui uma quantidade razoável de ferramentas GNU e uma camada mínima de compatibilidade com Unix.
A principal diferença entre o Mingw-w64 e o Cygwin está nas prioridades: O Cygwin visa fornecer uma camada de compatibilidade POSIX completa, incluindo uma implementação completa de todas as principais chamadas e bibliotecas do sistema Unix; o desempenho é secundário à compatibilidade. O MinGW visa o desempenho, portanto, não fornecerá certas APIs POSIX que não podem ser implementadas com facilidade e / ou rapidez suficiente no Windows. Também o principal objetivo do MinGW são os desenvolvedores de S / W. No entanto, usuários casuais também podem desfrutar de seu shell e os utilitários incluídos de uso geral.
MSYS2 e Git para Windows
O MSYS2 fornece o seguinte:
O MSYS2 também é principalmente uma distribuição de software e uma plataforma de construção para Windows como o MinGW, mas combina o modo do Cygwin e o modo do MinGW. Você pode usar o MSYS2 para criar "programas MinGW" ou "programas MSYS2" . O link posterior para a camada de compatibilidade do MSYS2 (msys-2.dll), que segue de perto o desenvolvimento da camada de compatibilidade do Cygwin com algumas adições / modificações . Os repositórios dos 2 projetos não são completamente relacionados. Portanto, embora o MSYS2 e o Cygwin forneçam,
grep.exe
eles podem ter uma versão completamente diferente.O Git para Windows é apenas o MSYS2 com o git instalado ou, pelo menos, fortemente baseado no MSYS2 . Ele fornece o mesmo shell (bash), terminal (Mintty) e gerenciador de pacotes (pacman). Parece ser a maneira mais popular de executar o Git dominante no Windows e, junto com ele, você obtém um ambiente Unix agradável.
Subsistema Windows para Linux (WSL)
A WSL resolve o mesmo problema usando um método completamente diferente. Você executa exatamente o mesmo código que executaria em um sistema Linux na WSL, que intercepta as chamadas do kernel e as converte em chamadas do kernel do Windows (é o oposto do Wine). Claro que a tradução não pode ser perfeita, mas a Microsoft retirou o aviso beta . Como a WSL não estava disponível no Windows Server antes de 2018, não analisei muito isso. De qualquer forma, você obtém um bom shell bash com a maioria das vantagens de CLI que você esperaria encontrar em uma instalação padrão do Ubuntu. A Microsoft afirma oficialmente que "o WSL não tem como objetivo oferecer suporte a desktops ou aplicativos da GUI"no entanto, existem instruções não oficiais sobre como fazê-lo. Parece que, no momento (no início de 2018), as principais desvantagens do WSL são as seguintes: a) tornar a tela e o acesso ao disco muito lentos b) você não deve editar arquivos WSL (Linux) no Windows c) só roda em Windows de 64 bits. Aqui está uma comparação antiga, mas agradável, com o cygwin (observe que Rich Turner é membro da equipe da WSL e ele publicou muitas informações úteis sobre a WSL)
Terreno comum
Exceto pela WSL, a maioria das ferramentas acima compartilham muita tecnologia comum (bibliotecas, executáveis, conceitos). Por exemplo, o shell bash que acompanha o MinGW depende do msys-2.dll, que é um fork do cygwin.dll. Então, sim, há muito espaço para confusão :-)
Mais opções
O Cmder fornece apenas um bom terminal e um shell semelhante ao bash para Windows. Seu principal componente é o Conemu (o terminal). Além disso, ele adiciona o Clink, que fornece edição de linha de comando no estilo Bash , um layout de prompt personalizado e o esquema de cores Monokai. É altamente (ou talvez totalmente) compatível com os programas de console nativos do Windows.
O Scoop fornece um gerenciador de pacotes de linha de comando para muitos programas conhecidos entre plataformas, incluindo muitas ferramentas GNU. Ele baixa pacotes pré-compilados. Ele não fornece um shell nem um terminal, mas é executado no cmd.exe do Windows (com todas as suas limitações, mas também com sua total compatibilidade com os programas de console nativos do Windows). Ele também não inclui suíte de compiladores (mas é claro que compiladores e ferramentas de desenvolvimento são pacotes típicos que você pode instalar com o scoop). Muitos dos programas que o Scoop instala vêm diretamente do projeto MinGW / MSYS ou foram criados usando suas ferramentas.
Ainda mais opções
As soluções abaixo não parecem ativas e eu nunca as testei, mas parecem fazer o trabalho para outras pessoas:
Gow (Gnu On Windows) é a alternativa mais leve ao Cygwin sem casca. Ele usa um instalador conveniente do Windows que instala cerca de 130 aplicativos Linux de código aberto extremamente úteis, compilados como binários nativos do win32 e disponíveis no cmd.exe do windows. Ele foi projetado para ser o menor possível (cerca de 10 MB).
UnxUtils & GnuWin32 : O UnxUtils é uma coleção de portas de utilitários comuns do tipo GNU Unix para o Win32 nativo, com executáveis apenas dependendo do tempo de execução do Microsoft msvcrt.dll. Você deve baixar a parte principal e algumas atualizações . O GnuWin32 possui versões posteriores ao UnxUtils, mas requer arquivos de suporte (por exemplo, DLLs)
MSYS e MinGW parecem ter sido obsoletos pelo MSYS2 e MinGW-W64, por isso nunca os olhei.
Alguns problemas comuns no Cygwin e MSYS2
Em relação ao terminal
Mintty é o terminal usado no Cygwin, MSYS2 e seus derivados. É preciso estar ciente de que, se você estiver executando programas de console nativos do Windows, não será um substituto indolor para o prompt de comando do Windows. Enquanto os programas com saída de texto simples geralmente funcionam bem, os interativos e em tela cheia geralmente apresentam problemas. Leia mais na página inicial do Mintty e também leia a entrada "Alguns programas de console nativos não funcionam quando executados no Git Bash" nas Perguntas frequentes do Git for Windows . Essa entrada tem essas recomendações a serem feitas quando você enfrentar esse tipo de problema:
Outros problemas
As duas coisas mais importantes a serem lembradas são:
existe uma troca entre poder e problemas difíceis de depurar. Quanto mais poderosa a solução, mais coisas podem dar errado, mesmo de maneiras que inicialmente parecerão não relacionadas à sua camada Linux.
se você não possui muita experiência em Linux, não use as soluções mais poderosas como Cygwin / MSYS2 / MinGW
UnxUtils e GnuWin32 têm menos energia, mas também o menor potencial de causar dores de cabeça. Cygwin e similares superarão a fasquia em termos de energia e dores de cabeça. Cmder está em algum lugar no meio. Portanto, quando você precisar das soluções mais poderosas, durma bem e esteja totalmente concentrado. Evite usar soluções poderosas ao testar algo novo e possivelmente instável. Também não esqueça que soluções de média complexidade como o cmder não são impecáveis.
A questão dos comandos do Linux que sombream os do Windows é uma causa comum de problemas difíceis de depurar em soluções como Cygwin / MSYS2 / MinGW. Aqui está um exemplo: Eu tinha um arquivo .bat que estava usando o comando timeout. Quando executado no Cygwin, ele falha porque o tempo limite também é um comando do Linux, mas com sintaxe diferente. Depois de descobrir o problema, descobri que podia adicionar um PATH = ... na parte superior do arquivo .bat para garantir que o comando do Windows tivesse prioridade. Mas, então, recebi um erro ainda mais enigmático "O redirecionamento de entrada não é suportado" e resolvi uma solução alternativa antes de encontrar o motivo.
Aqui está um exemplo de um problema com o cmder. Eu estava executando a versão do Windows do uníssono no Cmder e, sob algumas condições especiais, ele estava travando com absolutamente nenhuma mensagem de erro . O mesmo comando estava sempre executando perfeitamente no cmd.exe. O engraçado é que ele também estava funcionando perfeitamente no Cygwin (na verdade, se você tiver nomes de arquivos Unicode, um terminal Cygwin é melhor que o cmd.exe porque o cmd.exe geralmente exibe o texto Unicode malformado).
Sobre este guia
Durante 2017-05, fiquei cansado de não entender as diferenças das ferramentas acima, embora estivesse usando algumas delas há muito tempo (principalmente CygWin e cmder, mas nunca para fins de desenvolvimento). Então, passei algumas horas para curtir a paisagem. Este guia é o resultado das anotações que guardei. Não sou especialista em campo, mas tentei encontrar todas as informações relevantes, ler com um olhar crítico e apresentar as partes mais importantes com clareza. Comente se algo parece errado e eu farei o meu melhor para corrigi-lo.
Finalmente, um pedido de desculpas por alguns problemas de terminologia: neste texto, às vezes, uso o termo Linux no lugar do UNIX ou POSIX. Eu sei que eles não são os mesmos, mas é muito difícil diferenciar entre eles ao abordar um tópico a uma distância tão longa. Mesmo quando não é difícil, leva tempo que eu não tenho ;-)
fonte
pacman
, nãopackman
Eu sugiro que você baixe e instale um conjunto mínimo de MinGW e também um conjunto mínimo de MSYS. O instalador do MinGW oferece uma interface gráfica fácil para você escolher quais pacotes você deseja instalar. Se tudo o que você quer é BASH, a instalação não levará mais do que alguns megabytes.
UPDATE: Mudei para o MSYS2, que é muito mais avançado e possui porta da ferramenta pacL do ArchLinux para gerenciamento de pacotes. O instalador do MSYS2 tem tudo o que você precisa, além de usar o mintty, que é absolutamente perfeito.
fonte
Também há Clink disponível no GitHub . Ele se integra ao prompt de comando do Windows usando bibliotecas de gancho.
Na descrição do projeto:
(portanto, ele não fornece recursos do bash como linguagem de programação ou quaisquer outros brindes do Unix)
Eu uso o Linux no trabalho e às vezes me vejo navegando no cmd, que não age como eu esperava do Bash. Com o Clink, posso superar algumas dessas deficiências.
Ultimamente, eu também descobri um projeto promissor, mas ainda não 'posso fazer tudo', chamado flinux, que emula as funções do sistema Linux e fornece algum tipo de sistema em cima dele (atualmente baseado no Arch Linux)
fonte
cmd.exe
, assim como descrito no site;)Além do que o faffaffaff disse , o Git for Windows inclui o Bash e alguns programas comuns de linha de comando do Linux (por exemplo , Vim , sed e gawk ). É baseado no MSYS . A versão dos programas é antiga, por exemplo, o Bash é a versão 3.1. Cygwin teria versões mais recentes dos utilitários.
Também uso o ConEmu como emulador de terminal (principalmente para realçar a sintaxe no Vim, nas guias e facilitar a cópia e colagem). O console2 também é outro emulador de terminal popular, embora eu não tenha tentado.
fonte
Esta é uma das primeiras coisas que faço quando configuro uma nova máquina Windows:
Um console funcional e elegante no Windows
fonte
Eu apenas tentei com Babun , que integrou o Cygwin internamente, e me parece bom :)
O arquivo de download é um pouco grande, cerca de 250 MB. Mas a instalação é direta; não há necessidade de configurar nada e simplesmente funciona!
fonte