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 semplicemente pwd: Mostra il percorso della directory corrente, simile a pwd in Unix.

  • Get-ChildItem o semplicemente ls: Elenca file e cartelle nella directory corrente, equivalente a ls in Unix.

  • Set-Location o semplicemente cd: Cambia directory. cd senza argomenti ti porta alla directory home in PowerShell con cd ~.

  • New-Item -ItemType Directory -Name 'nomeDirectory': Crea una nuova directory, simile a mkdir in Unix.

  • Remove-Item -Path 'nomeDirectory' -Force: Rimuove una directory, anche se non vuota. Equivalente a rmdir 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 a mv in Unix.

  • Copy-Item -Path 'origine' -Destination 'destinazione': Copia file o cartelle, simile a cp in Unix. Usa -Recurse per copiare cartelle.

  • Remove-Item -Path 'file' -Force: Rimuove file o cartelle, simile a rm 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 a less/more in Unix.

  • Get-Content 'file': Mostra l’intero contenuto di un file, equivalente a cat in Unix.

  • Get-Content 'file' -Head <numero>: Mostra le prime righe di un file, simile a head in Unix.

  • Get-Content 'file' -Tail <numero>: Mostra le ultime righe di un file, equivalente a tail 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.