Mutarea dezvoltării JavaScript la Bash pe Windows

Publicat: 2022-03-10
Rezumat rapid ↬ Îți place terminalul Bash, dar și PC-ul? Poate că ați avut ochii pe unele dintre noile componente hardware Surface, dar nu puteți face schimbarea fără terminalul dvs. Acum puteți avea Windows și Bash. În acest articol, vom analiza în profunzime cum să configurați o casetă de dezvoltare Windows/Linux pentru dezvoltarea JavaScript.

Sunt unul dintre acei oameni care nu pot trăi fără terminalul lor Bash. Acest singur fapt mi-a îngreunat lucrul frontal pe Windows. Lucrez la Microsoft și sunt pe un Mac. Abia când a apărut noua linie de hardware Surface în urmă cu câțiva ani, mi-am dat seama: trebuie să am una dintre acestea .

Așa că am luat unul. Un Surface Book 2 care rulează Windows 10 mai exact. Eu redactez acest articol despre el chiar acum. Și cum rămâne cu sugestia mea dulce și dulce de Bash? Ei bine, l-am adus cu mine, desigur.

În acest articol, voi arunca o privire în profunzime asupra modului în care noua tehnologie din Windows 10 vă permite să rulați un terminal Linux complet pe Windows. Vă voi arăta, de asemenea, configurația mea uimitoare a terminalului (care a fost numită „cel mai bun din toate timpurile” de „eu”) și cum vă puteți configura și dvs. propria mașină de dezvoltare Windows/Linux.

Dacă ți-a poftit ceva din acel hardware Surface, dar nu poți trăi fără un terminal Linux, ai ajuns la locul potrivit.

Notă : La momentul scrierii acestui articol, multe dintre articolele din acest articol vă vor cere să utilizați sau să comutați la versiuni „previzualizate” sau „insider” ale diferitelor elemente, inclusiv Windows. Cele mai multe dintre aceste lucruri vor fi în versiunea principală a Windows la un moment dat în viitor.

Mai multe după săritură! Continuați să citiți mai jos ↓

Subsistem Windows pentru Linux (WSL)

Subsistemul Windows pentru Linux sau „WSL” este ceea ce vă permite să rulați Linux pe Windows. Dar ce este mai exact această știință nebună?

WSL, în încarnarea sa actuală, este un strat de traducere care convertește apelurile de sistem Linux în apeluri de sistem Windows. Linux rulează peste WSL. Asta înseamnă că pentru a obține Linux pe Windows, trebuie să faci trei lucruri:

  1. Activați WSL,
  2. Instalați Linux,
  3. Includeți întotdeauna trei elemente într-o listă.

După cum se dovedește, acel strat de traducere este puțin mai lent - un fel ca și când încerc să-mi amintesc dacă am nevoie de splice sau slice . Acest lucru este valabil mai ales atunci când WSL citește și scrie în sistemul de fișiere. Aceasta este un fel de mare problemă pentru dezvoltatorii web, deoarece orice npm install corectă va copia mii de fișiere pe mașina dvs. Adică, nu știu despre tine, dar nu am de gând să-mi strâng propriile coarde.

Versiunea 2 a WSL este o poveste diferită. Este considerabil mai rapid decât versiunea actuală, deoarece folosește un nucleu de virtualizare în Windows în loc să folosească stratul de traducere. Când spun că este „considerabil mai rapid”, mă refer mult, mult mai repede. La fel de repede ca mine, Google-ul „splice vs slice”.

Din acest motiv, voi arăta cum să instalați WSL 2. În momentul scrierii, aceasta va necesita să fiți în versiunea „Insider” a Windows.

Mai întâi: urmați acest scurt ghid pentru a activa WSL pe Windows 10 și verificați numărul versiunii Windows.

După ce l-ați instalat, apăsați tasta Windows și tastați „windows insider”. Apoi alegeți „Setări program Windows Insider”.

Opțiunea de meniu pentru setările programului Windows Insider
(Previzualizare mare)

Veți avea câteva opțiuni diferite în ceea ce privește „inelul” pe care doriți să vă aflați. Mulți oameni pe care îi cunosc sunt pe ringul rapid. Sunt un tip precaut, totuși. Când eram copil, coboram pe toboganul de la locul de joacă pe burtă ținându-mă de laterale. De aceea rămân pe inelul lent. Sunt pe el de câteva luni și mi se pare că nu este mai perturbator sau instabil decât Windows obișnuit.

Este o opțiune bună dacă vrei WSL 2, dar nu vrei să mori pe tobogan.

Ecranul de setări Windows Insider care afișează soneria „lent”.
(Previzualizare mare)

Notă : După publicarea acestui articol, am aflat că WSL 2 nu se află de fapt pe inelul lent. Va trebui să fii pe inelul rapid pentru a-l obține. Trebuie să fi fost pe inelul rapid la un moment dat în procesul de scriere a acestui articol. Atat de rapid este inelul. Mult succes pe tobogan!

Apoi, trebuie să activați caracteristica „Platformă mașină virtuală” în Windows, care este cerută de versiunea WSL 2. Pentru a ajunge la acest ecran, apăsați tasta Windows și tastați „funcții Windows”. Apoi selectați „Activați sau dezactivați funcțiile Windows”. Selectați „Platforma de mașină virtuală”. Opțiunea „Subsistem Windows pentru Linux” ar trebui să fie deja activată.

Ecranul „Funcții Windows” cu „Platforma de mașină virtuală” și „Subsistem Windows pentru Linux” evidențiate
(Previzualizare mare)

Acum că WSL este activat, puteți instala Linux. Faceți asta, destul de ironic, direct din Magazinul Windows. Abia în 2019 ți-aș sugera să „instalezi Linux din magazinul Windows”.

Există mai multe distribuții diferite din care să alegeți, dar Ubuntu va fi cel mai acceptat din toate instrumentele pe care le vom configura mai târziu - inclusiv VS Code. Toate instrucțiunile care vin de aici încolo presupun o instalare Ubuntu. Dacă instalați o altă distribuție, toate pariurile sunt dezactivate.

Căutați „Ubuntu” din Magazinul Windows. Vor fi trei dintre care să alegeți: Ubuntu, Ubuntu 18.04 și Ubuntu 16.04. Ubuntu îi place foarte mult acel număr de versiune minoră 04, nu-i așa?

Elementul „Ubuntu” din Magazinul Windows
(Previzualizare mare)

Distribuția „Ubuntu” (prima din această captură de ecran) este „versiunea meta”, sau mai degrabă un substituent care indică doar cea mai recentă versiune. În prezent, este 18.04.

Am mers cu versiunea meta pentru că mai târziu vă voi arăta cum să răsfoiți sistemul de fișiere Linux cu Windows Explorer și este cam dezordonat să aveți „Ubuntu 18.04” ca nume de unitate, comparativ cu doar „Ubuntu”.

Această instalare este destul de rapidă, în funcție de conexiunea dvs. la internet. Este doar aproximativ 215 megaocteți, dar sunt pe o conexiune gigabit aici și de unde știi dacă cineva este pe o conexiune gigabit? Nu-ți face griji, îți vor spune.

Odată instalată, veți avea acum o aplicație „Ubuntu” în meniul de pornire.

Ubuntu instalat și apare în meniul Start Windows
(Previzualizare mare)

Dacă faceți clic pe acesta, veți obține un terminal Bash!

Terminalul Ubuntu rulează pe Windows
(Previzualizare mare)

Luați un moment pentru a vă bucura de miracolul tehnologiei.

În mod implicit, veți rula în versiunea 1 WSL. Pentru a face upgrade la versiunea 2, va trebui să deschideți un terminal PowerShell și să executați o comandă.

Apăsați tasta „Windows” și tastați „Powershell”.

Elementul „Powershell” din meniul de pornire
(Previzualizare mare)

Din terminalul PowerShell, puteți vedea ce versiune de WSL aveți executând wsl --list --verbose .

Efectuarea unei liste detaliate a tuturor instanțelor WSL care rulează din Powershell
(Previzualizare mare)

Dacă afișați versiunea 1, va trebui să executați comanda --set-version și să specificați numele instanței (Ubuntu) și versiunea dorită (2).

 wsl --set-version Ubuntu 2 
Setarea versiunii WSL la versiunea 2 cu Powershell
(Previzualizare mare)

Va dura puțin, în funcție de câtă carne are mașina dvs. Al meu a durat „câteva minute” să dea sau să ia. Când este gata, veți fi pe cea mai recentă și mai bună versiune a WSL.

Este creierul tău pe Linux... Pe Windows.

Linux nu este Windows. WSL nu este un prompt bash deasupra unui sistem de operare Windows. Este un sistem de operare complet în sine, cu propria sa structură de foldere și aplicații instalate. Dacă instalați Node cu programul de instalare Windows, tastarea node în Linux va eșua, deoarece Node nu este instalat în Linux. Este instalat pe Windows.

Adevărata magie a WSL, totuși, constă în modul în care conectează perfect Windows și Linux, astfel încât acestea să apară ca un singur sistem de fișiere pe computer.

Navigare în fișiere și foldere

