Perché le persone si preoccupano ancora di loro?

La riga di comando ha quasi 50 anni, ma non è obsoleta. I terminali di testo sono ancora il modo migliore per svolgere molte attività, anche nell’era dei desktop grafici e dei gadget touch-screen.

In effetti, la riga di comando sta diventando più rispettata che mai con Microsoft che crea una nuova potente applicazione Windows Terminal. L’ambiente PowerShell di Windows 10 è sorprendentemente potente, ma Microsoft ha comunque fatto di tutto per aggiungere il supporto praticamente per l’ambiente della riga di comando Linux completo a Windows 10.

La riga di comando era una volta l’unica opzione

Una volta, se volevi interagire con un computer, digitavi. Questo è stato. Non c’era nient’altro. Potrebbe sembrare restrittivo e arcaico, ma come passo avanti rispetto all’utilizzo di schede perforate o nastri di carta perforati, la digitazione è stata radicale e trasformativa. E migrando dalle telescriventi con i loro rotoli di carta ai terminali con tubo a raggi catodici Gli schermi (CRT) hanno rappresentato un altro cambiamento fondamentale nelle interazioni tra uomo e computer.

Quel passaggio ha aperto la strada affinché la shell interattiva diventasse davvero unica. Ora puoi inviare istruzioni al computer e visualizzare rapidamente le risposte sullo schermo. Niente più clack-clack-clack mentre aspettavi che il tabulato cartaceo uscisse rumorosamente dalla tua telescrivente.

Giusto, ma quello era allora, questo è adesso. L’informatica è un gioco completamente diverso. A parte gli ovvi casi bloccati come l’utilizzo di un computer su cui non è installato un ambiente desktop grafico o l’utilizzo di un computer remoto tramite SSH su una connessione a larghezza di banda ridotta o controllando un file senza testa o incorporato sistema, perché utilizzare la riga di comando su un desktop grafico?

Spiegazione del gergo

Termini come riga di comando, finestra di terminale e shell sono usati quasi in modo intercambiabile da alcune persone. Questo è un gergo sbagliato. Sono tutti abbastanza diversi. Sono imparentati, ma non sono la stessa cosa.

Una finestra di terminale è una finestra in un file ambiente desktop grafico che esegue un’emulazione di un terminale telescrivente.

La shell è il programma che viene eseguito all’interno della finestra del terminale. Prende il tuo input e, a seconda di ciò che hai digitato, cerca di interpretare ed eseguire le istruzioni stesse, passarle ad alcune delle altre utilità che compongono il sistema operativo o trovare uno script o un programma che corrisponda a ciò che hai digitato.

La riga di comando è dove digiti. È il prompt che la shell presenta quando attende che tu inserisca alcune istruzioni. Il termine “riga di comando” viene utilizzato anche per fare riferimento al contenuto effettivo di ciò che hai digitato. Ad esempio, se parli con un altro utente di computer di una difficoltà che hai avuto nel tentativo di far funzionare un programma, potrebbero chiederti: “Quale riga di comando hai usato?” Non stanno chiedendo quale shell stavi usando; vogliono sapere quale comando hai digitato.

Complessivamente, questi si combinano per formare il file interfaccia a riga di comando (CLI).

Perché utilizzare la riga di comando nel 2019?

La CLI può sembrare retrograda e confusa a coloro che non la conoscono. Sicuramente non c’è posto in un sistema operativo moderno per un modo così datato e geniale di usare un computer? Non abbiamo rinunciato a tutto ciò decenni fa quando sono apparse finestre, icone e mouse e gli ambienti desktop grafici con interfacce utente grafiche (GUI) è diventato disponibile?

Sì, la GUI esiste da decenni. La prima versione di Microsoft Windows era rilasciato nel lontano 1985 e divenne la norma desktop per PC con il rilascio di Windows 3.0 nel 1990.

Il sistema X Window, utilizzato in Unix e Linux, era introdotto nel 1984. Ciò ha portato gli ambienti desktop grafici a Unix e ai suoi numerosi derivati, cloni e derivati.

Ma il rilascio di Unix è anteriore a questi eventi da parte di a più di un decennio. E poiché non c’erano altre opzioni, tutto doveva essere possibile tramite la riga di comando. Ogni interazione umana, ogni configurazione, ogni utilizzo del computer doveva essere in grado di essere eseguito tramite l’umile tastiera.

Quindi, ipso facto, la CLI può fare tutto. Una GUI non può ancora fare tutto ciò che può fare la CLI. E anche per le parti che può fare, la CLI è solitamente più veloce, più flessibile, può essere gestita da script ed è scalabile.

E c’è uno standard.

Sono standardizzati grazie a POSIX

POSIX è un file standard per sistemi operativi simili a Unix– in pratica, tutto ciò che non è Windows. E anche Windows ha il sottosistema Windows per Linux (WSL). Apri una finestra di terminale su qualsiasi sistema operativo conforme a POSIX (o vicino a conforme) e ti ritroverai in una shell. Anche se la shell o la distribuzione forniscono le proprie estensioni e miglioramenti, purché forniscano la funzionalità POSIX principale, sarai in grado di usarla immediatamente. E i tuoi script verranno eseguiti.

