Introduzione al mondo di Bash

Comandi principali, nozioni fondamentali e creazione di script


Contenuti

Bash (acronimo di Bourne Again Shell) è una shell Unix, ovvero un’interfaccia tra l’utente e il sistema operativo, che permette di eseguire comandi e interagire con il sistema attraverso una serie di istruzioni. Nata come evoluzione della Bourne Shell (sh), è stata creata da Brian Fox nel 1989 e, da allora, è diventata una delle shell più diffuse, soprattutto nel mondo Linux. In questo articolo, esploreremo i comandi principali di Bash, alcune nozioni importanti e, infine, vedremo come creare e utilizzare gli script in Bash.

Comando Descrizione Esempio Parametri Importanti Descrizione Parametri
cd Cambia la directory corrente cd Documents - -
pwd Mostra il percorso della directory corrente pwd - -
ls Elenca il contenuto di una directory ls -l, -a, -t Formato lungo, Mostra file nascosti, Ordina per data di modifica
cp Copia file e directory cp file1.txt file2.txt -r, -p Copia ricorsiva, Preserva attributi
mv Sposta o rinomina file e directory mv file1.txt file2.txt - -
rm Rimuove file e directory rm file1.txt -r, -f Rimozione ricorsiva, Forza rimozione
mkdir Crea una nuova directory mkdir my_directory - -
rmdir Rimuove una directory vuota rmdir my_directory - -
touch Crea un nuovo file vuoto touch file.txt - -
cat Mostra il contenuto di un file cat file.txt - -
grep Cerca una stringa all’interno di un file grep “test” file.txt -i, -r, -n Case insensitive, Ricerca ricorsiva, Mostra numero di riga
echo Stampa a schermo una stringa echo “Hello, World!” -n, -e Non stampa newline, Abilita interpretazione di caratteri di escape
chmod Cambia i permessi di un file o directory chmod 755 file.txt - -
chown Cambia il proprietario di un file o directory chown user:group file.txt - -
zip Crea un nuovo file zip zip archivio.zip file1.txt file2.txt -r, -q, -m Aggiunge file ricorsivamente, Modalità silenziosa, Elimina file originali
unzip Estrae il contenuto da un file zip unzip archivio.zip -d, -o Specifica la directory di destinazione, Sovrascrive i file esistenti
exit Termina la sessione di Bash exit - -


Bash utilizza variabili d’ambiente per memorizzare informazioni relative al sistema, come il percorso delle directory dei programmi, il nome utente e altri dati. Per accedere al valore di una variabile, si utilizza il simbolo $, seguito dal nome della variabile (es. $PATH).

Le variabili d’ambiente sono un tipo speciale di variabili che vengono utilizzate per memorizzare informazioni di configurazione del sistema, come percorsi e impostazioni. Le variabili d’ambiente sono solitamente scritte in maiuscolo. Alcune variabili d’ambiente comuni includono PATH, HOME e USER.

Per visualizzare tutte le variabili d’ambiente, utilizza il comando:

1
env

Gli alias e le variabili in Bash consentono di personalizzare e semplificare la tua esperienza nella shell, rendendo più efficiente il tuo lavoro quotidiano. Utilizzando gli alias, puoi creare scorciatoie per comandi complessi o lunghi, mentre le variabili ti permettono di memorizzare e utilizzare informazioni e configurazioni in modo dinamico all’interno degli script e dei comandi.

Per approfondire ulteriormente su alias e variabili, prendi in considerazione i seguenti suggerimenti e pratiche avanzate:

Parametri delle variabili: Bash supporta diversi parametri per le variabili che consentono di manipolare i loro valori in vari modi. Ad esempio, puoi utilizzare la sintassi ${variabile#pattern} per rimuovere un prefisso che corrisponde a un pattern, o ${variabile%pattern} per rimuovere un suffisso:

1
2
file_name="example.txt"
echo ${file_name%.txt} # Output: example

Variabili locali e globali: In uno script Bash, le variabili sono globali per impostazione predefinita, il che significa che sono accessibili da qualsiasi parte dello script e da qualsiasi funzione. Tuttavia, è possibile creare variabili locali all’interno di una funzione utilizzando il comando local. Le variabili locali sono visibili solo all’interno della funzione in cui sono definite:

1
2
3
4
function example_function {
  local local_variable="I am local"
  global_variable="I am global"
}

Esportazione di variabili: Per rendere una variabile disponibile anche ai processi figli di una shell, è necessario esportarla utilizzando il comando export:

1
export MY_VARIABLE="This variable is available to child processes"

Alias avanzati: Gli alias possono anche utilizzare parametri posizionali per creare comandi più flessibili e potenti. Ad esempio, puoi creare un alias che copia un file in una directory specificata come parametro:

1
alias cpto='cp "$1" "$2"'

Per utilizzare questo alias, digita cpto file.txt /destination/directory.

Gestione degli alias: Per visualizzare l’elenco di tutti gli alias attualmente definiti nella shell, utilizza il comando alias senza argomenti. Per rimuovere un alias, utilizza il comando unalias seguito dal nome dell’alias:

1
unalias my_alias


Bash permette di redirigere l’input, l’output o l’output di errore di un comando verso un file o un altro comando. Per redirigere l’output, si utilizza il simbolo > (es. ls > output.txt). Per redirigere l’input, si utilizza il simbolo < (es. grep “ciao” < input.txt).

Le pipe sono un meccanismo di Bash che permette di collegare l’output di un comando all’input di un altro comando, utilizzando il simbolo | (es. ls | grep “test”).

Le wildcards sono caratteri speciali utilizzati per rappresentare uno o più caratteri in un pattern. Le wildcards più comuni sono * (che rappresenta qualsiasi sequenza di caratteri) e ? (che rappresenta un singolo carattere).

Gli script Bash sono semplici file di testo contenenti una sequenza di comandi, eseguiti in sequenza dall’interprete Bash. Per creare uno script, si crea un nuovo file con estensione .sh e si inseriscono i comandi che si desidera eseguire. Prima di iniziare a scrivere gli script, è importante includere la seguente riga all’inizio del file:

1
#!/bin/bash

Questa riga, chiamata “shebang”, indica al sistema operativo che il file deve essere eseguito utilizzando l’interprete Bash.

Ecco un esempio di script Bash molto semplice:

1
2
#!/bin/bash
echo "Hello, World!"

Per rendere lo script eseguibile, è necessario modificare i permessi del file utilizzando il comando chmod:

1
chmod +x my_script.sh

Dove my_script.sh è il nome del file dello script. Per eseguire lo script, è sufficiente digitare il percorso dello script nella shell:

1
./my_script.sh

Bash eseguirà i comandi nello script in sequenza, fornendo un output simile a quello che si otterrebbe se i comandi fossero eseguiti direttamente nella shell.

Gli script Bash possono essere resi più potenti e flessibili attraverso l’uso di variabili, cicli, condizioni e altre strutture di controllo del flusso. Questi elementi permettono di creare script più complessi e automatizzare una vasta gamma di compiti, semplificando e velocizzando il lavoro quotidiano.

La schedulazione di script Bash è un metodo utile ed efficiente per automatizzare compiti e processi ricorrenti sul tuo sistema. Uno dei principali strumenti per la pianificazione di compiti su sistemi Unix-like, come Linux e macOS, è il demone cron. In questo approfondimento, esploreremo come utilizzare cron per programmare l’esecuzione di script Bash e come gestire i cron job per ottimizzare i processi automatizzati.

cron è un demone che consente di pianificare l’esecuzione di comandi o script a intervalli regolari, specificati dall’utente. I compiti pianificati, chiamati “cron job”, sono definiti all’interno di un file speciale chiamato “crontab” (acronimo di “cron table”). Ogni utente ha il proprio crontab, che può essere modificato per aggiungere, rimuovere o modificare i cron job.

Un cron job è definito da una singola riga nel file crontab, composta da sei campi separati da spazi. I primi cinque campi rappresentano l’orario e la data in cui il cron job deve essere eseguito, mentre il sesto campo indica il comando o lo script da eseguire. La sintassi generale di un cron job è la seguente:

1
2
3
4
5
6
7
* * * * * <comando>
| | | | |
| | | | └── Giorno della settimana (0-7, dove 0 e 7 sono la domenica)
| | | └──── Mese (1-12)
| | └────── Giorno del mese (1-31)
| └──────── Ora (0-23)
└────────── Minuto (0-59)

Ad esempio, per pianificare uno script Bash chiamato backup.sh da eseguire ogni giorno alle 3:00 del mattino, il cron job nel crontab sarà:

1
0 3 * * * /path/to/backup.sh


Per visualizzare il tuo crontab corrente, utilizza il comando:

1
crontab -l

Per modificare il tuo crontab, utilizza il comando:

1
crontab -e

Questo aprirà il crontab nell’editor di testo predefinito del sistema. Aggiungi o modifica le righe secondo le tue esigenze, quindi salva ed esci dall’editor.

Per rimuovere tutti i cron job dal tuo crontab, utilizza il comando:

1
crontab -r

Attenzione!
Fai attenzione a non rimuovere cron job importanti senza intenzione.


I cron job inviano l’output e gli eventuali errori all’indirizzo email dell’utente, se configurato. Tuttavia, è possibile redirigere l’output e gli errori verso file di log specifici. Ad esempio, per redirigere l’output e gli errori del nostro script backup.sh ai file backup.log e backup.error.log, aggiungi la seguente riga al crontab:

1
0 3 * * * /path/to/backup.sh > /path/to/backup.log 2> /path/to/backup.error.log

In alternativa, è possibile redirigere sia l’output che gli errori nello stesso file di log:

1
0 3 * * * /path/to/backup.sh > /path/to/backup.log 2>&1

Se desideri evitare di ricevere email e non hai bisogno di registrare l’output o gli errori, puoi redirigere l’output e gli errori verso /dev/null:

1
0 3 * * * /path/to/backup.sh > /dev/null 2>&1


Poiché i cron job possono essere eseguiti automaticamente senza intervento umano, è importante prestare attenzione alla sicurezza. Assicurati che i tuoi script Bash e i file di configurazione siano accessibili solo agli utenti autorizzati e che le credenziali sensibili siano protette. È anche buona pratica eseguire i cron job con i privilegi minimi necessari per svolgere il compito.

In conclusione, la schedulazione di script Bash con cron è un modo efficace ed efficiente per automatizzare compiti e processi ricorrenti nel tuo sistema. Familiarizzare con la sintassi del crontab, la gestione dei cron job e le pratiche di monitoraggio e sicurezza ti permetterà di sfruttare al meglio le potenzialità di cron e migliorare la tua produttività.

Gli alias e le variabili sono due potenti strumenti che consentono di personalizzare e semplificare l’esperienza della shell Bash. In questo approfondimento, esamineremo come utilizzare gli alias per creare scorciatoie per comandi complessi o lunghi e come utilizzare le variabili per memorizzare informazioni e configurazioni utili.

Gli alias in Bash sono essenzialmente scorciatoie che permettono di eseguire comandi più lunghi o complessi utilizzando un nome abbreviato. Gli alias possono essere particolarmente utili per semplificare comandi che vengono utilizzati frequentemente o per creare comandi personalizzati che rispecchiano le tue preferenze.

Per creare un alias, utilizza il comando alias seguito dal nome dell’alias, un segno di uguale e il comando tra virgolette singole:

1
alias my_alias='comando'

Ad esempio, se vuoi creare un alias chiamato ll che esegue il comando ls -la (per elencare i file in formato dettagliato, inclusi i file nascosti), usa il seguente comando:

1
alias ll='ls -la'

Ora, digitando ll nella shell, otterrai lo stesso output che si otterrebbe digitando ls -la.

Gli alias creati direttamente nella shell sono temporanei e scompariranno quando la sessione di shell viene chiusa. Per rendere gli alias permanenti, aggiungili al file di configurazione della shell, che di solito è ~/.bashrc per Linux o ~/.bash_profile per macOS:

1
echo "alias ll='ls -la'" >> ~/.bashrc

Ricarica il file di configurazione per applicare immediatamente le modifiche:

1
source ~/.bashrc


Le variabili in Bash sono utilizzate per memorizzare informazioni e configurazioni che possono essere utilizzate all’interno di script o comandi. Le variabili possono contenere stringhe, numeri o altri tipi di dati.

Per assegnare un valore a una variabile, utilizza la sintassi variabile=valor. Non ci devono essere spazi attorno al segno di uguale:

1
my_variable="Hello, World!"

Utilizzo di variabili

Per utilizzare il valore di una variabile, precedi il nome della variabile con un simbolo del dollaro ($):

1
echo $my_variable


Sperimentare con alias e variabili ti aiuterà a personalizzare ulteriormente la tua esperienza nella shell Bash e a migliorare la tua produttività. Con la pratica, scoprirai nuovi modi per sfruttare queste potenti funzionalità per adattarle alle tue esigenze specifiche.

Lavorare con file ZIP dal terminale Linux può essere incredibilmente utile per l’automazione di backup, trasferimenti di file e compiti di gestione. In questa sezione, esploreremo come utilizzare i comandi zip e unzip in Bash per creare archivi ZIP, estrarre il loro contenuto e gestire file compressi efficacemente. Installazione di zip e unzip

Prima di poter utilizzare i comandi zip e unzip, assicurati che siano installati sul tuo sistema. Su Ubuntu o Debian, puoi installarli con il seguente comando:

1
sudo apt update && sudo apt install zip unzip -y

Creare un Archivio ZIP Per comprimere file o directory in un archivio ZIP, utilizza il comando zip. Ad esempio, per comprimere una directory chiamata my_folder in un file chiamato my_archive.zip, usa:

1
zip -r my_archive.zip my_folder

Il parametro -r indica a zip di lavorare ricorsivamente, inclusi tutti i file e le sottodirectory.

Estrarre un Archivio ZIP Per estrarre il contenuto di un archivio ZIP, utilizza il comando unzip. Ad esempio, per estrarre il contenuto di my_archive.zip nella directory corrente, esegui:

1
unzip my_archive.zip

Se desideri estrarre il contenuto in una directory specifica, usa l’opzione -d seguita dal nome della directory:

1
unzip my_archive.zip -d my_destination_folder

Visualizzare il Contenuto di un Archivio ZIP Prima di estrarre, potresti voler visualizzare il contenuto dell’archivio ZIP. Per fare ciò, utilizza il comando unzip con l’opzione -l:

1
unzip -l my_archive.zip

Questo comando elencherà tutti i file e le directory contenuti nell’archivio, senza estrarli.

Rimuovere File da un Archivio ZIP Per rimuovere un file da un archivio ZIP esistente senza decomprimerlo completamente, puoi utilizzare il comando zip con l’opzione -d:

1
zip -d my_archive.zip "file_da_rimuovere.txt"

Assicurati di includere il nome esatto del file come appare all’interno dell’archivio.

Aggiungere File a un Archivio ZIP Esistente Se desideri aggiungere file a un archivio ZIP esistente senza ricreare l’intero archivio, puoi farlo con il comando zip, semplicemente specificando il nome dell’archivio e i file da aggiungere:

1
zip my_archive.zip new_file.txt

Questo comando aggiungerà new_file.txt all’archivio my_archive.zip. Conclusioni

La gestione dei file ZIP tramite il terminale Bash offre un modo flessibile e potente per lavorare con file compressi. Che tu stia automatizzando backup, gestendo trasferimenti di file o semplicemente organizzando i tuoi dati, i comandi zip e unzip forniscono le funzionalità essenziali di cui hai bisogno per la gestione efficiente degli archivi ZIP.

Bash è una shell Unix potente e versatile, ampiamente utilizzata nei sistemi operativi Linux e macOS. Conoscere i comandi principali, le nozioni di base e le tecniche avanzate di Bash ti consentirà di sfruttare al meglio la shell e di lavorare in modo più efficiente ed efficace.

Gli script Bash possono aiutarti a automatizzare i compiti e a semplificare le attività complesse, mentre la pianificazione di script Bash con cron ti permette di eseguire automaticamente processi e compiti ricorrenti. Avere una solida conoscenza di Bash e delle sue funzionalità avanzate ti consentirà di ottenere il massimo dal tuo sistema operativo e di migliorare le tue competenze nell’amministrazione del sistema e nello sviluppo di software.