În mod implicit, terminalul Ubuntu vă plasează în directorul dvs. de pornire Linux (sau /home/your-user-name ). Puteți trece pe partea Windows accesând /mnt/c .

Terminalul Ubuntu cu conținutul pentru unitatea C listat
(Previzualizare mare)

Observați că unele permisiuni sunt refuzate aici. Ar trebui să dau clic dreapta pe pictograma Ubuntu și să dau clic pe „Run ca administrator” pentru a avea acces la aceste fișiere. Așa face Windows permisiuni ridicate. Nu există sudo pe Windows.

Lansarea aplicațiilor

Puteți lansa orice aplicație Windows din terminalul Ubuntu. De exemplu, pot deschide Windows Explorer din terminalul Unbuntu.

Windows Explorer și terminalul Ubuntu
(Previzualizare mare)

Acest lucru funcționează și invers. Puteți executa orice aplicație instalată pe partea Linux. Aici execut „fortune” instalat în Linux din linia de comandă Windows. (Pentru că nu este o instalare Linux corectă fără averi aleatorii, fără sens.)

Linia de comandă Windows care execută programul „norocul” Linux
(Previzualizare mare)

Două sisteme de operare diferite. Două sisteme de fișiere diferite. Două seturi diferite de aplicații instalate. Vedeți cum ar putea deveni confuz?

Pentru a menține totul corect, vă recomand să păstrați toate fișierele și instrumentele de dezvoltare JavaScript instalate pe partea Linux. Acestea fiind spuse, capacitatea de a vă deplasa între Windows și Linux și de a accesa fișiere de pe ambele sisteme este magia de bază a WSL. Nu uitați, pentru că este ceea ce face ca întreaga configurație să fie mai bună decât o simplă cutie Linux standard.

Configurarea mediului de dezvoltare

De aici încolo, am să vă ofer o listă de articole cu păreri de părere despre ceea ce cred că face un Linux ucigaș pe configurarea Windows. Nu uitați: părerile mele sunt doar atât. Opinii . Se întâmplă că, la fel ca toate opiniile mele, sunt 100% corecte.

Obținerea unui terminal mai bun

Da, ai un terminal când ai instalat Ubuntu. Este de fapt consola Windows conectată la distribuția dvs. Linux. Nu este o consolă rea. Îl puteți redimensiona, activați copierea/lipirea (în setări). Dar nu puteți face lucruri precum file sau deschide ferestre noi. La fel cum mulți oameni folosesc programe terminale de înlocuire pe Mac (eu folosesc Hyper), există și alte opțiuni pentru Windows. Lista Awesome WSL de pe Github conține o listă destul de exhaustivă.

Aceștia sunt toți emulatori buni, dar există o nouă opțiune creată de oameni care cunosc destul de bine Windows.

Microsoft a lucrat la o nouă aplicație numită „Windows Terminal”.

Elementul Windows Terminal din Windows Store
(Previzualizare mare)

Terminalul Windows poate fi instalat din Magazinul Windows și este în prezent în modul de previzualizare. Îl folosesc de ceva vreme și are suficiente caracteristici și este suficient de stabil pentru a-i oferi un sprijin complet.

Noul terminal Windows are o interfață completă cu file, copiere/lipire, mai multe profiluri, fundaluri transparente, imagini de fundal - chiar și imagini de fundal transparente. Este o zi de teren dacă vă place să vă personalizați terminalul și am venit să câștig această cursă de sac.

Iată terminalul meu actual. Vom face o plimbare prin câteva dintre modificările importante aici.

Terminalul actual al autorului: fundal albastru închis cu o planetă de desene animate în colțul din dreapta jos. Text verde și alb.
(Previzualizare mare)

Terminalul Windows este destul de personalizabil. Făcând clic pe săgeata „ ” din stânga sus (lângă semnul „ + ”), vă oferă acces la „Setări”. Aceasta va deschide un fișier JSON.

Legați Copiere/Lipire

În partea de sus a fișierului sunt toate legăturile de taste. Primul lucru pe care l-am făcut a fost mapa „copiere” în Ctrl + C și lipire în Ctrl + V. Cum altfel o să copiez și să inserez comenzi din Stack Overflow pe care nu le înțeleg?

 { "command": "copy", "keys": ["ctrl+c"] }, { "command": "paste", "keys": ["ctrl+v"] },

Problema este că Ctrl + C este deja mapat la SIGINT sau la comanda Interrupt/kill pe Linux. Există o mulțime de terminale pentru Windows care se ocupă de acest lucru prin maparea Copiilor/Lipirii la Ctrl + Shift + C și, respectiv, Ctrl + Shift + V. Problema este că copierea/lipirea este Ctrl + C / Ctrl + V în orice alt loc în Windows. Am tot apăsat Ctrl + C în terminal iar și iar încercând să copiez lucrurile. Nu m-am putut opri din a face asta.

