Scopri la potenza di Bash su Windows

Microsoft Windows può essere il giocatore dominante sul desktop, ma il mercato del software open source in rapida crescita, specialmente per gli strumenti di amministrazione e sviluppo, favorisce chiaramente Linux. Per non parlare del mercato mobile, dove Android utilizza varianti Linux. Se sei uno sviluppatore su Windows, il ritmo del tamburo per passare alle funzionalità di Linux diventa sempre più forte.

Nel corso degli anni, Microsoft ha introdotto varie soluzioni alternative per l'utilizzo delle funzionalità di Linux su Windows, come PowerShell con SSH e Cygwin e MSYS. L'esecuzione di Linux all'interno di una macchina virtuale è un'altra opzione. Ma le VM consumano una quantità significativa di risorse e non forniscono un'esperienza Linux di prima classe, poiché non è possibile modificare i file locali o ottenere l'accesso completo alle unità locali, ad esempio.

Mentre il mondo IT si sta orientando verso Linux per molti progetti, Microsoft ha ideato una nuova offerta per attingere a questo mercato in crescita. Bash su Windows è la risposta. Qui ti guidiamo attraverso l'installazione di Bash su Windows e ti diamo un assaggio di cosa puoi fare e perché dovresti farlo dalla riga di comando di Linux.

Una panoramica di Bash su Windows

Bash su Windows è una nuova funzionalità aggiunta a Windows 10. Microsoft ha collaborato con Canonical, ovvero i creatori di Ubuntu Linux, per creare questa nuova infrastruttura all'interno di Windows chiamata Windows Subsystem for Linux (WSL). Consente agli sviluppatori di accedere a un set completo di CLI e utilità di Ubuntu. Con un'esperienza Linux nativa, gli sviluppatori possono eseguire comandi Linux su Windows, incluso l'accesso a file e unità locali. Poiché Linux è integrato in modo nativo in Windows, gli sviluppatori hanno la flessibilità di lavorare sullo stesso file in Linux e Windows. In poche parole, Bash su Windows porta il territorio utente di Ubuntu su Windows meno il kernel Linux.

Bash contro PowerShell

Microsoft ha già una shell dei comandi in PowerShell. Quindi in cosa differisce Bash su Windows? PowerShell è il framework di gestione della configurazione di Microsoft per l'automazione delle attività. Viene utilizzato per gestire Windows con la sua architettura orientata alle API. Bash, d'altra parte, si basa principalmente su file di testo per l'automazione e lo sviluppo. I due differiscono per focus e design. Ad esempio, quando elenchi i file in una directory utilizzando il lscomando, PowerShell visualizza l'output come oggetti file, mentre Bash su Windows visualizza l'output come un insieme di stringhe. Per fortuna, per gli amministratori di Windows, puoi lavorare con entrambe le soluzioni fianco a fianco e ottenere il meglio da entrambi i mondi.

Una parola di cautela: PowerShell ha alias che ti consentono di pensare di eseguire i comandi Bash tradizionali quando, in realtà, stai eseguendo cmdlet di PowerShell. Questo potrebbe far inciampare alcune persone. Ad esempio, lsè un alias per il Get-ChildItemcomando. Allo stesso modo, pwdè un alias per Get-Locationed cdè un alias per Set-Location. Per un elenco di tutti gli alias in PowerShell, utilizzare il Get-Aliascmdlet.

Bash su Windows offre molteplici vantaggi agli sviluppatori open source. Portando le funzionalità Linux native su Windows, Bash su Windows elimina la necessità di eseguire il dual boot con Ubuntu per accedere alle funzionalità Linux. Non è necessario utilizzare Mac OS X, eseguire una macchina virtuale o creare soluzioni alternative utilizzando Cygwin. Fornisce il set di strumenti necessario per scrivere e creare codice per i tuoi scenari e piattaforme. Accedendo al file system di Windows da Bash, è possibile lavorare sugli stessi file utilizzando Windows o la CLI di Linux.

In che modo Microsoft ha portato Bash su Windows?

Alla Build Conference di aprile 2016, Microsoft ha annunciato il sottosistema Windows per Linux (WSL) con sorpresa di molti. Nato da una partnership con Canonical, Bash su Windows è stato fornito per la prima volta con Windows 10 Anniversary Update. È disponibile in due parti: il sottosistema principale e un pacchetto. Il sottosistema di base fa già parte di Windows 10 Insider Builds e offre l'API Linux su Windows, il che significa che puoi caricare in modo nativo le librerie e gli eseguibili Linux. Canonical fornisce il pacchetto software come opzione. Questo pacchetto software offre gli strumenti Bash e CLI necessari per l'ambiente Linux.

Installazione di Bash

