Strumenti a riga di comando di Windows

Come sviluppatori che trascorrono la maggior parte del nostro tempo a programmare su OSX e Linux, eravamo curiosi di sapere come potrebbe essere una moderna configurazione a riga di comando su Windows.

Un sondaggio per sviluppatori di StackOverflow ci ha ricordato che ci sono più sviluppatori che utilizzano Windows rispetto a qualsiasi altro sistema operativo, quindi eravamo curiosi di sapere se gli strumenti fossero alla pari con quelli a cui eravamo abituati in *nix land.

Dopo aver dedicato un po' di tempo a valutare il panorama degli strumenti per l'interfaccia a riga di comando di Windows, abbiamo optato per un insieme di strumenti che riteniamo ci consentano di raggiungere il 95% del percorso.

In fin dei conti, abbiamo ottenuto una combinazione di:

  • PowerShell
  • ConEmu
  • PSReadLine
  • PSGet
  • Cioccolata
  • Babun (facoltativo)

Continua a leggere per leggere ulteriori note sulle caratteristiche di questi macchinari.

PowerShell (shell)

  • Significativamente più vicino a una vera "shell" di cmd.exe, poiché ci offre un potente ambiente di script per l'automazione delle attività. È corretto confrontarlo con Bash o zsh.
  • Completamento automatico di directory e nomi file
  • Completamento automatico dei nomi delle applicazioni
  • Dispone di alias e comandi integrati (chiamati Cmdlet, ad esempio Select-String è simile a grep, Invoke-Elevated è simile a sudo, Sort-Object è simile a sort, Get-Process elenca tutti i processi attivi). Se passi da un'altra shell a PS, Set-Alias ti consente di mappare gli alias a cui sei abituato. Ad esempio: Set-Alias server python -m http.server 8000 avvia un server Python quando viene utilizzato l'alias server.
  • Gli alias possono essere salvati in modo permanente in un profilo PowerShell
  • Supporta le tubazioni, come Unix. A differenza di Unix, esegue la pipe degli oggetti anziché gli stream di testo. È necessario abituarsi a questo approccio, ma evitare di ripetere l'analisi quando si vuole ottenere una proprietà.
  • Supporta i moduli. PSGet è un gestore di pacchetti per PowerShell che consente di estenderlo facilmente.
  • Facoltativamente, prendi in considerazione Posh-Git, uno script PowerShell per git per ottenere il completamento contestuale della scheda.

Se ti interessa approfondire l'argomento, ecco una risposta sul motivo per cui MS ha creato PowerShell dall'architect lead.

PSReadLine (supporti per la modifica della console)

  • Migliora notevolmente l'esperienza di modifica nella console
  • Evidenziazione della sintassi ogni volta che inizi a digitare i comandi. Indica chiaramente gli errori di sintassi con un carattere ">" rosso.
  • Associazioni di tasti altamente personalizzabili
  • Completamento automatico in stile Bash
  • Ricerca interattiva nella cronologia Bash/zsh (Ctrl + R). Potente anche per l'attraversamento della cronologia dei comandi. Visualizza facilmente i comandi multilinea precedenti utilizzando i tasti freccia anziché solo l'ultima riga del comando.
  • Supporto corretto per copia/incolla/taglia (Ctrl + C/X/V dovrebbe funzionare correttamente)
  • Ottimo supporto per le operazioni di annullamento e ripetizione
  • Il salvataggio della cronologia è automatico

In alternativa, puoi utilizzare Clink, che ha un insieme di funzionalità simile ma non è stato scritto esclusivamente per PowerShell.

ConEmu (host della console)

  • Un emulatore di console avanzato in cui puoi eseguire la shell che preferisci.
  • Supporta l'apertura di più terminali in schede diverse. Rende banale avviare terminali come utenti diversi.
  • Estremamente personalizzabile: è possibile modificare qualsiasi cosa, dalle scorciatoie alla selezione del testo e ai colori della barra di stato.
  • Supporta la visualizzazione a schermo diviso
  • Le semplici app GUI possono essere eseguite in schede
  • Supporto per Jump List in Windows 7 e versioni successive
  • Supporta il ridimensionamento delle finestre fluido
  • Anti-aliasing carattere Windows
  • Le schede iniziali possono essere completamente personalizzate in modo che inizino in una determinata directory
  • Copia/incolla intelligente

Alcune persone apprezzano ancora Console2 e Scott Hanselman ha scritto un post del blog in merito.

Cmda

Vale la pena ricordare Cmder, un pacchetto di emulazione della console che combina ConEmu, Clink e msysgit, offrendoti aiutanti Git. In pratica, Cmder offre un'esperienza più piacevole con ConEmu per impostazione predefinita grazie alla sua combinazione di colori Monokai.

Cmder include anche alcuni altri piccoli vantaggi, come l'integrazione con le app GUI come Sublime Text.

Cioccolato (gestore di pacchetti)

  • In pratica homebrew per Windows, ti consente di scaricare comodamente le tue app Windows preferite. Al momento sono disponibili circa 3000 pacchetti che possono essere aggiornati direttamente utilizzando cioccolato.
  • Differisce da Nuget. NuGet è destinato alle librerie di sviluppo. Chocolatey è un gestore di pacchetti di macchine binarie ed è basato sull'infrastruttura NuGet.
  • Offre build silenziose in modo efficace

Ti potrebbe anche interessare conoscere OneGet, il gestore di pacchetti di Microsoft..manager, che dovrebbe funzionare con cioccolato in Windows 10.

Babun (Cygwin preconfigurato)

  • Cygwin (l'env simile a Linux per Windows) meno alcune delle peculiarità storicamente note. Utilizzando il programma di installazione Babun, la configurazione generale è molto più semplice. Se hai una particolare esperienza con Unix e preferisci evitare di imparare a utilizzare PowerShell, vale la pena di prendere in considerazione cygwin/Babun.
  • Include un gestore di pacchetti chiamato pact (un po' simile a brew) simile a apt-get. Questo è un grosso problema, in quanto al momento devi eseguire nuovamente il programma di installazione di Cygwin quando aggiungi i pacchetti invece di usare pact.
  • Vim preinstallato e preconfigurato
  • Supporto integrato per oh-my-zsh
  • Aggiornamenti automatici

Per approfondire