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.
È cruciale familiarizzarsi con l’utilizzo dei percorsi relativi per semplificare gli spostamenti tra le diverse directory. L’impiego dei percorsi relativi rende il processo di navigazione più intuitivo e meno incline agli errori.
Nomi Chiari e Concisi: Evitate di includere spazi nei nomi dei file e delle cartelle. Preferite l’utilizzo di trattini bassi (
_
) per separare le parole e mantenere una struttura leggibile e facilmente comprensibile.Evitare Caratteri Speciali: È importante evitare l’inserimento di caratteri speciali come asterischi (
*
), dollari ($
), slash (/
,\
), punti (.
), virgole (,
), punti e virgole (;
), parentesi (()
), parentesi quadre ([]
), parentesi graffe ({}
), ampersand (&
), barre verticali (|
), punti esclamativi (!
), punti interrogativi (?
) nei nomi dei file e delle cartelle. Talvolta, anche l’uso del trattino (-
) può causare problemi; quindi è consigliabile evitarlo. Questi caratteri possono generare problemi di compatibilità con alcuni sistemi operativi o applicazioni, rendendo più complessa la gestione dei file.Differenziazione tra Maiuscole e Minuscole: Unix distingue tra maiuscole e minuscole (tratta le lettere come oggetti distinti), mentre Windows non lo fa. Per evitare confusioni, è consigliabile adottare una politica conservativa: considerate i nomi che differiscono solo per la case delle lettere come distinti.
Seguendo questi consigli, è possibile ottimizzare notevolmente l’organizzazione e la gestione dei propri file, migliorando l’efficienza del lavoro e riducendo il rischio di errori.
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.