CLI: Interfaccia a riga di comando

Un programma CLI (command line interface, in italiano interfaccia a riga di comando), è un programma con cui un utente può interagire direttamente dal terminale digitando i comandi sottoforma di testo.

Le CLI sono state le prime interfacce interattive e sono nate negli anni ‘60 con i primi sistemi operativi UNIX per agevolare i non sviluppatori perché fino a quel momento non si era in grado di comunicare con una macchina tramite il linguaggio umano. Da allora, rimangono uno strumento indispensabile nell’informatica.

Anche se oggi i programmi usano interfacce grafiche (GUI), spesso i comandi vengono eseguiti avviando programmi a riga di comando, invece di richiamare funzioni interne come avviene nei linguaggi di programmazione. Diversi programmi vengono prima creati sottoforma di CLI e poi viene aggiunta una GUI.

Caratteristiche di una CLI

Un programma a riga di comando viene eseguito digitando da un terminale o shell il suo nome e gli argomenti da passare al programma. In altri casi, è il programma a chiedere quali dati immettere all’utente.

Una volta ricevuti i dati (input), il programma esegue le istruzioni per cui è stato progettato e riporta i risultati sullo schermo (output). Più CLI possono fare parte di una principale. A seconda del sistema operativo possono essere autonomi o dipendere da quello principale. Perciò un terminale può eseguire comandi esterni oppure interni. 

I terminali di Linux sono programmi CLI che possono richiamare altri programmi ma non hanno l’esclusiva: quei programmi possono essere richiamati da terminali diversi.

PowerShell è l’interfaccia a riga di comando su Windows ed esegue i cmdlet, comandi nativi sviluppati in C# che possono essere usati soltanto dal suo terminale. 

Creazione

Questi sono i passaggi generali per creare una CLI:

  • Scriviamo le istruzioni per ricevere gli argomenti digitati dall’utente. Se gli argomenti sono di più di quelli da trattare o se ci sono errori, mandiamo un avviso. 
  • Se tutto è a posto convertiamo il tipo stringa degli argomenti  in quello desiderato e li salviamo in variabili specifiche
  • Scriviamo le istruzioni per il programma vero e proprio e salviamo i risultati in altre variabili.
  • Mostriamo i risultati richiesti dall’utente.

Facciamo l’esempio di un programma che riceve due numeri e mostra la loro somma:

  • Se l’utente sbaglia a digitare, gli mandiamo un messaggio per dirgli di scrivere due numeri;
  • Se l’utente ha scritto i due numeri, convertiamo il valore in stringa in tipo numerico e li salviamo nelle variabili n1 ed n2;
  • Eseguiamo la somma e la salviamo nella variabile sum;
  • Mostriamo il valore di sum all’utente.

Gli argomenti sono sempre di tipo lista o vettore, perciò bisogna accedere al relativo indice. Il primo valore è sempre il nome del programma. Questo è l’esempio scritto in un file Python chiamato sum.py:

import sys


if len(sys.argv) != 3:
    print(f"Uso: {sys.argv[0]} <numero1> <numero2>")
    sys.exit(1)

num_1 = float(sys.argv[1])
num_2 = float(sys.argv[2])

print("Numero 1:", num_1)
print("Numero 2:", num_2)

sum = num_1 + num_2

print("Somma:", sum)

Digitiamo il comando python3 sum.py 5 6 e avremo la somma 11.

Sottocomandi, opzioni e argomenti di una CLI

Quando eseguiamo un comando da terminale spesso dobbiamo anche dire cosa vogliamo fare e anche i dati da scrivere, leggere, modificare, copiare o spostare.

Il comando principale (il nome del programma) viene scritto all’inizio della riga seguito da uno dei suoi sottocomandi. Ad esempio:

  • npm build (Compila un progetto Node)
  • pip install (Installa pacchetti Python)

Non è necessario inserire un sottocomando. Molti comandi da terminale accettano argomenti come i nomi dei file e delle cartelle. Ad esempio:

  • sl Downloads (Su Windows cerca la cartella Download nella directory attuale e se la trova la imposta come cartella dove eseguire le altre operazioni);
  • cd Scaricati (Su Linux fa la stessa cosa di sl. Molte distro Linux usano il termine italiano per indicare la cartella dei Downloads).

Per convenzione molti programmi usano – per indicare un’opzione il cui nome è abbreviato mentre usano due segni meno – per indicare un nome lungo .

Ad esempio ls –help viene usato in Linux per mostrare l’elenco dei file nella directory attuale. Con l’opzione –help ci viene mostrato tutte le opzioni disponibili sia scritte in forma breve che lunghe. Windows ha un comando equivalente che viene chiamato Get-Children (gci).

Possiamo anche inserire sottocomandi, opzioni e argomenti insieme per ottenere l’effetto desiderato.