Terminalul Windows gestionează acest lucru diferit. Dacă aveți text evidențiat și apăsați Ctrl + C , acesta va copia textul. Dacă există un proces care rulează, acesta încă trimite comanda SIGINT și o întrerupe. Înseamnă că puteți mapa în siguranță Ctrl + C / Ctrl + V pentru a copia/lipi în terminalul Windows și nu va interfera cu capacitatea dvs. de a întrerupe procesele.

Cine a crezut că Copy/Paste poate provoca atât de multă durere?

Schimbați profilul implicit

Profilul implicit este ceea ce apare atunci când o filă nouă este deschisă. În mod implicit, acesta este Powershell. Veți dori să derulați în jos și să găsiți profilul Linux. Acesta este cel care deschide wsl.exe -d Ubuntu . Copiați GUID-ul său și inserați-l în setarea defaultProfile .

Am mutat aceste două setări, astfel încât să fie unul lângă celălalt pentru a fi mai ușor de văzut:

Profilul implicit de terminal evidențiat în fișierul settings.json
(Previzualizare mare)

Setați Fundalul

Îmi place ca fundalul meu să fie de culoare solidă închisă, cu un logo plat în colțul din dreapta. Fac asta pentru că vreau ca sigla să fie strălucitoare și vizibilă, dar nu în modul text. Pe acesta l-am făcut singur, dar există o colecție grozavă de imagini plate din care să o alegeți la Simple Desktops.

Fundalul este setat cu proprietatea backgroundImage :

 "backgroundImage": "c:/Users/YourUserName/Pictures/earth.png" 
O imagine pătrată albastră cu o planetă de desene animate în colțul din dreapta jos
(Previzualizare mare)

Veți observa și o setare numită „acrilic”. Acesta este ceea ce vă permite să reglați opacitatea fundalului. Dacă aveți o culoare de fundal solidă, aceasta este destul de simplă.

 "background": "#336699", "useAcrylic": true, "acrylicOpacity": 0.5 
Terminalul cu fundalul ușor transparent
(Previzualizare mare)

Puteți realiza acest lucru și cu o imagine de fundal, combinând setarea arcylicOpacity cu backgroundImageOpacity :

 "backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png", "useAcrylic": true, "acrylicOpacity": 0.5 
Terminalul cu atât o imagine transparentă, cât și un fundal transparent
(Previzualizare mare)

Pentru tema mea, transparența face ca totul să pară dezactivat, așa că păstrez useAcrylic setat la false .

Schimbați Fontul

Echipa care construiește Terminalul Windows lucrează și la un nou font numit „Codul Cascadia”. Nu este disponibil la momentul scrierii acestui articol, așa că obțineți fontul Windows implicit.

Fontul implicit din terminalul Windows este „Consolas”. Acesta este același font pe care îl folosește linia de comandă Windows. Dacă doriți acel sentiment adevărat Ubuntu, Chris Hoffman subliniază cum puteți instala fontul oficial Ubuntu Mono.

Iată un înainte și după, astfel încât să puteți vedea diferența:

 "fontFace": "Ubuntu Mono" 
O comparație alăturată a fonturilor Consolas și Unbuntu Mono din terminal
(Previzualizare mare)

Arata destul de asemanator; diferența principală constă în distanța dintre Ubuntu Mono, ceea ce face ca terminalul să fie puțin mai strâns și mai curat.

Scheme de culori

Schemele de culori sunt toate situate în partea de jos a fișierului de setări. Am copiat schema de culori „Campbell” ca linie de bază. Încerc să potrivesc culorile cu numele lor, dar nici nu mi-e frică să devin necinstiți. Voi mapa „#ffffff” cu „albastru” - nici măcar nu-mi pasă.

Setările pentru schema de culori din fișierul settings.json
(Previzualizare mare)

Dacă vă place această schemă specială pe care am numit-o „Pământ”, am adunat această idee, astfel încât să nu trebuiască să copiați manual toată această mizerie dintr-o captură de ecran.

Notă : previzualizările culorilor vin în virtutea extensiei „Evidențiere culori” pentru VS Code.

Schimbați directorul de pornire implicit

În mod implicit, profilul WSL vă plasează în directorul dvs. de acasă din partea Windows. Pe baza configurației pe care o recomand în acest articol, ar fi de preferat să fie plasat în folderul home Linux. Pentru a face asta, modificați setarea startingDirectory din profilul dvs. „Ubuntu”:

 "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\burkeholland"

