Lunga vita alla linea di comando

30 mag 2015 23:55

_Logo Gli strumenti grafici a disposizione degli sviluppatori sono molti e sempre più evoluti. Alcune attività risultano comunque più efficienti se eseguite tramite linea di comando, modalità che Windows supportava malamente fino all'avvento di potenti strumenti come PowerShell e tool come cmder.

In questo post parlerò di cmder, un tool che rivitalizza la linea di comando di Windows, mentre affronterò il potentissimo PowerShell in un altro articolo. In entrambi i casi si tratta di strumenti spesso sottovalutati dagli sviluppatori (e purtroppo non solo da loro), ma che permettono di aumentare la propria produttività, di automatizzare task ripetitivi e alle volte di trovare soluzioni altrimenti non disponibili tramite i normali tool di amministrazione e sviluppo.

La linea di comando diventa importante nel momento in cui si utilizza Git, che esprime le sue massime potenzialità tramite shell (inoltre la maggior parte delle guide e degli esempi disponibili usa questo metodo). Anche le nuove generazioni di ASP.NET offrono alcuni utili strumenti via linea di comando, quindi facilmente automatizzabili. Vi sono poi tool come Chocolatey o il prossimo OneGet che permettono di automatizzare l’installazione e l’aggiornamento dei pacchetti presenti sulle proprie macchine.

Automatizzare, schedulare, concatenare e ripetere comandi rappresentano le vere potenzialità della linea di comando.

Cmder è un emulatore della console di Windows che unisce molti strumenti nati nella comunità e disponibili come progetti open source. E’ disponibile come applicativo portabile, sia in versione ridotta (circa 7 mb) sia in versione completa (circa 250 mb): quest’ultima include i tool di supporto a Git.

Cmder Console

Se l’avvio fallisce con un messaggio del tipo “The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing from your computer" allora è necessario installare Visual C++ Redistributable for Visual Studio 2015 (64-bit).

Cmder è tecnicamente un terminale che permette l'avvio di più shell, generalmente interpreti a linea di comando come Powershell e cmd.exe. Nulla vieta di avviare altri applicativi: è disponibile ad esempio la guida per integrare Sublime Text. Per chi vuole invece creare un ambiente linux-like è possibile configurare Cygwin, un vasto insieme di strumenti GNU per portare alcune funzionalità di Linux in ambiente Windows. Qui la guida.

All'avvio di una console PowerShell verrà eseguito, per attivare alcune utili configurazioni, lo script profile.ps1 presente nella cartella Vendor. Se l'esecuzione dovesse fallire con l'errore about_Execution_Policies allora dovrete cambiare le policy di esecuzione degli script. La policy di default è permettere l'esecuzione di comandi ma non di script (il comando Get-ExecutionPolicy dovrebbe infatti ritornare Restricted). Per modificare usare set-ExecutionPolicy Unrestricted.

Dietro le quinte Cmeder utilizza una cmd.exe nascosta e le funzionalità di tre progetti completamente integrati:

  • ConEmu: è una console multi scheda con tante funzionalità per rendere la shell più user friendly.
  • Clink: che offre le funzionalità di modifica della linea di comando disponibili in nella shell Bash tipica dei sistemai *nix.
  • Msysgit: che offre in ambiente Windows tutti i comandi del più diffuso sistema di Source Control Management.

L'applicativo è altamente configurabile e permette di definire i task associati all’apertura delle schede. Predefiniti sono i task per cmd.exe e Powershell, che possono essere duplicati e avviati con specifici argomenti. Per PoSH è possibile indicare un proprio script di avvio, come visto con profile.ps1.

Cmder Settings

E’ inoltre possibile definire degli alias tramite il comando alias. Quelli predefiniti si trovano nel file config/alias. Ad esempio:

ls=ls --show-control-chars -F --color $*
clear=cls
e.=explorer .

Nell’ultimo caso basta quindi scrivere e. per far partire il file explorer posizionato sulla cartella corrente.

E’ possibile definire molti shortcut, nonché l’aspetto delle finestre. Nella sezione App Distinct è anche possibile associare ad ogni applicativo specifiche caratteristiche come il colore di sfondo della shell.

Sono supportate le tipiche combinazioni veloci:

  • Ctrl + n: per passare alla scheda in posizione n.
  • Ctrl + Tab: per ciclare tra le tab.
  • Ctrl + w: per chiudere il tab corrente.
  • Ctrl + t: per arpire un nuovo tab.
  • Shift + Alt + n: per aprire rapidamente cmd (1) o PowerShell (2).
  • Alt + Enter: per la modalità a tutto schermo.
  • Right Click: copia il testo presente nella cliboard.
  • Ctrl + r: ricerca nell’history dei comandi.

La selezione con il mouse, una volta completata, copia direttamente negli appunti: una finezza molto utile.

Altre caratteristiche:

  • Supporto al copia e incolla da tastiera
  • Sono disponibili comandi unix del tipo ls, mv, cp, grep, cat (comandi).
  • L'utilizzo di segnali acustici nel testo permettere di ottenere delle notifiche nell'output.
  • E’ possibile avviare una task (ad esempio la shell di PS) con privilegi di amministratore senza uscire da cmder.
  • La configurazione dell’applicazione, sia nell’aspetto sia nelle funzionalità, è facilmente modificabile e condivisibile essendo salvata nelle cartelle dell’applicazione.
  • E' possibile avviare cmder con alcune opzioni, tra cui -k "command", che permettere di avviare il tool, eseguire il comando indicato e lasciare aperta la console.
  • E' possibile cambiare il Code Page (di default è ANSI)
  • E’ possibile includere nel menu di contesto del file explorer la voce “Cmder here” semplicemente eseguendo come amministratore il comando cmder.exe /REGISTER ALL.

Perché preoccuparsi della linea di comando? Naturalmente PowerShell ha migliorato decisamente l'approccio a linea di comandi in Windows, ma cmder permette di combinare un insieme di strumenti in un'unica console e di utilizzare comandi tipici di altri sistemi come quelle presenti nei sistemi unix like.

Tag: CLI