Appendice A — La Shell
A.1 Che cos’è una Shell?
Una shell è un programma che riceve comandi dall’utente tramite tastiera (o da file) e li passa al sistema operativo per l’esecuzione. Può essere accessibile tramite un terminale (o un emulatore di terminale).
A.1.1 Breve Storia della Shell
- 1971: Ken Thompson di Bell Labs sviluppa la shell per UNIX.
- 1977: Stephen Bourne introduce la Bourne shell (sh).
- Dopo il 1977: Viene sviluppata la C shell (csh) e tcsh.
- Bash: Sviluppata da Brian Fox come sostituto migliorato della Bourne shell.
- 1990: Paul Falsted sviluppa Zsh, che diventa la shell predefinita per macOS dal 2019.
A.1.2 Windows vs macOS/Linux
- Windows 10: È possibile utilizzare Bash attivando il Windows Subsystem for Linux. Tuttavia, l’ambiente preferito è solitamente PowerShell.
- macOS/Linux: Zsh è la shell predefinita in entrambi i sistemi. È consigliabile sfruttare l’applicazione warp per un’esperienza utente moderna e ottimizzata.
A.1.3 Comandi di Base Unix
pwd
: Mostra il percorso della directory corrente.ls
: Elenca file e cartelle nella directory corrente.cd
: Cambia directory. Senza argomenti, ti porta alla directory home.mkdir
: Crea una nuova directory.rmdir
: Rimuove una directory vuota.- Importante: Evitare spazi nei nomi di file e cartelle.
A.1.3.1 Gestione File
mv
: Rinomina o sposta file (usa\
o''
per i nomi di file con spazi).cp
: Copia file o cartelle (usa-r
per le cartelle).rm
: Rimuove file o cartelle (usa-i
per confermare prima di eliminare).
A.1.3.2 Visualizzazione e Manipolazione Contenuti dei File
less
/more
: Visualizza il contenuto dei file con possibilità di navigazione.cat
: Mostra l’intero contenuto di un file.head
: Mostra le prime righe di un file.tail
: Mostra le ultime righe di un file.
A.1.4 Comandi di Base PowerShell
Per adattare i comandi Unix per l’utilizzo in PowerShell di Windows, molti dei comandi rimangono simili grazie alla natura cross-platform di PowerShell e alla sua flessibilità nel gestire sia gli stili di comando Unix che quelli tradizionali di Windows. Ecco come si traducono i comandi:
Get-Location
o semplicementepwd
: Mostra il percorso della directory corrente, simile apwd
in Unix.Get-ChildItem
o semplicementels
: Elenca file e cartelle nella directory corrente, equivalente als
in Unix.Set-Location
o semplicementecd
: Cambia directory.cd
senza argomenti ti porta alla directory home in PowerShell concd ~
.New-Item -ItemType Directory -Name 'nomeDirectory'
: Crea una nuova directory, simile amkdir
in Unix.Remove-Item -Path 'nomeDirectory' -Force
: Rimuove una directory, anche se non vuota. Equivalente armdir
in Unix, ma più potente perché può rimuovere anche directory con contenuti utilizzando il parametro-Force
.
A.1.4.1 Gestione File
Move-Item -Path 'origine' -Destination 'destinazione'
: Rinomina o sposta file, equivalente amv
in Unix.Copy-Item -Path 'origine' -Destination 'destinazione'
: Copia file o cartelle, simile acp
in Unix. Usa-Recurse
per copiare cartelle.Remove-Item -Path 'file' -Force
: Rimuove file o cartelle, simile arm
in Unix. Usa-Force
per rimuovere senza conferme e-Recurse
per rimuovere cartelle con contenuti.
A.1.4.2 Visualizzazione e Manipolazione Contenuti dei File
Get-Content 'file' | More
: Visualizza il contenuto dei file con possibilità di navigazione, simile aless
/more
in Unix.Get-Content 'file'
: Mostra l’intero contenuto di un file, equivalente acat
in Unix.Get-Content 'file' -Head <numero>
: Mostra le prime righe di un file, simile ahead
in Unix.Get-Content 'file' -Tail <numero>
: Mostra le ultime righe di un file, equivalente atail
in Unix.
Con la pratica, la riga di comando diventa uno strumento molto efficiente. Questa breve guida fornisce le basi per iniziare a esplorare e gestire i file dal terminale, offrendo una base di partenza per ulteriori apprendimenti (es., Robbins, 2016). La familiarità con la shell è fondamentale nella data science.