Programmering

Oplev kraften i Bash på Windows

Microsoft Windows kan være den dominerende spiller på skrivebordet, men det hurtigt voksende marked for open source-software - især for admin- og dev-værktøjer - favoriserer helt klart Linux. For ikke at nævne mobilmarkedet, hvor Android bruger Linux-varianter. Hvis du er en udvikler på Windows, bliver trommeslaget for at få hip til Linux-kapaciteter stadig højere.

I årenes løb har Microsoft introduceret forskellige løsninger til brug af Linux-funktioner på Windows, såsom PowerShell med SSH og Cygwin og MSYS. At køre Linux inde i en virtuel maskine er en anden mulighed. Men virtuelle computere forbruger en betydelig mængde ressourcer og giver ikke en førsteklasses Linux-oplevelse, da du ikke kan redigere lokale filer eller f.eks. Få fuld adgang til lokale drev.

Da it-verdenen vender sig mod Linux for mange projekter, er Microsoft kommet med et nyt tilbud til at udnytte dette voksende marked. Bash på Windows er svaret. Her guider vi dig gennem installation af Bash på Windows og giver dig en smagsprøve på, hvad du kan gøre - og hvorfor du ville gøre det - i Linux-kommandolinjen.

En oversigt over Bash på Windows

Bash on Windows er en ny funktion tilføjet til Windows 10. Microsoft har gået sammen med Canonical, alias skaberne af Ubuntu Linux, for at opbygge denne nye infrastruktur inden for Windows kaldet Windows Subsystem for Linux (WSL). Det giver udviklere adgang til et komplet sæt Ubuntu CLI og hjælpeprogrammer. Med en indbygget Linux-oplevelse kan udviklere køre Linux-kommandoer på Windows, herunder adgang til lokale filer og drev. Da Linux er integreret i Windows, får udviklere fleksibiliteten til at arbejde på den samme fil i Linux og Windows. Kort sagt, Bash på Windows bringer Ubuntu-brugerland til Windows minus Linux-kernen.

Bash vs. PowerShell

Microsoft har allerede en kommandoskal i PowerShell. Så hvordan adskiller Bash på Windows sig? PowerShell er Microsofts konfigurationsstyringsramme til automatisering af opgaver. Det bruges til at styre Windows med sin API-orienterede arkitektur. Bash er derimod for det meste afhængig af tekstfiler til automatisering og udvikling. De to adskiller sig i både fokus og design. For eksempel når du viser filer i et bibliotek ved hjælp af ls kommando, PowerShell viser output som filobjekter, mens Bash på Windows viser output som et sæt strenge. Heldigvis for Windows-administratorer kan du arbejde med begge løsninger side om side og få det bedste fra begge verdener.

Et ord med forsigtighed: PowerShell har aliasser, der giver dig mulighed for det tænke du kører traditionelle Bash-kommandoer, når du faktisk kører PowerShell-cmdlets. Dette kan give flere mennesker. For eksempel, ls er et alias for Get-ChildItem kommando. Tilsvarende pwd er et alias for Get-Location og cd er et alias for Set-placering. Brug en til en liste over alle aliasser i PowerShell Få alias cmdlet.

Bash på Windows giver open source-udviklere flere fordele. Ved at bringe native Linux-funktioner til Windows eliminerer Bash on Windows behovet for at køre dobbelt opstart med Ubuntu for at få adgang til Linux-funktioner. Du behøver ikke gå til Mac OS X, køre en virtuel maskine eller oprette løsninger ved hjælp af Cygwin. Det giver det krævede værktøjssæt til at skrive og opbygge kode til dine scenarier og platforme. Ved at få adgang til Windows-filsystemet fra Bash kan du arbejde på de samme filer ved hjælp af Windows eller Linux CLI.

Hvordan portede Microsoft Bash til Windows?

På Build Conference i april 2016 annoncerede Microsoft Windows Subsystem til Linux (WSL) til overraskelse for mange. Født af et partnerskab med Canonical, sendte Bash på Windows først med Windows 10 Anniversary Update. Det kommer i to dele: kerneundersystemet og en pakke. Kernedelsystemet er allerede en del af Windows 10 Insider Builds og tilbyder Linux API på Windows, hvilket betyder, at du kan indlæse Linux-biblioteker og eksekverbare filer. Canonical leverer softwarepakken som en mulighed. Denne softwarepakke tilbyder Bash- og CLI-værktøjer, der kræves til Linux-miljøet.

Installation af Bash

For at køre Bash på Windows skal dit system køre x64 Windows 10 Anniversary Update Build 14393 eller nyere. Du opdager bygningen ved at skrive Winver i kommandofeltet.

