Tool basati su GUI (Graphic user interface) o strumenti che utilizzano solo la riga di comando (command-line). Negli ultimi anni la comunità degli informatici si è un po’ divisa fra questi due mondi, anche se non mancano gli utenti che padroneggiano entrambe le interfacce di interazione con i sistemi operativi. Da parte loro, invece, le software house hanno iniziato a sviluppare quasi solo applicazioni del tutto gestibili dall’interfaccia grafica del desktop, senza dover più ricorrere all’ormai sempre più nascosto “prompt dei comandi” (Windows) o “terminale” (Linux).
Il passaggio di moda della Command Line Interface (CLI) ha interessato soprattutto gli utenti e gli amministratori di ambienti Microsoft: meno quelli delle varie distribuzioni Linux. Ma come tutti sanno, del resto, Linux si ispira a Unix, un sistema operativo per alcuni decenni utilizzato sui server e sulle workstation delle grandi aziende, istituzioni finanziarie, università, enti di ricerca e compagnie telefoniche, i cui dipendenti erano dotati dei cosiddetti “terminali stupidi” connessi ai mainframe. E in questo contesto, chi sviluppava programmi per i “terminalisti”, o gestiva reti e sistemi, non aveva bisogno di interfacce intuitive come le Gui per interagire con i sistemi operativi tramite la shell (lo strato esterno dell’OS, in cui l’utente può eseguire comandi, al contrario che nel kernel).
Una scomparsa annunciata e smentita
Con la nascita dei personal computer e l’avvento dell’informatica client/server, i produttori di computer e sistemi operativi hanno, negli anni Ottanta e Novanta, sostituito gli schermi neri e le righe di comando con le GUI a finestre. Ma veramente oggi si può dire che la CLI sia superata dai software che permettono di eseguire, più o meno, gli stessi comandi con l’utilizzo combinato di finestre, mouse e tastiera?
Che non si possa affermare così è il fatto che la stessa Microsoft – che da un Windows all’altro ha teso a “nascondere” sempre di più l’accesso al DOS (il suo primo sistema operativo, rimasto ancora integrato in quelli successivi a “finestre”, per l’esecuzione di alcuni comandi shell e il supporto a software legacy ancora diffusi sul mercato) – ha lanciato nel 2006 un programma quale PowerShell. Di che cosa si tratta? PowerShell non è una semplice shell, ma è un vero e proprio environment di scripting. Senza passare da finestre, questo programma permette da una lato di invocare le stesse funzionalità utilizzabili dalla command-line DOS, e dall’altro di scrivere veri e propri script con diversi linguaggi di programmazione, per eseguire azioni, o creare processi, che permettono di interagire in modo più diretto, veloce, profondo e ampio con il sistema operativo della macchina utilizzata e altre risorse sulla rete.
Velocità, controllo e granularità
I primi vantaggi della CLI, in grado di compensare la mancanza di intuitività e di piacevolezza visiva che caratterizzano le GUI, sono quindi la precisione del controllo e l’abilitazione più immediata a scrivere script sofisticati, quali quelli che possono venire utili per gestire le complesse infrastrutture IT di oggi. Quanto alla precisione del controllo, vale la pena ricordare che, in fin dei conti, anche le informazioni e i comandi inseriti nelle tabelle e nelle finestre di dialogo di una GUI si trasformano in script di puro testo. Ma, a differenza degli script mimetizzati dietro le graphic user interface, su quelli digitati nella CLI l’utente può avere un controllo preciso circa quelli che sono i comandi, le variabili, i parametri e le risorse interessate. Questo consente allo sviluppatore o all’amministratore di controllare meglio la granularità e l’estensione (scope) della propria attività. Per contro, per poter far eseguire ai sistemi operativi attività molto diverse l’una dall’altra, un utente che usa la CLI deve conoscere una moltitudine di comandi e parametri differenti, nonché scriverli senza errori. Per questo motivo, i comandi command-line vengono generalmente utilizzati soprattutto nei task ripetitivi. In questo caso, la command-line si rivela più vantaggiosa della graphic user interface perché permette di ottenere gli stessi risultati in modo più veloce. L’utente, infatti, non deve ripetere più volte l’apertura di finestre, operazioni drag and drop, di spunta, di chiusura di box e così via.
Un tool utile anche per l’automazione
Alcune innovazioni nel campo delle CLI hanno permesso, comunque, di risolvere alcuni dei tipici problemi legati all’utilizzo delle command-line. Grazie all’introduzione degli alias, ora non è più necessario scrivere in maniera impeccabile stringhe molto lunghe: per impartire comandi di default, è sufficiente digitare l’alias corrispondente. Anche una delle scomodità più tipiche delle tradizionali CLI, cioè quella di non essere multitasking come lo sono le interfacce grafiche, è stata ovviata con PowerShell, che permette di trasformare l’output di un comando in un oggetto (nel significato utilizzando nel linguaggio dei programmatori) che diviene input di un altro. Questo consente, fino a che non si interrompe il processo, e quello che appare nella command line è una conferma in testo piano, di generare delle pipeline di comandi. Inoltre, gli script CLI possono essere copiati in file di testo i quali sono interpretabili ed eseguibili anche da shell di sistemi operativi diversi, oltre a costituire documentazioni dei processi sviluppati ed eventualmente modificabili. La PowerShell è stata resa open source da Microsoft, che ha stretto anche un accordo importante con Canonical per integrare in essa i comandi di Bash, la shell di Ubuntu. Oltre a questa, sono state integrate anche altre shell del sistema operativo del pinguino. La possibilità, con la CLI, di scrivere script validi per diversi sistemi operativi, la “stabilità” (cioè l’assenza di frequenti cambiamenti) dei comandi, la documentabilità grazie ai file di testo, e la possibilità di creare file di testo per eseguire script batch anche molto sofisticati, rendo la CLI uno strumento utile anche per l’automazione della gestione delle infrastrutture IT.