La Shell#
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).
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.
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.
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.
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).
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.
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
.
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.
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.
Suggerimenti per una Gestione Ottimale dei File e delle Cartelle
È 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. La familiarità con la shell è fondamentale nella data science.