Hvis buildversionen er mindre end 14393, kan du ikke installere Bash.

For at aktivere Bash på en understøttet build skal du først aktivere Developer Mode. For at gøre dette skal du gå over til Indstillinger, klikke på For udviklere og vælge alternativknappen Developer Mode. Når dette er gjort, bliver du bedt om at bekræfte.

Når dette er gjort, skal funktionen Windows Subsystem til Linux være aktiveret. Den nemmeste måde at gøre dette på er via en PowerShell-cmdlet:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

For at åbne Bash på Windows skal du åbne kommandoprompten og skrive bash, og accepter licensaftalen. Når Bash installeres, udfører det et par ændringer til dit system:

  • Et Ubuntu-brugertilstandsbillede downloades.
  • En skjult mappe placeret på % localappdata% \ lxss \ er oprettet.
  • En genvej placeres på skrivebordet.

For at køre Bash kan du nu enten gå til kommandoprompten eller bruge skrivebordsgenvejsikonet.

Efter den vellykkede installation af Bash vil systemet bede dig om at oprette et Unix-brugernavn og en adgangskode. Dette brugernavn og adgangskode er til Bash og vedrører på ingen måde dit Windows-miljø.

Kom godt i gang med kommandoer

En gang i Bash har du et par tilgængelige kommandoer til at administrere WSL og Ubuntu-billedet.

  • lxrun: Til styring af WSL-forekomsten
  • lxrun / installer: For at starte proceduren til download og installation
  • lxrun / afinstallere: For at afinstallere Ubuntu-billedet
  • lxrun / opdatering: For at opdatere WSL-pakkeindekset
  • lxrun / setdefaultuser: For at indstille standard Bash på Ubuntu-bruger

Bash på Windows giver dig selvfølgelig også mulighed for at køre mange "traditionelle" Bash-kommandoer. For eksempel:

  • grep: For at finde linjer, der matcher et mønster
  • sed: For at erstatte en streng
  • ekko: For at overføre værdien til skærmen
  • var = 2: For at oprette en variabel til $ var
  • =!=: For at sammenligne små uddrag af tekster

Navigationskommandoer

Til navigation kan du også bruge Windows DOS-kommandoen cd for at navigere i mappestrukturen.

  • cd temp: Ændrer arbejdsmappen til mappen med navnet temp
  • cd \: Bringer dig til rodmappen. Da Ubuntu ikke har drevbogstaver som Windows, ville rodmappen være det øverste bibliotek.
  • cd ..: Tager prompten et niveau opad (dvs. til den overordnede bibliotek)
  • cd ~: Tager dig til hjemmekataloget

Imidlertid, cd i PowerShell er lidt anderledes i Bash på Ubuntu. I WSL-miljøet gemmes dine Windows-drev i / mnt mappe, og navnet på drevet bruges som undermappe. Når du bruger cd kommando, skal du ændre stien i overensstemmelse hermed.

Vis kommandoer

For at kontrollere stien og indholdet af en mappe er følgende et par eksempler:

  • pwd: Udskriver stien eller det bibliotek, du er, på skærmen
  • ls: Viser filerne i et bibliotek

Hjælpskommandoer

Hvis du vil forstå funktionaliteten og parametrene, der er knyttet til hver kommando, mand kommando kan bruges.

Type mand og det viser synopsis af, hvad kommandoen er beregnet til og de tilknyttede parametre. Dette svarer til PowerShell Hjælp kommando.

Redigeringskommandoer

En af fordelene ved Bash er, at du arbejder med almindelig tekst. Dette betyder, at du ikke behøver at rode med registreringsdatabase- eller programindstillingerne. Uanset om du vil ændre boot-sekvensen eller webserverkonfigurationen, skal du blot redigere den tilsvarende tekstfil. For effektivt at udføre redigeringsopgaver skal du have en god teksteditor. Bash tilbyder kraftfulde redaktører, der gør dit job nemt. Et par gode eksempler på teksteditorer, der er tilgængelige i Bash, er nano og vi.

Pakkehåndtering i Bash

Da du i det væsentlige kører Linux, har du også nu kommandoer til pakkehåndtering i form af apt-get. Et par eksempler:

  • sudo apt-get opdatering: Opdaterer listen over arkiver, du kan trække fra
  • sudo apt-get opgradering: Opgraderer al softwaren til den nyeste version
  • apt-cache søgning appnavn: Søger arkivet efter en bestemt app
  • sudo apt-get install apt-name: Downloader og installerer den pågældende app

