Vai al contenuto principale

Che cos'è la Shell?

Scopri cos'è la Shell e come impararla può renderti un data scientist più efficiente e versatile.
Aggiornato 29 set 2026  · 13 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Computer Script Graphic

Se usi un sistema operativo (OS) Microsoft, Apple o Linux, stai utilizzando script di shell, magari senza saperlo. Di fatto, interagisci con le shell ogni volta che avvii il tuo OS Linux. 

Gli script di shell aiutano programmatori, data scientist e utenti comuni a risparmiare tempo ed evitare attività ripetitive grazie all'automazione. Per esempio, gli script possono effettuare backup giornalieri, installare patch, monitorare sistemi e attività ed eseguire audit di routine. 

Le shell leggono comandi abbastanza intuitivi, adatti all'essere umano, e li trasformano in qualcosa che il sistema può comprendere. 

Che cos'è una Shell?

Una shell è un tipo di programma per computer chiamato interprete della riga di comando che consente agli utenti Linux e Unix di controllare i propri sistemi operativi tramite interfacce a riga di comando. Le shell permettono agli utenti di comunicare in modo efficiente e diretto con i loro sistemi operativi. 

La shell non è un'unica lingua di scripting ma, poiché usa alcuni comandi in linguaggio naturale, è facile da imparare anche senza un background di programmazione. Tuttavia, ogni dialetto di scripting della shell è considerato un linguaggio e, se prevedi attività più complesse, serve molta pratica. 

La shell è uno dei modi più semplici per impostare l'automazione. Usando comandi Linux o Unix, offre a data scientist, DevOps e TechOps strutture di controllo condizionali e cicli per ripetere comandi.

Gli script di shell non hanno sempre lo stesso nome. Sh, Bash (il più comune), csh, e tesh sono tutti script di shell. Nel sistema operativo VM di IBM si chiamano EXEC; in DOS, i file batch sono script di shell. 

Una shell ha due categorie: shell a riga di comando e shell grafiche. Le shell a riga di comando si usano tramite interfacce a riga di comando, in cui i sistemi ricevono input in comandi leggibili e poi mostrano l'output tramite le stesse interfacce. 

Le shell grafiche usano un'interfaccia grafica (GUI) per eseguire interazioni e operazioni essenziali come aprire, chiudere e salvare file. 

Ecco alcuni esempi di comandi di shell: 

Per scoprire in quale directory ti trovi: pwd

Per trovare un comando nel manuale: man command 

Per rendere un file di testo scorrevole: less file 1 oppure more file 1 

Tipi di shell

Bourne Shell

Per quanto il nome possa suggerire altro, la Bourne shell non ha nulla a che vedere con spie e inseguimenti ad alta velocità. La Bourne shell, la seconda shell Unix più usata, è stata creata nel 1979 da Stephen Bourne ai Bell Labs. Come la sua predecessora, la Thompson shell, l'eseguibile di Bourne si chiama sh.

La Bourne shell è la shell predefinita del sistema operativo Solaris. Nonostante l'età, è ancora popolare per velocità e compattezza. Tuttavia, non è molto interattiva e non può richiamare la sua cronologia dei comandi. Inoltre, manca di espressioni logiche e aritmetiche. 

I prompt di Bourne includono:

  • Percorso completo del comando:  /bin/sh e /sbin/sh
  • Predefinito per utente non root:  $
  • Predefinito per utente root: #

command-line

La C shell, filename csh, e la sua predecessora filename tcsh, è un'altra shell Unix della fine degli anni '70. Fu creata da Bill Joy, allora studente laureato all'Università della California, Berkeley. 

A differenza della Bourne shell, la C shell è interattiva e riconosce cronologia dei comandi e alias. Le C shell includono anche una sintassi delle espressioni simile al C e aritmetica integrata.

I prompt della command-line includono: 

  • Percorso completo del comando:  /bin/csh
  • Hostname predefinito per utente non root: %
  • Hostname predefinito per utente root: #

KornShell

La KornShell, filename ksh, è stata sviluppata nei primi anni '80 da David Korn ai Bell Labs. KornShell include molte delle funzionalità della C shell, ed è un super-set ed è quindi retrocompatibile con la Bourne shell. 

La KornShell è più veloce della C shell. Esegue script della Bourne shell e offre array, funzioni e strumenti di manipolazione delle stringhe in stile C. Inoltre, include aritmetica integrata. 