Per eseguire Bash su Windows, il sistema deve eseguire l'aggiornamento dell'anniversario di Windows 10 x64 Build 14393 o successivo. Scopri la build digitando winvernella casella di comando.

Se la versione build è inferiore a 14393, non sarai in grado di installare Bash.

Per abilitare Bash su una build supportata, devi prima attivare la modalità sviluppatore. Per farlo, vai su Impostazioni, fai clic su Per sviluppatori e seleziona il pulsante di opzione Modalità sviluppatore. Fatto ciò, ti verrà chiesto di confermare.

Una volta eseguita questa operazione, è necessario abilitare la funzione Sottosistema Windows per Linux. Il modo più semplice per farlo è tramite un cmdlet di PowerShell:

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

Per aprire Bash su Windows, apri il prompt dei comandi, digita bashe accetta il contratto di licenza. Quando Bash viene installato, esegue alcune modifiche al sistema:

  • Viene scaricata un'immagine in modalità utente di Ubuntu.
  • Viene %localappdata%\lxss\ creata una cartella nascosta situata in .
  • Sul desktop viene posizionato un collegamento.

Per eseguire Bash, ora puoi andare al prompt dei comandi o utilizzare l'icona del collegamento sul desktop.

Dopo la corretta installazione di Bash, il sistema chiederà di creare un nome utente e una password Unix. Questo nome utente e password sono per Bash e non sono correlati in alcun modo al tuo ambiente Windows.

Iniziare con i comandi

Una volta in Bash, hai alcuni comandi disponibili per gestire WSL e l'immagine di Ubuntu.

  • lxrun: Per la gestione dell'istanza WSL
  • lxrun/install: Per avviare la procedura di download e installazione
  • lxrun/uninstall: Per disinstallare l'immagine di Ubuntu
  • lxrun/update: Per aggiornare l'indice del pacchetto WSL
  • lxrun/setdefaultuser: Per impostare il Bash predefinito sull'utente Ubuntu

Bash su Windows, ovviamente, ti consente anche di eseguire molti comandi Bash "tradizionali". Per esempio:

  • grep: Per trovare le linee che corrispondono a un motivo
  • sed: Per sostituire una stringa
  • echo: Per visualizzare il valore sullo schermo
  • var=2: Per creare una variabile per $var
  • =!=: Per confrontare piccoli frammenti di testo

Comandi di navigazione

Per la navigazione, puoi anche utilizzare il comando DOS di Windows cdper navigare nella struttura delle cartelle.

  • cd temp: Cambia la directory di lavoro nella cartella denominata temp
  • cd\: Ti porta alla directory principale. Poiché Ubuntu non ha lettere di unità come Windows, la directory principale sarebbe la directory di primo livello.
  • cd..: Porta il prompt di un livello superiore (ovvero, alla directory principale)
  • cd~: Ti porta alla directory home

Tuttavia, cdin PowerShell è leggermente diverso in Bash su Ubuntu. Nell'ambiente WSL, le unità di Windows sono archiviate nella /mntcartella e il nome dell'unità viene utilizzato come sottocartella. Quando si utilizza il cdcomando, è necessario modificare il percorso di conseguenza.

Visualizza comandi

Per controllare il percorso e il contenuto di una directory, i seguenti sono un paio di esempi:

  • pwd: Stampa il percorso o la directory in cui ti trovi sullo schermo
  • ls: Visualizza i file in una directory

Comandi di aiuto

Se si desidera comprendere la funzionalità e i parametri associati a ciascun comando, è manpossibile utilizzare il comando.

Digita man e mostrerà la sinossi dello scopo del comando e dei parametri associati. Questo è simile al helpcomando PowerShell .

Comandi di modifica

Uno dei vantaggi di Bash è che stai lavorando con testo normale. Ciò significa che non devi fare confusione con il registro o le impostazioni del programma. Sia che si desideri modificare la sequenza di avvio o la configurazione del server Web, è sufficiente modificare il file di testo corrispondente. Per eseguire in modo efficiente le attività di modifica, è necessario un buon editor di testo. Bash offre potenti editor per semplificare il tuo lavoro. Alcuni buoni esempi di editor di testo disponibili in Bash sono nanoe vi.

Gestione dei pacchetti in Bash

Dal momento che essenzialmente stai utilizzando Linux, ora hai anche i comandi di gestione dei pacchetti disponibili sotto forma di apt-get. Alcuni esempi:

  • sudo apt-get update: Aggiorna l'elenco dei repository da cui eseguire il pull
  • sudo apt-get upgrade: Aggiorna tutto il software all'ultima versione
  • apt-cache search app_name: Cerca nel repository una particolare app
  • sudo apt-get install apt-name: Scarica e installa la particolare app