sudo er præpenderet til alle kommandoer, så du kan køre en kommando under en anden bruger, superbrugeren (eller admin) som standard. Det svarer til teknikken "kør som administrator" i Windows.

Netværkskommandoer

For at downloade filer via HTTP fra en server eller en URL kan du nu bruge krølle kommando. Denne kommando svarer til PowerShells Invoke-WebRequest cmdlet.

På samme måde kan du oprette forbindelse til en anden fjern Linux-computer og køre kommandoer på den. Da vi nu er i Linux, har vi endelig en ægte SSH-klient at arbejde med. I stedet for at bruge Cygwin eller den nuværende beta af OpenSSH-implementeringen til Windows, kan vi nu køre SSH indbygget via ssh kommando:

ssh brugernavn @ abc.com

Mens vi er om emnet OpenSSH, har vi nu også den indfødte mulighed for at kopiere filer sikkert over SCP ved hjælp af den indbyggede scp kommando også:

scp localfile [email protected]: remotedirectory / remotefile

Med Bash på Windows har du nu mange andre funktioner lige ved hånden:

  • Værktøjer som Git, Python og Ruby direkte på Windows
  • Kommandolinjeditorer som emacs og vi
  • Adgang til Windows-filsystemet fra Bash-miljøet
  • Linux-brugersupport
  • Symlink support
  • Opbevaring monteret via / mnt

Hvad er almindelige brugssager for Bash på Windows?

I øjeblikket bruger mange udviklere Windows- og Linux-værktøjer, hvilket betyder, at de skal udføre dual-booting eller køre Linux inde i en virtuel maskine for at få CLI-funktionerne. Når de kan køre disse værktøjer i Windows, bliver Windows deres primære skrivebord. I så fald behøver de ikke at porte Linux-apps og -tjenester til Windows-systemer. Mens nogle mennesker har kunnet køre Linux GUI-apps i Windows, får mange mennesker en praktisk Linux CLI til at udføre enkle opgaver uden at købe en dedikeret Linux-maskine fra Azure eller flytte til en Mac-enhed til enkle formål. Da scripting er let på Bash, kan du automatisere udviklingsopgaver såsom sikkerhedskopiering af websteder i Apache.

For eksempel bruger mange udviklere GitHub til versionskontrolopgaver. For at få adgang til GitHub på Windows skal du installere GitHub til Windows og derefter bruge kommittere og skubbe kommandoer til at begå ændringer. Alternativt skal du downloade Git-værktøjet, som er en kedelig proces. Med Bash på Windows bliver dit job simpelt:

apt-get install git

git begå

git push

Under Bash har du heller ikke brug for nogen tredjepartsværktøjer til at arbejde med traditionelle Linux-filtyper som GZIPed tarballs (tar.gz-filer).

Hvad er ulemperne ved at bruge Bash på Windows?

Bash på Windows er stadig i beta og indeholder nogle ru kanter. Microsoft siger, at Bash på Windows muligvis ikke perfekt udfører alle dine scripter på dette tidspunkt. Imidlertid overvåger Microsoft nøje ydeevnen og feedbacken, og den foretager proaktivt ændringer til denne løsning.

For det andet blev Bash on Windows skabt for udviklingssamfundet. Det var ikke designet til styring af Windows-miljøer. Selvom du kan gøre ting som at køre serverdæmoner i WSL, tilbyder den ikke de fulde muligheder for en fuld Linux virtuel maskine. Hvis du agter at køre serverprocesser under produktionsarbejdsbelastninger på Ubuntu, skal du se på andre alternativer til at køre et komplet Linux-operativsystem.

Endelig bringer Bash på Windows Linux-funktionerne til Windows. Linux-værktøjer kan dog ikke interagere med Windows-værktøjer og applikationer. Dette betyder ingen tværgående platforme på grund af deres iboende arkitekturforskelle.

Bash på Windows er stadig i sin begyndende fase. Selvom der er nogle begrænsninger for denne løsning, arbejder Microsoft meget på at tilføje flere muligheder for at slette disse forskelle og gøre Windows til platform nr. 1 for enhver form for udviklingsprojekt. Hold øje med dette projekt fra Microsoft. Med Microsofts nye holdning i open source-verdenen vil det helt sikkert gøre Bash til en førsteklasses borger i Windows, når tiden skrider frem.

Relaterede artikler

  • Den vigtige guide til PowerShell til Windows, Windows Server og Exchange
  • 10 vigtige PowerShell-sikkerhedsscripts til Windows-administratorer
  • Alt om PowerShell-udbydere og -moduler
  • Go pro: Strømbrugervejledningen til PowerShell