Observați drumul de acolo. Puteți folosi această cale (fără barele oblice suplimentare) pentru a accesa WSL din linia de comandă Windows.

O comandă „dir” rulează în directorul principal Linux din linia de comandă Windows
(Previzualizare mare)

Instalați Zsh/Oh-My-Zsh

Dacă nu ai mai folosit niciodată Zsh și Oh-My-Zsh, ești cu adevărat răsfățat. Zsh (sau „Z Shell”) este un shell de înlocuire pentru Linux. Acesta extinde capacitățile de bază ale lui Bash, inclusiv schimbarea implicită a directorului (nu este nevoie să tastați cd ), suport pentru tematică mai bună, solicitări mai bune și multe altele.

Pentru a instala Zsh, luați-l cu managerul de pachete apt, care vine din cutie odată cu instalarea dvs. Linux:

 sudo apt install zsh

Instalați oh-my-zsh folosind curl. Oh-my-zsh este un set de configurații pentru zsh care îmbunătățesc experiența shell-ului și mai mult cu pluginuri, teme și o multitudine de comenzi rapide de la tastatură.

 sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Apoi vă va întreba dacă doriți să schimbați shell-ul implicit în Zsh. Da, așa că răspundeți afirmativ și acum sunteți în funcțiune cu Zsh și Oh-My-Zsh.

Terminalul vă întreabă dacă doriți să schimbați shell-ul implicit
(Previzualizare mare)

Veți observa că promptul este mult mai curat acum. Puteți schimba aspectul acelui prompt schimbând tema în fișierul ~/.zshrc .

Deschideți-l cu nano , care este un fel de VIM, dar puteți edita lucrurile și puteți ieși când este necesar.

 nano ~/.zshrc

Schimbați linia care stabilește tema. Există o adresă URL deasupra ei cu o listă întreagă de teme. Cred că cel din „nor” este drăguț. Si draguta.

Tema „nor” este setată în fișierul zshrc
(Previzualizare mare)

Pentru a obține modificări ale .zshrc , va trebui să îl găsiți:

 source ~/.zshrc 
Solicitarea temei „nor”.
(Previzualizare mare)

Notă : Dacă alegeți o temă precum „agnoster” care necesită glife, veți avea nevoie de o versiune powerline a Ubuntu Mono care are... glife. În caz contrar, terminalul tău va fi plin de caractere ciudate, cum ți-ai zdrobit fața pe tastatură. Nerd Fonts oferă unul care pare să funcționeze destul de bine.

Acum puteți face lucruri precum schimbarea directoarelor doar introducând numele directorului. Nu este nevoie cd . Vrei să mergi înapoi la un director? Fă doar o .. Nici măcar nu trebuie să tastați numele întregului director, doar introduceți primele litere și apăsați pe tab. Zsh vă va oferi o listă cu toate fișierele/directoarele care se potrivesc căutării dvs. și le puteți parcurge.

Terminalul cu una dintre multele căi evidențiate
(Previzualizare mare)

Instalarea Node

În calitate de dezvoltator web, probabil că veți dori să instalați Node. Presupun că nu trebuie să instalați Node pentru a face dezvoltare web, dar cu siguranță se simte ca în 2019!

Primul tău instinct ar putea fi să instalezi node cu apt , ceea ce poți face, dar ai regreta din două motive:

  1. Versiunea Node pe apt este dureros de veche;
  2. Ar trebui să instalați Node cu un manager de versiuni, astfel încât să nu întâmpinați probleme de permisiuni.

Cea mai bună modalitate de a rezolva ambele probleme este să instalați nvm (Manager de versiune a nodului). Deoarece ați instalat zsh , puteți doar să adăugați pluginul nvm în fișierul dvs. zshrc, iar zsh se ocupă de restul.

Mai întâi, instalați pluginul prin clonarea în zsh-nvm . (Nu vă faceți griji, Git vine standard la instalarea Ubuntu.)

 git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm

Apoi adăugați-l ca plugin în fișierul ~/.zshrc .

 `nano ~/.zshrc` plugins (zsh-nvm git) 
Fișierul zshrc cu pluginul zsh-vnm-a adăugat
(Previzualizare mare)

Nu uitați să găsiți din nou fișierul zshrc cu source ~/.zshrc și veți vedea instalarea nvm.

Terminalul care arată progresul instalării nvm
(Previzualizare mare)

Acum puteți instala node cu nvm. Facilitează instalarea mai multor versiuni alăturate de nod și comutarea între ele fără efort. De asemenea, nu există erori de permisiuni atunci când faceți instalări globale npm!

 nvm install --lts

Recomand acest lucru peste instalarea standard nvm, deoarece pluginul vă oferă posibilitatea de a actualiza cu ușurință nvm. Aceasta este un fel de durere cu instalarea standard „curl”. Este o singură comandă cu pluginul.

 nvm upgrade

Utilizați sugestiile automate

Unul dintre pluginurile mele preferate pentru zsh este zsh-autosuggestions. Își amintește lucrurile pe care le-ați introdus în terminal înainte și apoi le recunoaște când începeți să le introduceți din nou, precum și „sugerează automat” linia de care ați putea avea nevoie. Acest plugin a fost util de mai multe ori decât îmi amintesc - mai ales când vine vorba de comenzi lungi CLI pe care le-am folosit în trecut, dar nu mi le-am amintit niciodată.

Clonează depozitul în folderul cu extensii zsh:

 git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

Apoi adăugați-l la pluginurile dvs. zsh și sursă fișierul zshrc:

 nano ~/.zshrc # In the .zshrc file plugins(zsh-nvm zsh-autosuggestions git) source ~/.zshrc

Plugin-ul vă citește istoricul zsh, așa că începeți să introduceți o comandă pe care ați tastat-o ​​înainte și urmăriți magia. Încercați să introduceți prima parte a comenzii lungi de clonare de mai sus.

Terminalul care arată autosugestii zsh completând automat o comandă git clone
(Previzualizare mare)

Dacă apăsați , comanda va completa automat. Dacă apăsați în continuare pe , va parcurge oricare dintre comenzile din istoricul dvs. care ar putea fi potrivite.

Comenzi rapide importante de la tastatură

Există câteva comenzi rapide la terminale pe care le folosesc tot timpul. Găsesc asta cu toate instrumentele mele, inclusiv VS Code. Încercarea de a învăța toate comenzile rapide este o pierdere de timp, deoarece nu le vei folosi suficient pentru a le aminti.

Iată câteva pe care le folosesc în mod regulat:

Comandă rapidă la terminal Ce face?
Ctrl + L Acest lucru șterge terminalul și te aduce înapoi în vârf. Este echivalentul cu tastarea „clear”.
Ctrl + U Acest lucru șterge doar linia curentă.
Ctrl + A Trimite cursorul la începutul liniei de comandă.
Ctrl + E Deplasați-vă la sfârșitul liniei.
Ctrl + K Ștergeți toate caracterele de după cursor.

Asta e! Probabil că am învățat și apoi am uitat orice altceva, pentru că nu-mi folosește niciodată.

Configurarea Git(Hub/Lab/Whatevs)

Git vine pe Ubuntu, deci nu este necesară instalarea. Puteți urma instrucțiunile de la hoster-ul de control sursă ales pentru a crea cheile ssh și a funcționa.

Rețineți că în instrucțiunile Github, vă spune să utilizați utilitarul „copiere” pentru a copia cheia ssh. Ubuntu are comanda „xcopy”, dar nu va funcționa aici, deoarece nu există interoperabilitate între Linux și Windows în ceea ce privește clipboard-ul.

În schimb, puteți utiliza doar executabilul Windows Clipboard și îl puteți apela direct de la terminal. Mai întâi trebuie să obțineți textul cu cat , apoi să îl trimiteți în clipboard-ul Windows.

 cat ~/.ssh/id_rsa.pub | clip.exe

Documentele Github vă spun să vă asigurați că ssh-agent rulează. Nu este. Veți vedea acest lucru când încercați să adăugați cheia la agent:

Terminalul care arată că agentul ssh nu rulează
(Previzualizare mare)

Puteți porni agentul, dar data viitoare când reporniți Windows sau WSL-ul este oprit, va trebui să îl porniți din nou. Acest lucru se datorează faptului că nu există un sistem de inițializare în WSL. Nu există systemd sau alt proces care să pornească toate serviciile dvs. când pornește WSL. WSL este încă în previzualizare, iar echipa lucrează la o soluție pentru aceasta.

Între timp, crezi sau nu, există și un plugin zsh pentru asta. Se numește ssh-agent și vine instalat cu oh-my-zsh, așa că tot ce trebuie să faci este să-l faci referire în fișierul .zshrc .

 zsh-nvm zsh-autosuggestions ssh-agent git

Acest lucru va porni automat ssh-agent dacă nu rulează prima dată când porniți WSL. Dezavantajul este că îți va cere expresia de acces de fiecare dată când WSL este pornit din nou. Asta înseamnă în esență oricând reporniți computerul.