I prompt di KornShell includono:

  • Percorso completo del comando: /bin/ksh
  • Predefinito per utente non root: $
  • Predefinito per utente root: #

GNU Bourne-Again shell

La GNU Bourne-Again, o Bash, è un'alternativa open source alla Bourne shell. È stata progettata da Brian Fox per il progetto GNU e rilasciata nel 1989. Non solo è pienamente compatibile con la Bourne shell, ma riprende molte delle migliori funzionalità di KornShell e C shell. La GNU Bourne-Again shell ha i tasti freccia mappati automaticamente per l'editing e il richiamo dei comandi. 

I prompt della GNU Bourne-Again includono:

  • Percorso completo del comando: /bin/bash
  • Prompt predefinito per utente non root: bash-x.xx$ 
  • Predefinito per utente root: bash-x.xx#

Cosa fa lo shell scripting

L'analogia è un po' semplicistica, ma immagina gli script di shell come l'autocompletamento per i programmatori. Invece di digitare i comandi uno alla volta, la shell usa sequenze di comandi in singoli script che l'utente può avviare con un semplice nome file nella riga di comando. Gli script di shell eseguono programmi, gestiscono il wrapping del testo e la manipolazione dei file. 

Lo shell scripting può svolgere numerose attività, tra cui il monitoraggio (come l'uso del disco), l'esecuzione di backup, la creazione di strumenti a riga di comando, la manipolazione dei file, l'esecuzione di programmi, il collegamento tra programmi, l'esecuzione di batch, ecc.

Principali alternative alla shell

Nel sistema operativo VM di IBM si chiamano EXEC; in DOS, gli script di shell sono chiamati file batch. Sono sempre script di shell, però. Altri linguaggi di scripting, come Javascript, Python, Perl e TCL, sono anch'essi linguaggi di scripting. Non sorprende che i professionisti dell'informatica abbiano tutti i loro preferiti, e tra poco vedremo pro e contro delle shell. 

Perché la Shell è così popolare?

La shell è comune su quasi ogni OS perché è efficiente e facilmente aggiornabile. Monitora il sistema del tuo computer ed esegue backup di routine senza che tu debba pensarci. 

Non c'è bisogno di cambiare sintassi perché le sintassi e i comandi della shell sono identici a quelli inseriti nella riga di comando. Inoltre, è facile e veloce scrivere script di shell: si avviano rapidamente e sono facili da fare debug. 

Quali sono gli svantaggi degli script di shell?

Gli script di shell possono essere soggetti a errori e difficili da diagnosticare quando si presentano problemi. Le shell non sono progettate per attività complesse o di grandi dimensioni e sono lente nell'esecuzione. Inoltre, offrono poche strutture dati e possono presentare difetti di sintassi o progettazione. 

Quando è stata creata la Shell?

La prima shell è stata creata all'inizio degli anni '60 da Louis Pouzin, membro dello staff informatico del MIT. Il suo primo comando a riga di comando fu RUNCOM, che liberò gli informatici da attività ripetitive come compilare, aggiornare, rinominare e spostare. 

Anche se Pouzin non era un esperto di linguaggi di programmazione, o forse proprio per questo, credeva che le righe di comando potessero essere un linguaggio a sé stante. 

Entro la metà degli anni '60, Pouzin fece squadra con lo scienziato britannico Christopher Strachey. Strachey progettò un generatore di macro che servì da base per il linguaggio di comando di Pouzin, che girava su quello che all'epoca era il sistema operativo all'avanguardia Multics. 

Come la Shell ha ottenuto il suo nome

Pouzin chiamò il suo nuovo linguaggio "shell" perché è lo strato più esterno dei sistemi operativi. 

Funzionalità della Shell

Le shell sono popolari tra i programmatori perché sono concise. Questo non significa però che siano basilari. Offrono diverse funzionalità, tra cui:

Esecuzione in background

Uno dei maggiori vantaggi degli script di shell è che possono essere eseguiti in background. A seconda del comando, le shell possono essere eseguite in primo piano o in background. I processi in primo piano sono visibili sullo schermo e possono essere eseguiti solo in sequenza. 

I processi in background non compaiono sullo schermo e possono essere eseguiti in modo non sequenziale. Per eseguire uno script di shell in background, basta aggiungere una e commerciale (&) alla fine dello script. 

Sostituzioni con wildcard

Le sostituzioni con wildcard consentono ai sistemi di elaborare più di un comando alla volta o di trovare frammenti di frasi nei file di testo. Per esempio, * dice al sistema di corrispondere a qualsiasi stringa, anche vuota. ? corrisponde a un singolo carattere, [example] corrisponde a qualsiasi carattere ("example" è solo un esempio) e [1-9] (altro esempio) istruisce la shell a far corrispondere caratteri all'interno dell'intervallo. 

Alias di comando

Gli alias della shell sono comandi scorciatoia. Alcuni alias sono una singola parola, altri una singola lettera. Per vedere l'elenco degli alias, basta inserire ·alias.

Cronologia dei comandi

Ci sono molti modi in cui le shell fanno risparmiare tempo e fatica, ma una funzionalità particolarmente comoda è la cronologia dei comandi. Invece di ridigitare i comandi, il comando history mostra tutti quelli usati durante la sessione.

Sostituzione dei nomi file

La sostituzione dei nomi file è anche nota come "globbing". Quando una parola contiene caratteri come ?, * o [, o inizia con ~, la shell vedrà la parola come un pattern e la sostituirà con un elenco alfabetico di nomi di file che corrispondono al pattern. 

Redirezione input/output 

La redirezione input/output (i/o) consente di scambiare lo standard input (stdin) e lo standard output (stdout) associandoli allo schermo, alla tastiera o a un file. 

Pipe

Il piping della shell è un altro tipo di redirezione che invia l'output di un comando/processo/programma a un altro comando/processo/programma. Questo permette ai comandi/processi/programmi di operare simultaneamente e consente un trasferimento continuo dei dati senza dover passare dallo schermo o da file di testo temporanei. 

Sostituzione di variabili nella shell

Quando la shell incontra un'espressione contenente caratteri speciali, traduce il codice in qualcosa di più riconoscibile per gli utenti. Questo processo si chiama sostituzione di variabili, o semplicemente variabili. 

Le variabili sono usate anche dai programmatori più esperti. Se, per esempio, un programmatore non conosce i valori effettivi prima di eseguire un programma, può usare la variabile come segnaposto finché il codice non è pronto all'esecuzione. 

Come variano le shell

Esistono due tipi principali di shell, "sh" e "bash". Entrambe funzionano all'interno del sistema operativo Unix. Shell è un nome generico per lo scripting in qualsiasi shell. Come suggerisce il nome, bash (Bourne Again Shell) è una shell migliorata ed estesa. 

Bash usa aggiornamenti per maggiori funzionalità, supporta il controllo dei job, è più facile da usare rispetto a sh e supporta la cronologia dei comandi. Sh non supporta la cronologia; il suo scripting funziona in qualsiasi shell ed è più portabile.  

Come la Shell è evoluta nel tempo

Nel corso degli anni, le shell sono evolute rimanendo più o meno le stesse. La Bourne shell è stato un grande passo avanti rispetto alla Thompson shell originale, ma molte delle funzioni originali restano. Ovviamente, computer e aspettative sono cambiati. 

Potenzialmente ci sono tante shell quanti sono gli utenti; ma, in sostanza, ci sono due tipi di shell: a riga di comando o Bourne. Tutto il resto è un dialetto più che un linguaggio diverso. 

Shell Unix

Le shell Unix sono le originali e sono ancora molto diffuse. Funzionano su Unix e sui sistemi operativi correlati a Unix, come i Mac.  

command-lines

Le command-lines (csh) sono le shell Unix più comuni. Le command-lines eccellono nel lavoro interattivo, inclusi alias, cdpath, controllo dei job, path hashing, stack di directory, ecc. Offrono anche funzionalità di editing e cronologia.

Tenex command-line

La Tenex command-line (tcsh) è stata sviluppata da Ken Greer della Caregia Melo University.  Tenex era considerata un miglioramento rispetto alla versione originale della command-line. A differenza dell'originale C, Tenex offre editing e completamento della riga di comando, tra le altre funzionalità. Nel 1981, tsch si fuse con csh. 

Korn shell

Le Korn shell (ksh) sono un'altra shell Unix, ma sono una sorta di compromesso tra C e Bourne shell, con retrocompatibilità con quest'ultima. La Korn shell è stata sviluppata nei primi anni '80 da David Korn ai Bell Labs. 

Bourne again shell

La Bourne Again shell (Bash) è una shell Unix open source scritta alla fine degli anni '90 da Brian Fox per il progetto GNU come upgrade della Bourne shell. 

Shell esotiche

Sebbene siano tutte basate su C o Bourne shell, i programmatori hanno progettato centinaia, se non migliaia, di dialetti diversi. Alcuni sono utili, altri semplicemente divertenti. 

Chi usa la Shell?

Quasi chiunque usi un computer trae beneficio dalla shell, ma è particolarmente utile per amministratori di sistema, persone DevOps, programmatori e data scientist. Le shell vengono usate per automatizzare attività e applicazioni, installare pacchetti, eseguire backup o ripristini e, naturalmente, per programmare. 

Esempi di Shell

Le shell possono essere basilari o complesse quanto desidera l'utente. Un semplice saluto in bash, per esempio, è echo “hello $USER”, mentre script di shell complessi sono quasi illimitati.  Ecco alcuni esempi di base: 

Esempio 1: usare un ciclo while in bash

Crea un file in bash con un editor adatto. Qui usiamo l'editor vi.
 
$ vi example.sh
 
Si apre un editor con un file chiamato example.sh
Premi il tasto 'i' per iniziare a inserire il codice:
#!/bin/bash
valid=true
count=1
while [ $valid ]
do
echo $count
if [ $count -eq 10 ];
then
break
fi
((count++))
done
Premi Esc seguito da ':wq' per salvare e tornare al terminale. 
Esegui con bash example.sh 
Esempio 2:  Accettare input dal terminale da parte degli utenti
 
Crea un altro file nell'editor vi: 
$vi example2.sh
 
Inserisci il codice nell'editor:
#!/bin/bash
echo "Enter first number"
read x
echo "Enter second number"
read y
((sum=x+y))
echo "The result of addition = $sum"
Esegui con bash example2.sh
 
Per imparare altri comandi di shell utili per la data science, dai un'occhiata a questo tutorial su Useful Shell Commands.

Carriere con la Shell

Più che un percorso di carriera, considera lo shell scripting come uno strumento utile nell'arsenale di un data scientist. I professionisti dei dati di ogni tipo devono conoscere più linguaggi (o almeno dovrebbero), e gli script di shell li aiutano a usare i linguaggi in modo più efficiente. 

Detto questo, alcune aziende hanno ruoli che richiedono specificamente lo shell scripting. Il salario medio è intorno ai 78.000 dollari. Detto ciò, gli script di shell sono un mattone fondamentale per ruoli come gli amministratori di sistema, che possono arrivare a stipendi a sei cifre. 

Conclusione

La shell è come un filo che attraversa ogni linguaggio di programmazione. Comandi complessi vengono ridotti a scorciatoie concise e intuitive. Capire la shell è una competenza importante per qualsiasi data scientist o ingegnere informatico. Scopri la shell nel corso di DataCamp Introduction to Shell. 

Domande frequenti sulla Shell

Che cos'è il kernel?

Il kernel è la parte più essenziale del sistema operativo. È responsabile di allocare memoria e tempo ai programmi del computer e gestisce comunicazioni e archivio dei file in risposta alle system call. 

Che cos'è la shell?

La shell è l'interfaccia tra il kernel e l'utente. 

Quali sono i vantaggi della shell?

Sappiamo già che la shell è efficiente e si occupa di molte attività noiose dell'utente; oltre a questo, le shell permettono di personalizzare gli script in base alle proprie esigenze. 

Quali sono gli svantaggi della shell?

Un singolo errore può risultare molto costoso e difficile da individuare. Inoltre, le shell non sono molto portabili tra sistemi operativi diversi. 

Qual è la differenza tra Unix e Linux?

Linux è un clone di Unix sviluppato da Linus Torvalds. Linux non è di per sé un sistema operativo; è un kernel. Unix, invece, include il kernel, la shell e i programmi. 

Quali shell sono comunemente usate sui sistemi Linux e Unix?

Bash, ovvero la Bourne Again shell, è la shell più comunemente usata, ma sia Linux che Unix supportano anche command-lines, KornShell e TCSH.

Che cos'è la sintassi della shell?

Nel linguaggio naturale, la sintassi si riferisce a come sono disposte parole e frasi. La sintassi della shell è molto simile; si riferisce all'ordine delle operazioni.

Che cos'è un interprete?

Un interprete traduce singole istruzioni in codice macchina. 

Che cos'è un compilatore?

Un compilatore traduce programmi di alto livello in un linguaggio macchina più complesso. 

Come si esegue un file di shell?

Imposta i permessi con: chmod+x script-name-here.sh

Poi eseguilo con: ./script-name-here.sh oppure sh script-name-here.sh.

Argomenti
Data Science
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro