Salta al contenuto
Volume 1Usare l'IA da terminale
  1. Il libro
  2. Capitolo 2

Capitolo 2

Iniziamo a usare il terminale

Mezz'ora, e non si rompe niente. Le prime tre parole, i permessi, cosa fare quando va storto.

Trenta minuti, e non si rompe niente

Prima di cominciare, mettiamo via la paura, perché è l’unico vero ostacolo di questo capitolo.

Il terminale non è pericoloso di per sé. È pericoloso quanto la tua cucina: puoi tagliarti, ma solo se prendi il coltello e lo usi male. Guardare, entrare nelle cartelle, chiedere cosa c’è dentro, contare i file: nessuna di queste cose può rompere niente, mai. In tutto questo capitolo ci sarà un solo comando capace di fare danni davvero, e quando arriveremo lì lo troverai dentro un riquadro con la cornice spessa.

L’altra paura, quella più profonda, è di sembrare stupidi davanti a uno schermo nero. Toglila di mezzo così: il terminale non ti giudica, non ha memoria delle tue figuracce e non si aspetta niente da te. Se scrivi una cosa senza senso ti risponde una riga di errore e torna ad aspettare. È la cosa più paziente che tu abbia in casa.

Alla fine di queste pagine saprai fare sei o sette cose. Non diventerai esperto, e non serve. Serve un’altra cosa: che quando vedrai l’IA lavorare, tu capisca cosa sta facendo.

Cosa ti porti a casa da questo capitolo

  1. muoverti tra le cartelle senza mouse, e sapere sempre dove sei;
  2. creare, copiare, spostare e cancellare roba;
  3. leggere un comando qualsiasi e capire com’è fatto;
  4. sapere quali sono le due sole cose che possono fare danni.

Qui i riquadri ✋ contano più che altrove, perché questa è roba che si impara con le dita e non con gli occhi. Tieni la finestra del terminale aperta accanto al libro e fai ogni cosa mentre la leggi.


Aprire la porta di servizio

Su Mac. Premi Cmd + Spazio, scrivi Terminale, premi Invio. Si apre una finestra bianca o nera con due righe di testo dentro. Ci sei.

Su Windows. Premi il tasto Windows, scrivi Terminale (sulle versioni più vecchie PowerShell) e premi Invio. Il tuo terminale parla un dialetto diverso da quello di Mac e Linux: i concetti di questo capitolo sono identici, e la maggior parte dei comandi che vedrai funziona anche lì, ma tre di quelli che useremo no. Leggi il riquadro qui sotto prima di cominciare, così non passi mezz’ora a chiederti cosa stai sbagliando: non stai sbagliando niente.

Su Linux. Lo sai già.

La ricerca Spotlight su macOS aperta con scritto “Terminale” e il primo risultato evidenziato. Immagine piccola, di servizio: serve solo a togliere l’ultimo dubbio a chi non l’ha mai aperto.
Figura 2.1

Cosa stai guardando

Dentro la finestra c’è qualcosa del genere:

gianclaudio@MacBook-Air ~ %

Questa riga si chiama prompt, che in inglese vuol dire “sollecito, invito a parlare”. È la macchina che ti dice: sono qui, dimmi.

Leggiamola pezzo per pezzo, perché ogni pezzo è un’informazione che ti servirà:

  • gianclaudio è chi sei, cioè l’utente con cui hai fatto accesso;
  • MacBook-Air è dove sei, cioè su quale macchina;
  • ~ è la cartella in cui ti trovi adesso (quella tilde è un’abbreviazione, tra poco vediamo di cosa);
  • % è il segno che separa le informazioni da ciò che scrivi tu. Su altri sistemi al posto di % trovi $. Non cambia niente.

Chi, dove, in quale cartella. Il terminale te lo ripete a ogni riga, per tutta la sessione, perché sono le tre cose che devi sempre sapere.

E qui c’è l’idea che regge tutto il capitolo, quella che nell’interfaccia a icone non hai mai dovuto pensare:

Nel terminale sei sempre in un posto preciso. Non stai guardando il computer dall’alto. Sei dentro una cartella, come uno che sta in piedi in una stanza dell’archivio. I comandi che dai valgono lì, in quella stanza, salvo che tu non dica esplicitamente il contrario. Prima di ogni operazione, la domanda giusta è sempre la stessa: dove sono adesso?

Questa non è pignoleria. È la ragione numero uno per cui i principianti si perdono, e sarà anche la ragione per cui ogni tanto non troverai i file che l’IA ha creato.

