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-rper le cartelle).rm: Rimuove file o cartelle (usa-iper 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-Locationo semplicementepwd: Mostra il percorso della directory corrente, simile apwdin Unix.Get-ChildItemo semplicementels: Elenca file e cartelle nella directory corrente, equivalente alsin Unix.Set-Locationo semplicementecd: Cambia directory.cdsenza argomenti ti porta alla directory home in PowerShell concd ~.New-Item -ItemType Directory -Name 'nomeDirectory': Crea una nuova directory, simile amkdirin Unix.Remove-Item -Path 'nomeDirectory' -Force: Rimuove una directory, anche se non vuota. Equivalente armdirin 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 amvin Unix.Copy-Item -Path 'origine' -Destination 'destinazione': Copia file o cartelle, simile acpin Unix. Usa-Recurseper copiare cartelle.Remove-Item -Path 'file' -Force: Rimuove file o cartelle, simile armin Unix. Usa-Forceper rimuovere senza conferme e-Recurseper 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/morein Unix.Get-Content 'file': Mostra l’intero contenuto di un file, equivalente acatin Unix.Get-Content 'file' -Head <numero>: Mostra le prime righe di un file, simile aheadin Unix.Get-Content 'file' -Tail <numero>: Mostra le ultime righe di un file, equivalente atailin 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.