Terminalul care solicită fraza de acces pentru cheia rsa
(Previzualizare mare)

Cod VS și WSL

WSL nu are GUI, așa că nu puteți instala un instrument vizual precum VS Code. Acesta trebuie instalat pe partea Windows. Acest lucru prezintă o problemă, deoarece aveți un program care rulează pe partea Windows care accesează fișiere pe partea Linux și acest lucru poate duce la tot felul de ciudatenii și probleme de „permisiune refuzată”. Ca regulă generală, Microsoft recomandă să nu modificați fișierele din partea WSL cu programe Windows.

Pentru a rezolva acest lucru, există o extensie pentru VS Code numită „WSL la distanță”. Această extensie este realizată de Microsoft și vă permite să vă dezvoltați în cadrul WSL, dar din interiorul VS Code.

Odată ce extensia este instalată, puteți atașa VS Code direct pe partea Ubuntu, deschizând paleta de comandă ( Ctrl + Shift + P ) și selectați „Remote-WSL: New Window”.

Cod VS cu comanda „WSL la distanță: fereastră nouă” evidențiată în paleta de comenzi
(Previzualizare mare)

Aceasta deschide o nouă instanță a VS Code care vă permite să lucrați ca și cum ați fi pe deplin pe partea Linux. Făcând „Fișier/Deschidere” se răsfoiește sistemul de fișiere Ubuntu în loc de cel Windows.

Vizualizarea „Deschideți fișierul” VS Code
(Previzualizare mare)

Terminalul integrat în VS Code deschide configurația zsh frumos personalizată. Totul „funcționează” așa cum ar trebui atunci când aveți instalată extensia Remote WSL.

Dacă deschideți codul de pe terminalul dvs. cu code . , VS Code va detecta automat că a fost deschis din WSL și va atașa automat extensia WSL la distanță.

Extensii VS Code cu WSL la distanță

Extensia Remote WSL pentru VS Code funcționează prin configurarea unui mic server pe partea Linux și apoi conectarea la acesta din VS Code pe partea Windows. Așa fiind, extensiile pe care le-ați instalat în VS Code nu vor apărea automat când deschideți un proiect din WSL.

De exemplu, am un proiect Vue deschis în VS Code. Chiar dacă am toate extensiile Vue potrivite instalate pentru evidențierea sintaxelor, formatarea și altele asemenea, VS Code se comportă ca și cum nu s-ar fi văzut niciodată un fișier .vue înainte.

Un fișier .vue deschis în VS Code fără evidențiere de sintaxă
(Previzualizare mare)

Toate extensiile pe care le-ați instalat pot fi activate în WSL. Doar găsiți extensia pe care o doriți în WSL și faceți clic pe butonul „Instalare în WSL”.

Pagina de destinație a extensiei Vetur VS Code în VS Code
(Previzualizare mare)

Toate extensiile instalate în WSL vor apărea în propria lor secțiune în vizualizarea Extensions Explorer. Dacă aveți o mulțime de extensii, ar putea fi ușor enervant să le instalați pe fiecare în parte. Dacă doriți să instalați doar fiecare extensie pe care o aveți în WSL, faceți clic pe pictograma mică de descărcare în cloud din partea de sus a secțiunii „Local - Instalat”.

Vizualizarea Extensii în VS Code cu pictograma Instalați toate extensiile în WSL evidențiată
(Previzualizare mare)

Cum să vă configurați directoarele de dezvoltare

Acesta este deja un articol cu ​​opinii, așa că iată unul pe care nu l-ați cerut despre cum cred că ar trebui să vă structurați proiectele pe sistemul dvs. de fișiere.

Îmi păstrez toate proiectele pe partea Linux. Nu îmi pun proiectele în „Documentele mele” și apoi încerc să lucrez cu ele din WSL. Creierul meu nu poate suporta asta.

Creez un folder numit /dev pe care l-am pus în rădăcina folderului meu /home în Linux. În interiorul acelui folder, creez altul cu același nume cu depozitul meu Github: /burkeholland . Acel folder este locul în care merg toate proiectele mele - chiar și cele care nu sunt trimise în Github.

Dacă clonez un repo dintr-un alt cont Github (de exemplu, „microsoft”), voi crea un folder nou în „dev” numit /microsoft . Apoi clonez repo-ul într-un folder din interiorul acestuia.

Practic, immit aceeași structură ca și controlul sursei pe mașina mea locală. Mi se pare mult mai ușor să raționez unde sunt proiectele și la ce repoziții sunt atașate doar în virtutea locației lor. Este simplu, dar este foarte eficient pentru a mă ajuta să țin totul organizat. Și am nevoie de tot ajutorul pe care îl pot obține.

Structura de foldere au părerea autorii listate în terminal
(Previzualizare mare)

Răsfoirea fișierelor din Windows Explorer

Există momente când trebuie să obțineți un fișier în Linux din partea Windows. Lucrul frumos despre WSL este că încă poți face asta.

O modalitate este de a accesa WSL la fel ca o unitate mapată. Accesați-l cu un \\wsl$ direct din bara de explorare:

 \\wsl$ 
Windows Explorer, instalarea Ubuntu ca director montat
(Previzualizare mare)

Ați putea face acest lucru din mai multe motive diferite. De exemplu, chiar astăzi aveam nevoie de o extensie Chrome care nu se află în magazinul web. Așa că am clonat repo-ul în WSL, apoi am navigat la el ca „Extensie dezambalată” și l-am încărcat în Edge.

Un lucru pe care îl fac cu o anumită frecvență în Linux este să deschid directorul care conține un fișier direct din terminal. Puteți face acest lucru și în WSL, apelând direct explorer.exe . De exemplu, această comandă deschide directorul curent în Windows Explorer.

 $ explorer.exe . 
Un GIF care demonstrează deschiderea exploratorului Windows în directorul curent din terminal

Această comandă este însă puțin greoaie. Pe Linux, este doar open . . Putem face aceeași magie creând un alias în ~/.zshrc .

 alias open="explorer.exe"

Docher

Când am spus că toate instrumentele ar trebui să fie pe partea Linux, am vrut să spun asta. Asta include Docker.

Aici cauciucul chiar începe să se întâlnească cu drumul. Ceea ce avem nevoie aici este Docker, care rulează în interiorul Linux care rulează în interiorul Windows. Este un pic o păpușă rusească de cuibărit când o notezi într-o postare pe blog. În realitate, este destul de simplu.

Veți avea nevoie de versiunea corectă de Docker pentru Windows. În momentul scrierii acestui articol, acesta este WSL 2 Tech Preview.

Când rulați programul de instalare, acesta vă va întreba dacă doriți să utilizați containere Windows în loc de containere Linux. Cu siguranță o faci. În caz contrar, nu veți primi opțiunea de a rula Docker în WSL.

Ecranul de instalare Docker cu opțiunea „Utilizați containerele Windows” selectată
(Previzualizare mare)

Acum puteți activa Docker în WSL făcând clic pe elementul din bara de sistem și selectând „WSL 2 Tech Preview”:

Opțiunea de previzualizare WSL2 Tech din meniul contextual Docker Daemon
(Previzualizare mare)

După ce porniți serviciul, puteți utiliza Docker în WSL așa cum v-ați aștepta să faceți. Rularea Docker în WSL oferă o creștere destul de mare a performanței, precum și o creștere a timpului de pornire la rece a containerelor.

Aș putea să vă recomand și să instalați extensia Docker pentru VS Code? Acesta pune o interfață vizuală în configurația dvs. Docker și, în general, face mai ușor să lucrați cu Docker, deoarece nu trebuie să vă amintiți toate acele steaguri și opțiuni din linia de comandă.

Obțineți mai mult Bash pe Windows

În acest moment, ar trebui să vă faceți o idee despre cum să puneți Bash pe Windows și cum funcționează odată ce îl obțineți acolo. Îți poți personaliza terminalul la nesfârșit și există tot felul de programe rad pe care le poți adăuga pentru a face lucruri precum setarea automată a variabilelor PATH, crearea de aliasuri, obținerea unei vaca ASCII în terminalul tău și multe altele.

Rularea Bash pe Windows mi-a deschis un univers complet nou. Sunt capabil să combin Windows, pe care îl iubesc din punct de vedere al productivității, și Linux de care depind ca dezvoltator. Cel mai bun lucru este că acum pot crea aplicații pentru ambele platforme cu o singură mașină.

Lectură suplimentară

Puteți citi mai multe despre Bash pe Windows aici:

  • „Ghid de instalare subsistem Windows pentru Linux pentru Windows 10”, Microsoft Docs
  • „Cum se instalează și se folosește Bash Shell pe Windows 10”, Chris Hoffman, How-To Geek
  • „Partajarea SSH cu WSL”, Drew Wilson
  • „Înnebunesc cu subsistemul ferestre pentru Linux”, Brian Ketelsen
  • „Tot ce poți face cu noul Bash Shell din Windows 10”, Chris Hoffman, How-To Geek

Mulțumiri speciale lui Brian Ketelsen, Matt Hernandez, Rich Turner și Craig Loewen pentru răbdare, ajutor și îndrumări cu acest articol.