Microsoft Windows je morda prevladujoči igralec na namizju, vendar hitro rastoči trg odprtokodne programske opreme - zlasti za skrbniška in razvojna orodja - očitno daje prednost Linuxu. Da ne omenjam mobilnega trga, kjer Android uporablja različice Linuxa. Če ste razvijalec v operacijskem sistemu Windows, bobnanje, s katerim boste spoznali zmogljivosti Linuxa, postaja vedno glasnejše.
Skozi leta je Microsoft predstavil različne rešitve za uporabo zmožnosti Linuxa v sistemu Windows, kot so PowerShell s SSH ter Cygwin in MSYS. Druga možnost je zagon Linuxa v navideznem računalniku. Toda VM porabijo veliko virov in ne nudijo prvovrstne izkušnje z Linuxom, saj na primer ne morete urejati lokalnih datotek ali dobiti popolnega dostopa do lokalnih pogonov.
Ker se svet IT za številne projekte obrača proti Linuxu, je Microsoft pripravil novo ponudbo, da bi izkoristil ta rastoči trg. Odgovor je Bash v sistemu Windows. Tu vas bomo vodili skozi namestitev Bash-a v sistem Windows in vam okušali, kaj lahko - in zakaj bi to storili - naredite v ukazni vrstici Linuxa.
Pregled Bash-a v sistemu Windows
Bash on Windows je nova funkcija, dodana operacijskemu sistemu Windows 10. Microsoft se je združil s Canonical-om, imenovanim ustvarjalci Ubuntu-Linuxa, da bi zgradil to novo infrastrukturo v sistemu Windows, imenovano Podsistem za Windows (WSL). Razvijalcem omogoča dostop do celotnega nabora Ubuntu CLI in pripomočkov. Z domačo izkušnjo Linuxa lahko razvijalci v sistemu Windows izvajajo ukaze za Linux, vključno z dostopom do lokalnih datotek in pogonov. Ker je Linux izvorno integriran v sistem Windows, imajo razvijalci prilagodljivost za delo na isti datoteki v sistemih Linux in Windows. Preprosto povedano, Bash v operacijskem sistemu Windows prinese uporabniško območje Ubuntuja v sistem Windows, minus jedro Linuxa.
Bash proti PowerShell
Microsoft že ima ukazno lupino v PowerShell-u. Torej, kako se Bash v sistemu Windows razlikuje? PowerShell je Microsoftov okvir za upravljanje konfiguracije za avtomatizacijo opravil. Uporablja se za upravljanje sistema Windows s svojo arhitekturo, usmerjeno v API. Bash pa se za avtomatizacijo in razvoj večinoma zanaša na besedilne datoteke. Razlikujeta se tako po fokusu kot po oblikovanju. Na primer, ko navajate datoteke v imeniku z ls
PowerShell prikaže izhod kot datotečne predmete, medtem ko Bash v sistemu Windows prikaže izhod kot niz nizov. Na srečo lahko za skrbnike sistema Windows sodelujete z obema rešitvama in si zagotovite najboljše iz obeh svetov.
Previdno: PowerShell ima vzdevke, ki vam to omogočajo pomisli izvajate tradicionalne ukaze Bash, ko dejansko izvajate komandne gumbe PowerShell. To lahko nekatere ljudi spotakne. Na primer, ls
je vzdevek za Get-ChildItem
ukaz. Podobno, pwd
je vzdevek za Get-Location
in cd
je vzdevek za Set-Location
. Za seznam vseh vzdevkov v PowerShell uporabite Get-Alias
cmdlet.
Bash v sistemu Windows ponuja številne prednosti razvijalcem odprtokodne kode. S tem, ko Bash v operacijskem sistemu Windows prinese domače zmogljivosti Linuxa, odpravlja potrebo po dvojnem zagonu z Ubuntujem za dostop do zmožnosti Linuxa. Ni vam treba uporabljati Mac OS X, zagnati navideznega računalnika ali ustvariti zaobidenih rešitev s pomočjo Cygwin-a. Omogoča nabor orodij za pisanje in gradnjo kode za vaše scenarije in platforme. Z dostopom do datotečnega sistema Windows iz storitve Bash lahko na istih datotekah delate s sistemom Windows ali Linux CLI.
Kako je Microsoft Bash prenesel v sistem Windows?
Na konferenci o gradnji aprila 2016 je Microsoft na presenečenje mnogih napovedal podsistem Windows za Linux (WSL). Rojen v partnerstvu s Canonical-om, je Bash v sistemu Windows prvič dobavljen s posodobitvijo Windows 10 Anniversary Update. Na voljo je v dveh delih: osnovni podsistem in paket. Osrednji podsistem je že del sistema Windows 10 Insider Builds in ponuja Linux API v sistemu Windows, kar pomeni, da lahko izvorno naložite knjižnice in izvršljive datoteke Linux. Canonical ponuja programski paket kot dodatno opremo. Ta programski paket ponuja orodja Bash in CLI, potrebna za okolje Linux.
Namestitev Bash-a
Če želite zagnati Bash v sistemu Windows, mora sistem zagnati x64 Windows 10 Anniversary Update Build 14393 ali novejšo različico. Gradnjo odkrijete s tipkanjem winver
v ukaznem polju.
Če je različica gradnje manjša od 14393, Bash-a ne boste mogli namestiti.
Če želite omogočiti Bash v podprti gradnji, morate najprej vklopiti način za razvijalce. Če želite to narediti, pojdite v Nastavitve, kliknite Za razvijalce in izberite izbirni gumb Način za razvijalce. Ko je to končano, boste pozvani, da potrdite.
Ko je to storjeno, mora biti omogočena funkcija podsistem Windows za Linux. To najlažje naredite s pomočjo ukazne mize PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Podsistem-Linux
Če želite odpreti Bash v sistemu Windows, odprite ukazni poziv, vnesite bash
in sprejmite licenčno pogodbo. Ko se Bash namesti, izvede nekaj sprememb v vašem sistemu:
- Prenese se slika uporabniškega načina Ubuntu.
- Skrita mapa na naslovu
% localappdata% \ lxss \
je ustvarjen. - Bližnjica je postavljena na namizje.
Če želite zagnati Bash, lahko zdaj odprete ukazni poziv ali uporabite ikono bližnjice na namizju.
Po uspešni namestitvi Basha vas bo sistem pozval, da ustvarite uporabniško ime in geslo za Unix. To uporabniško ime in geslo sta za Bash in se nikakor ne nanašata na vaše okolje Windows.
Kako začeti z ukazi
Ko ste v Bashu, imate na voljo nekaj ukazov za upravljanje WSL in slike Ubuntu.
lxrun
: Za upravljanje primerka WSLlxrun / namestitev
: Za zagon postopka prenosa in namestitvelxrun / odstranitev
: Če želite odstraniti sliko Ubuntulxrun / posodobitev
: Za posodobitev indeksa paketov WSLlxrun / setdefaultuser
: Nastavite privzeti Bash za uporabnika Ubuntu
Bash v sistemu Windows vam seveda omogoča tudi izvajanje številnih "tradicionalnih" ukazov Bash. Na primer:
grep
: Za iskanje vrstic, ki se ujemajo z vzorcemsed
: Če želite nadomestiti nizodmev
: Za prikaz vrednosti na zaslonvar = 2
: Če želite ustvariti spremenljivko za$ var
=!=
: Za primerjavo majhnih delčkov besedil
Navigacijski ukazi
Za navigacijo lahko uporabite tudi ukaz Windows DOS cd
za krmarjenje po strukturi map.
cd temp
: Spremeni delovni imenik v mapo z imenom tempcd \
: Popelje vas v korenski imenik. Ker Ubuntu nima črk pogona, kot je Windows, bi bil korenski imenik najvišji nivo.cd ..
: Pomik poviša za eno stopnjo navzgor (to je v nadrejeni imenik)cd ~
: Popelje vas v domači imenik
Vendar cd
v PowerShell je nekoliko drugačen v Bashu v Ubuntuju. V okolju WSL so vaši pogoni Windows shranjeni v / mnt
mapo, ime pogona pa se uporablja kot podmapa. Ko uporabite cd
ukaz, morate ustrezno spremeniti pot.
Prikaži ukaze
Če želite preveriti pot in vsebino imenika, je nekaj primerov:
pwd
: Na zaslon natisne pot ali imenik, v katerem stels
: Prikaže datoteke v imeniku
Ukazi za pomoč
Če želite razumeti funkcionalnost in parametre, povezane z vsakim ukazom, se človek
ukaz.
Tip človek
in prikazal bo povzetek, za kaj je ukaz in s tem povezane parametre. To je podobno kot PowerShell pomoč
ukaz.
Urejanje ukazov
Ena od prednosti Basha je, da delate z navadnim besedilom. To pomeni, da se vam ni treba zapletati z nastavitvami registra ali programa. Ne glede na to, ali želite spremeniti zagonsko zaporedje ali konfiguracijo spletnega strežnika, preprosto uredite ustrezno besedilno datoteko. Za učinkovito izvajanje nalog urejanja potrebujete dober urejevalnik besedil. Bash ponuja zmogljive urejevalnike, ki vam olajšajo delo. Nekaj dobrih primerov urejevalnikov besedil, ki so na voljo v storitvi Bash, je nano
in vi
.
Upravljanje paketov v Bashu
Ker v bistvu uporabljate Linux, imate zdaj na voljo tudi ukaze za upravljanje paketov v obliki apt-get
. Nekaj primerov:
posodobitev sudo apt-get
: Osveži seznam repozitorijev, iz katerih lahko povlečetesudo apt-get nadgradnja
: Nadgradi vso programsko opremo na najnovejšo različicoapt-cache iskanje app_name
: Poišče skladišče za določeno aplikacijosudo apt-get namestitev apt-name
: Prenese in namesti določeno aplikacijo
sudo
je dodana vsem ukazom, da lahko zaženete ukaz pod drugim uporabnikom, privzeto super uporabnikom (ali skrbnikom). Podobno je tehniki "zaženi kot skrbnik" v sistemu Windows.
Ukazi za mreženje
Za prenos datotek prek strežnika HTTP s strežnika ali URL-ja lahko zdaj uporabite curl
ukaz. Ta ukaz je podoben ukazu PowerShell Invoke-WebRequest
cmdlet.
Podobno se lahko povežete z drugim oddaljenim računalnikom Linux in na njem zaženete ukaze. Ker smo zdaj v Linuxu, imamo končno pravega odjemalca SSH, s katerim lahko sodelujemo. Namesto da bi uporabili Cygwin ali trenutno različico implementacije OpenSSH za Windows, lahko zdaj SSH izvirno zaženemo prek ssh
ukaz:
ssh uporabniško ime @ abc.com
Medtem ko smo na temi OpenSSH, imamo zdaj tudi izvorno možnost varnega kopiranja datotek prek SCP z uporabo vgrajenega scp
ukaz:
scp localfile uporabniško [email protected]: oddaljeni imenik / oddaljena datoteka
Z Bashom v sistemu Windows imate zdaj na voljo veliko drugih funkcij:
- Orodja, kot so Git, Python in Ruby, neposredno v sistemu Windows
- Urejevalniki ukazne vrstice, kot sta emacs in vi
- Dostop do datotečnega sistema Windows iz okolja Bash
- Uporabniška podpora za Linux
- Podpora za Symlink
- Montaža shrambe prek
/ mnt
Kateri so najpogostejši primeri uporabe Bash v sistemu Windows?
Trenutno številni razvijalci uporabljajo orodja Windows in Linux, kar pomeni, da morajo za izvajanje CLI-ja izvesti dvojni zagon ali zagnati Linux znotraj navideznega računalnika. Ko lahko ta orodja zaženejo v sistemu Windows, potem Windows postane njihovo glavno namizje. V tem primeru jim ni treba prenesti aplikacij in storitev Linux v sisteme Windows. Medtem ko so nekateri lahko v sistemu Windows zagnali aplikacije za grafični uporabniški vmesnik Linuxa, mnogi dobijo priročen Linux CLI za izvajanje preprostih nalog, ne da bi pri tem kupili namenski računalnik Linux iz Azure ali se za preproste namene preselili v napravo Mac. Ker je skriptiranje na Bashu enostavno, lahko avtomatizirate razvojne naloge, kot je varnostno kopiranje spletnih mest v Apacheju.
Mnogi razvijalci na primer uporabljajo GitHub za naloge nadzora različic. Če želite dostopati do GitHub v sistemu Windows, morate namestiti GitHub za Windows, nato pa za urejanje sprememb uporabiti ukaze za prevzem in potiskanje. Namesto tega morate prenesti pripomoček Git, kar je dolgočasen postopek. Z Bashom v sistemu Windows postane vaše delo preprosto:
apt-get install gitgit commit
git push
Poleg tega v razdelku Bash ne potrebujete drugih orodij za delo s tradicionalnimi vrstami datotek Linux, kot so GZIPed tarballs (datoteke tar.gz).
Katere so pomanjkljivosti uporabe Bash-a v sistemu Windows?
Bash v sistemu Windows je še vedno v različici beta in vsebuje nekaj grobih robov. Microsoft pravi, da Bash v sistemu Windows trenutno morda ne bo popolnoma izvedel vseh vaših skriptov. Vendar pa Microsoft pozorno spremlja delovanje in povratne informacije in proaktivno spreminja to rešitev.
Drugič, Bash on Windows je nastal za razvojno skupnost. Ni bil zasnovan za upravljanje okolja Windows. Čeprav lahko v WSL zaženete demone strežnika, pa ta ne ponuja vseh zmožnosti celotnega virtualnega stroja Linux. Če nameravate v Ubuntuju izvajati strežniške procese pod delovnimi obremenitvami, si oglejte druge možnosti za zagon celotnega operacijskega sistema Linux.
Nazadnje, Bash v operacijskem sistemu Windows v operacijski sistem Windows pripelje zmogljivosti Linuxa. Vendar orodja Linux ne bodo mogla komunicirati z orodji in aplikacijami Windows. To pomeni, da zaradi njihovih značilnih arhitekturnih razlik ni zmogljivosti med različnimi platformami.
Bash v sistemu Windows je še vedno v začetni fazi. Čeprav ima ta rešitev nekaj omejitev, si Microsoft močno prizadeva za dodajanje več zmogljivosti za izbris teh razlik in Windows za platformo št. 1 za vse vrste razvojnih projektov. Bodite pozorni na ta projekt pri Microsoftu. Z novo držo Microsofta v odprtokodnem svetu bo Bash zagotovo postal prvovrstni državljan sistema Windows s časom.
Povezani članki
- Bistveni vodnik po PowerShell za Windows, Windows Server in Exchange
- 10 bistvenih varnostnih skriptov PowerShell za skrbnike sistema Windows
- Vse o ponudnikih in modulih PowerShell
- Go pro: Navodila za uporabnike PowerShell