sudoè anteposto a tutti i comandi per consentire di eseguire un comando con un utente diverso, il superutente (o amministratore) come impostazione predefinita. È simile alla tecnica "Esegui come amministratore" in Windows.

Comandi di rete

Per scaricare file tramite HTTP da un server o da un URL, ora puoi utilizzare il curlcomando. Questo comando è simile al Invoke-WebRequestcmdlet di PowerShell .

Allo stesso modo, puoi connetterti a un altro computer Linux remoto ed eseguire comandi su di esso. Dato che ora siamo in Linux, abbiamo finalmente un vero client SSH con cui lavorare. Invece di utilizzare Cygwin o l'attuale beta dell'implementazione di OpenSSH per Windows, ora possiamo eseguire SSH in modo nativo tramite il sshcomando:

ssh nomeutente @ abc.com

Mentre siamo in tema di OpenSSH, ora abbiamo anche la capacità nativa di copiare i file in modo sicuro su SCP utilizzando anche il scpcomando integrato :

scp file locale [email protected]: directory remota / file remoto

Con Bash su Windows, ora hai molte altre funzionalità a portata di mano:

  • Strumenti come Git, Python e Ruby direttamente su Windows
  • Editor della riga di comando come emacs e vi
  • Accesso al file system di Windows dall'ambiente Bash
  • Supporto per utenti Linux
  • Supporto Symlink
  • Montaggio a magazzino tramite /mnt

Quali sono i casi d'uso comuni per Bash su Windows?

Attualmente, molti sviluppatori utilizzano strumenti Windows e Linux, il che significa che devono eseguire il dual-boot o eseguire Linux all'interno di una macchina virtuale per ottenere le funzionalità della CLI. Quando possono eseguire questi strumenti in Windows, Windows diventa il loro desktop principale. In tal caso, non è necessario eseguire il porting di app e servizi Linux su sistemi Windows. Mentre alcune persone sono state in grado di eseguire app GUI Linux all'interno di Windows, molte persone ottengono una pratica CLI Linux per eseguire semplici attività senza acquistare una macchina Linux dedicata da Azure o passare a un dispositivo Mac per scopi semplici. Poiché lo scripting è facile su Bash, puoi automatizzare le attività di sviluppo come il backup di siti Web in Apache.

Ad esempio, molti sviluppatori utilizzano GitHub per attività di controllo della versione. Per accedere a GitHub su Windows, devi installare GitHub per Windows, quindi utilizzare i comandi commit e push per eseguire il commit delle modifiche. In alternativa, devi scaricare l'utility Git, che è un processo noioso. Con Bash su Windows, il tuo lavoro diventa semplice:

apt-get install git

git commit

git push

Inoltre, in Bash, non è necessario alcuno strumento di terze parti per lavorare con i tipi di file Linux tradizionali come i tarball GZIP (file tar.gz).

Quali sono gli svantaggi dell'utilizzo di Bash su Windows?

Bash su Windows è ancora in beta e contiene alcuni spigoli. Microsoft afferma che Bash su Windows potrebbe non eseguire perfettamente tutti i tuoi script in questo momento. Tuttavia, Microsoft sta monitorando attentamente le prestazioni e il feedback e sta apportando modifiche proattive a questa soluzione.

In secondo luogo, Bash su Windows è stato creato per la comunità di sviluppo. Non è stato progettato per la gestione di ambienti Windows. Sebbene sia possibile eseguire operazioni come eseguire daemon del server in WSL, non offre le funzionalità complete di una macchina virtuale Linux completa. Se intendi eseguire processi server con carichi di lavoro di produzione su Ubuntu, dovresti cercare altre alternative per eseguire un sistema operativo Linux completo.

Infine, Bash su Windows porta le funzionalità di Linux su Windows. Tuttavia, gli strumenti Linux non saranno in grado di interagire con gli strumenti e le applicazioni di Windows. Ciò significa nessuna funzionalità multipiattaforma a causa delle differenze intrinseche dell'architettura.

Bash su Windows è ancora nella sua fase nascente. Sebbene ci siano alcune limitazioni a questa soluzione, Microsoft sta lavorando intensamente per aggiungere ulteriori funzionalità per eliminare queste differenze e rendere Windows la piattaforma numero 1 per ogni tipo di progetto di sviluppo. Tieni d'occhio questo progetto di Microsoft. Con la nuova posizione di Microsoft nel mondo open source, è sicuro che Bash diventerà un cittadino di prima classe in Windows col passare del tempo.

Articoli Correlati

  • La guida essenziale a PowerShell per Windows, Windows Server ed Exchange
  • 10 script di sicurezza di PowerShell essenziali per gli amministratori di Windows
  • Tutto su provider e moduli di PowerShell
  • Diventa professionista: la guida per utenti esperti di PowerShell