Lo stesso albero di cartelle della figura 1.2, con un segnalino evidenziato su Documents e, accanto, la riga di terminale % pwd con la sua risposta /Users/tuonome/Documents. Serve a far vedere in un colpo solo che la posizione nell’albero e il percorso scritto sono la stessa identica cosa, guardata da due porte diverse.
Figura 2.2

Le prime tre parole

Il vocabolario minimo per muoversi è di tre parole. Impariamole guardandole lavorare.

pwd, cioè “dove sono”

Scrivi pwd e premi Invio.

% pwd
/Users/gianclaudio

Ti risponde con il percorso completo della stanza in cui ti trovi. È esattamente il tipo di indirizzo del capitolo scorso. Sta per print working directory, “stampa la cartella di lavoro”, ma il nome non ha nessuna importanza.

E scopri anche una cosa: quella ~ nel prompt era un’abbreviazione di /Users/gianclaudio, cioè della tua cartella personale. La tilde vuol dire sempre “casa mia”. Ovunque tu sia, cd ~ ti riporta a casa.

ls, cioè “cosa c’è qui”

% ls
Applications  Desktop  Documents  Downloads  Movies  Music  Pictures

ls sta per list. Elenca il contenuto della stanza in cui sei. È l’occhio.

cd, cioè “andiamo”

% cd Documents
% pwd
/Users/gianclaudio/Documents

cd sta per change directory, cambia cartella. È il passo.

Tre varianti da sapere subito, perché sono quelle che userai il novanta per cento delle volte:

  • cd Documents entra in una cartella che sta dentro quella in cui sei;
  • cd .. torna indietro di un livello, verso il tronco dell’albero. Quei due punti significano “la cartella che mi contiene”;
  • cd da solo, oppure cd ~, ti riporta a casa da qualunque punto ti sia perso.

Soffermati su cd .., perché è la cosa più simile a un pulsante “indietro” che troverai qui dentro, e sapere di averla toglie l’ansia di finire in un posto da cui non si esce. Non esistono posti da cui non si esce.


Due trucchi che cambiano la vita

Prima di andare avanti, due cose che non sono comandi ma abitudini. Chi le usa va cinque volte più veloce di chi non le conosce, e nessuno le insegna.

Il tasto Tab completa le parole. Scrivi cd Doc e premi Tab: il terminale completa da solo in cd Documents/. Se ci sono più possibilità, premi Tab due volte e te le elenca. Non serve mai scrivere per intero un nome di file, e soprattutto non si sbaglia più a digitarlo. Prendi questa abitudine oggi: scrivi le prime tre lettere e premi Tab, sempre.

La freccia in su ripesca i comandi già dati. Premila più volte per riandare indietro nella storia. Correggi la riga e ridai Invio. Serve continuamente, perché nel terminale si lavora quasi sempre ripetendo un comando con una piccola variazione.

E poi il trucco più bello per chi viene dal mondo delle icone:

Puoi trascinare una cartella dal Finder dentro il terminale. Scrivi cd, lascia uno spazio, prendi la cartella dalla finestra del Finder e trascinala sulla finestra nera. Il percorso completo compare scritto da solo. È il ponte tra le due porte d’ingresso, e serve tutte le volte che una cartella è sepolta in profondità.


Creare, copiare, spostare

Fin qui hai solo guardato. Adesso costruiamo qualcosa. Restiamo nella cartella compleanno-Mamma che hai creato alla fine del capitolo scorso, o creiamola adesso se non l’hai fatto.

% cd ~/Documents
% mkdir compleanno-Mamma
% cd compleanno-Mamma

mkdir sta per make directory: crea una cartella.

% touch lista-invitati.txt
% touch idee-regalo.txt
% ls
idee-regalo.txt   lista-invitati.txt

touch crea un file vuoto. Il nome è buffo (“tocca”) e ha una storia sua che non ci interessa: serve a far esistere un file dal nulla.

% cp lista-invitati.txt lista-invitati-vecchia.txt

cp copia (copy): prima dici cosa, poi dove o come.

% mv idee-regalo.txt regali.txt

mv sposta (move), e siccome spostare un file dentro la stessa cartella con un nome diverso equivale a rinominarlo, mv è anche il comando per rinominare. È una di quelle cose che all’inizio sembrano strane e dopo due giorni sembrano ovvie.

Con cinque parole (mkdir, touch, cp, mv, più ls e cd che già sai) puoi già fare tutto quello che fai col mouse quando organizzi delle cartelle. Ne manca una, ed è quella con la cornice spessa.