La riga di comando è il minimo comune denominatore. Impara come usarlo e, indipendentemente dalla distribuzione Linux e dall’ambiente desktop grafico, sarai in grado di svolgere tutte le attività di cui hai bisogno. Diversi desktop hanno il loro modo di fare le cose. Diverse distribuzioni Linux raggruppano varie utilità e programmi.

Ma apri una finestra di terminale e ti sentirai a casa.

I comandi sono progettati per funzionare insieme

Ciascuno dei comandi di Linux è progettato per fare qualcosa in particolare e per farlo bene. La filosofia di progettazione sottostante è quella di aggiungere più funzionalità aggiungendo un’altra utilità che può essere collegata o concatenata insieme a quelle esistenti per ottenere il risultato desiderato.

Questo è così utile che Microsoft ha fatto di tutto per aggiungere il supporto per la riga di comando completa di Linux a Windows 10!

Ad esempio, il comando di ordinamento viene utilizzato da altri comandi per ordinare il testo in ordine alfabetico. Non è necessario creare capacità di ordinamento in ciascuno degli altri comandi Linux. In genere, le applicazioni GUI non consentono questo tipo di interazione collaborativa.

Guarda il seguente esempio. Questo utilizza il comando ls per elencare i file nella directory corrente. I risultati vengono reindirizzati nel comando sort e ordinati nella quinta colonna di dati (che è la dimensione del file). L’elenco ordinato viene quindi reindirizzato al comando head che per impostazione predefinita elenca le prime dieci righe del suo input.

ls -l | sort -nk5,5 | head

Otteniamo un elenco ordinato dei file più piccoli nella directory corrente.

elenco dei dieci file più piccoli nella directory corrente

Modificando un comando, utilizzando tail invece di head, possiamo ottenere un elenco dei dieci file più grandi nella directory corrente.

ls -l | sort -nk5,5 | tail

ls -l |  sort -nk5,5 |  coda in una finestra di terminale

Questo ci dà il nostro elenco dei dieci file più grandi, come previsto.

elenco dei dieci file più grandi nella directory corrente

L’output dei comandi può essere reindirizzato e catturato nei file. L’output regolare (stdin) e i messaggi di errore (stderr) possono essere acquisiti separatamente.

I comandi possono includere variabili di ambiente. Il seguente comando elencherà il contenuto della tua home directory:

ls $HOME

ls $ HOME in una finestra di terminale

Funziona ovunque ti trovi nell’albero delle directory.

elenco della directory home nella finestra del terminale

Se l’idea di tutta quella digitazione ti preoccupa ancora, tecniche come il completamento con tabulazione possono ridurre la quantità di digitazione che devi fare.

Gli script consentono l’automazione e la ripetibilità

Gli esseri umani sono inclini agli errori.

Gli script ti consentono di standardizzare una serie di istruzioni che sai verranno eseguite nello stesso modo ogni volta che lo script viene eseguito. Ciò conferisce coerenza alla manutenzione del sistema. I controlli di sicurezza possono essere incorporati negli script che consentono allo script di determinare se deve procedere. Ciò elimina la necessità per l’utente di avere conoscenze sufficienti per prendere la decisione da solo.

Poiché è possibile automatizzare le attività utilizzando cron su Linux e altri sistemi simili a Unix, le attività lunghe, complicate e ripetitive possono essere semplificate o, almeno, calcolate una volta e quindi automatizzate per il futuro.

Gli script di PowerShell offrono una potenza simile su Windows e puoi programmarli per l’esecuzione dall’Utilità di pianificazione. Perché fare clic su 50 diverse opzioni ogni volta che si configura un computer quando è possibile eseguire un comando che cambia tutto automaticamente?

Il meglio dei due mondi

Per ottenere il meglio da Linux, o da qualsiasi sistema operativo come utente esperto, è davvero necessario utilizzare la CLI e la GUI.

La GUI è insuperabile per l’utilizzo delle applicazioni. Anche i sostenitori della riga di comando più irriducibili devono uscire dalla finestra del terminale e utilizzare di tanto in tanto suite di produttività per ufficio, ambienti di sviluppo e programmi di manipolazione grafica.

I tossicodipendenti della riga di comando non odiano la GUI. Preferiscono solo i vantaggi dell’utilizzo della CLI, per le attività appropriate. Per l’amministrazione, la CLI vince a mani basse. È possibile utilizzare la CLI per apportare modifiche a un file, una directory, una selezione di file e directory o modifiche completamente globali con lo stesso impegno. Tentare di farlo con la GUI spesso richiede azioni ripetitive e ripetitive di tastiera e mouse man mano che il numero di oggetti interessati aumenta.

La riga di comando ti offre la massima fedeltà. Ogni opzione di ogni comando è disponibile per te. E molti dei comandi di Linux hanno molte opzioni. Per fare solo un esempio, considera il comando lsof. Dai un’occhiata al suo pagina man e poi considera come lo inseriresti in una GUI.

Ci sono troppe opzioni da presentare all’utente in una GUI efficace. Sarebbe opprimente, poco attraente e goffo da usare. E questo è l’esatto contrario di ciò che una GUI mira ad essere.

Sono cavalli per i corsi. Non rifuggire dal cavallo CLI. Spesso è il destriero più veloce e più agile. Guadagna gli speroni e non te ne pentirai mai.