L’anatomia di un comando

Hai notato che qualche comando aveva dei pezzi in più. Vale la pena fermarsi trenta secondi sulla grammatica, perché è sempre la stessa e riconoscerla significa poter leggere qualsiasi riga, anche quelle che non hai mai visto.

ls -l Documents

Tre pezzi:

  • il comando: ls, il verbo, cosa voglio fare;
  • le opzioni: -l, gli avverbi, come lo voglio fare. Cominciano quasi sempre con un trattino;
  • gli argomenti: Documents, il complemento oggetto, su cosa lo voglio fare.

Verbo, avverbio, oggetto. Fine della grammatica.

Prova ls -l:

% ls -l
-rw-r--r--  1 gianclaudio  staff   0  25 lug 07:12  regali.txt
-rw-r--r--  1 gianclaudio  staff  84  25 lug 07:14  lista-invitati.txt

Le stesse cose di prima, raccontate per esteso: permessi, proprietario, gruppo, dimensione in byte, data, nome. Ci torniamo tra due sezioni, quando parliamo di utenti.

Le opzioni si possono anche impilare: ls -la significa “elenca in forma lunga e mostra anche i file nascosti”. I file nascosti sono quelli il cui nome comincia con un punto, e ce ne sono parecchi in casa tua: sono quasi tutti file di configurazione di programmi. Il computer li nasconde per non spaventarti.


Il potere vero: incastrare le parole

Fin qui il terminale sembra solo un modo scomodo di fare cose che col mouse fai meglio. Giusto. Il salto è un altro, e sono due simboli.

L’asterisco vuol dire “qualsiasi cosa”.

ls *.jpg

“Elencami tutti i file che finiscono per .jpg”. L’asterisco sta per qualunque sequenza di caratteri. foto-* sono tutti i file che cominciano per foto-. Con questo puoi parlare di gruppi di file invece che di uno alla volta, e qui comincia la differenza con il mouse.

La barra verticale passa il risultato al comando successivo.

ls *.jpg | wc -l

Si legge: elenca tutti i jpg, e quell’elenco passalo a wc -l, che conta le righe. Risultato: quante foto ci sono in questa cartella. Quel simbolo | si chiama pipe, tubo, ed è una delle invenzioni più eleganti dell’informatica: ogni comando è un piccolo utensile che fa una cosa sola, e il tubo li mette in fila come una catena di montaggio.

Ecco perché in cucina bastano venti parole. Non conta il vocabolario, contano le combinazioni.

E adesso il debito che avevo con te dal capitolo scorso. Le 4.000 foto da rinominare con la data davanti, quattro giorni di clic:

for f in *.jpg; do mv "$f" "$(date -r "$f" +%Y-%m-%d)-$f"; done

Una riga. Due secondi.

Non devi capirla e non devi impararla: te la scriverà l’IA, ed è esattamente il tipo di cosa per cui la userai. Ma guardala un momento, perché ci sono dentro solo cose che conosci già: c’è mv, che sposta e rinomina; c’è *.jpg, che sono tutti i jpg; e c’è un for, che vuol dire “per ognuno di questi, fai quanto segue”.

E adesso il dettaglio importante, quello per cui ti ho fatto leggere la riga. Quel date -r prende la data di modifica del file, che non è la data di scatto della foto. Se quelle foto le hai copiate da un vecchio disco nel 2019, verranno rinominate tutte 2019. Il comando è corretto e fa un lavoro sbagliato.

Questo è il capitolo intero in una frase: non ti serve saper scrivere quella riga, ti serve saperla leggere abbastanza da accorgerti che la data non è quella giusta. Quello che le dici dopo (“no, usa la data EXIF di scatto”) è lavoro tuo, e nessuno può farlo al posto tuo, perché sei l’unico a sapere cosa volevi davvero.


Chi sei, e cosa ti è permesso

Ultimo pezzo, e chiudiamo il cerchio con il portiere del capitolo scorso.

% whoami
gianclaudio

Il computer sa sempre chi è seduto lì. Ogni utente ha la sua cartella personale in /Users, le sue impostazioni, le sue cose, e non può mettere le mani in quelle degli altri. Anche se sei l’unico essere umano che tocca questa tastiera, per il sistema tu sei un utente tra i possibili, e questo è il motivo per cui esiste una cartella /Users al plurale.

Torniamo a quella riga di prima:

-rw-r--r--  1 gianclaudio  staff  84  25 lug 07:14  lista-invitati.txt

Quella sfilza di lettere all’inizio sono i permessi, e si leggono a gruppi di tre dopo il primo carattere:

  • rw- cosa può fare il proprietario: leggere (r), scrivere (w), non eseguire (-);
  • r-- cosa può fare il suo gruppo: solo leggere;
  • r-- cosa possono fare tutti gli altri: solo leggere.

Ogni singolo file del sistema porta scritto addosso chi può leggerlo, chi può modificarlo, chi può eseguirlo. È un’idea vecchia di cinquant’anni ed è ancora il motivo per cui un programma scaricato per sbaglio non può, da solo, riscrivere il sistema operativo.

E poi c’è la parola magica.

Perché ti sto raccontando tutto questo? Perché quando lascerai lavorare l’IA sul tuo computer, lei lavorerà come te: stesso utente, stessi permessi, stesso perimetro. Non è un’entità che fluttua sopra la macchina, è un inquilino che usa le tue chiavi. Sapere fin dove arrivano quelle chiavi è ciò che ti permetterà di lasciarle spazio senza stare in ansia, che è esattamente il punto d’arrivo di questo libro.


Quando qualcosa va storto

Ti succederà nei primi cinque minuti, quindi tanto vale prepararsi. Ci sono tre messaggi di errore che coprono quasi tutti i casi, e nessuno dei tre è grave.

command not found Hai scritto male il nome del comando, oppure quel programma non è installato. Rileggi la riga: nove volte su dieci è una lettera.

No such file or directory Il file o la cartella che hai nominato non esiste qui. Nota bene l’avverbio. Quasi sempre non è sparito niente: sei semplicemente in un’altra stanza. pwd per vedere dove sei, ls per vedere cosa c’è. Questo errore è, nel novanta per cento dei casi, il computer che ti dice “guarda che non sei dove credi”.

Permission denied Stai cercando di toccare roba che non è tua. Vedi il riquadro qui sopra: la risposta giusta quasi mai è sudo, quasi sempre è “cosa ci faccio io qui”.

E due tasti da sapere adesso, non dopo:

  • Ctrl + C ferma il comando in esecuzione. Se qualcosa sta scorrendo all’infinito o sembra bloccato, è questo il freno a mano.
  • Ctrl + L (oppure il comando clear) pulisce la finestra quando il disordine diventa fastidioso. Non cancella niente, sposta solo lo sguardo più in basso.

C’è anche una cosa che vale la pena dire una volta sola: gli errori del terminale sono scritti male, in inglese, e sembrano rimproveri. Non lo sono. Sono un modo brutale ma onesto di dirti cosa non è andato, ed è già più di quanto faccia il messaggio “Si è verificato un errore. Riprovare.” che ti danno le applicazioni con le icone. Da oggi hai anche un traduttore simultaneo: copia la riga di errore, incollala all’IA e chiedi cosa significa. Farlo non è un ripiego, è il modo normale di lavorare adesso.


Il quadernino

Tutto il capitolo sta in undici parole. Non impararle a memoria: usale tre o quattro volte e ci restano da sole.

  • pwd dove sono
  • ls cosa c’è qui
  • ls -l cosa c’è qui, per esteso
  • cd cartella entra
  • cd .. torna indietro
  • cd ~ torna a casa
  • mkdir nome crea una cartella
  • touch nome crea un file vuoto
  • cp origine copia copia
  • mv origine destinazione sposta, oppure rinomina
  • rm nome cancella, e non c’è cestino
  • whoami chi sono

Più i due tasti che valgono quanto i comandi: Tab per completare, freccia su per ripescare.


Dove andiamo adesso

Se hai fatto l’esercizio qui sopra, è successa una cosa piccola ma non reversibile: hai smesso di vedere il computer solo come una scrivania con sopra degli oggetti, e hai cominciato a vederlo come un luogo in cui ti muovi e in cui dai ordini.

Da qui in avanti non ti servirà quasi mai digitare tu questi comandi. Li scriverà l’IA, molto meglio e molto più in fretta. Ma adesso, quando li vedrai scorrere sullo schermo, saprai leggere cosa sta succedendo: che si è spostata lì, che sta guardando quei file, che sta per cancellare quella cosa. È la differenza tra guidare e stare seduto dietro con gli occhi chiusi.

Nel prossimo capitolo lasciamo per un momento la macchina e andiamo a vedere chi sono, di preciso, questi collaboratori: quali intelligenze artificiali esistono, in cosa differiscono, quali costano e quanto, quali girano addirittura sul tuo computer senza mandare niente a nessuno. Poi torniamo qui, e cominciamo a lavorare in due.