Bash
Bash (acronimo per Bourne Again SHell) è una shell sviluppata nell'ambito del progetto GNU come alternativa libera di Bourne shell. Il nome è un calembour poiché Bourne again (un'altra Bourne [shell]) è omofono a born again (rinascita). Distribuita sotto licenza GNU GPL la shell è presente in diversi sistemi operativi Unix-like quali GNU/Linux, FreeBSD, NetBSD, macOS, Solaris e MINIX.[1] È inoltre disponibile su Windows 10 e Windows 11 tramite Windows Subsystem for Linux.[1] In macOS bash era la shell di default fino a macOS Mojave, mentre da macOS Catalina è stata sostituita da zsh.[2] DescrizioneCaratteristicheTecnicamente bash è un clone evoluto della shell standard di Unix (/bin/sh). Altre shell alternative a bash e piuttosto diffuse sono la Korn shell, la C shell, Zsh e tcsh. Si tratta di un interprete di comandi che permette all'utente di comunicare col sistema operativo attraverso una serie di funzioni predefinite, o di eseguire programmi e script. Bash è in grado di eseguire i comandi che le vengono passati, utilizzando la redirezione dell'input e dell'output per eseguire più programmi in cascata in una pipeline software, passando l'output del comando precedente come input del comando successivo. Oltre a questo, essa mette a disposizione un semplice linguaggio di scripting nativo che permette di svolgere compiti più complessi, non solo raccogliendo in uno script una serie di comandi, ma anche utilizzando variabili, funzioni e strutture di controllo di flusso. Bash e lo standard POSIXIl comportamento predefinito di bash diverge da quello dello standard POSIX, ma esso si può ottenere in quattro modi:
File letti all'avvioAlla partenza, bash tenta di caricare automaticamente una serie di file:
All'uscita di una shell interattiva di login, bash carica il file
L'utente può modificare i file nella propria home directory per personalizzare il proprio ambiente di lavoro. Quando bash è avviata non interattivamente (ad esempio per eseguire uno script di shell) essa controlla se esiste la variabile d'ambiente Esempi esplicativiIl seguente script permette di creare un archivio in " #!/bin/bash
tar -vzcf /tmp/home.tgz ~
Un altro esempio per i sistemi basati su Debian è quello di poter aggiornare e pulire il sistema con il seguente script: #!/bin/bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoclean
sudo apt-get clean
Creando in una delle directory elencate dalla variabile d'ambiente Strutture condizionaliConfronta se i file " #!/bin/bash
if cmp file_a file_b &>/dev/null; then
echo "I File a e b sono identici."
else
echo "I File a e b sono diversi."
fi
Controlla se il file " #!/bin/bash
if [ -f prova.txt ]; then
echo "Il file prova.txt esiste."
else
echo "Il file prova.txt non esiste o non è un file"
fi
Chiede una riga in input e mostra un messaggio in base al contenuto: #!/bin/bash
echo "Scrivi qualcosa e premi Invio:"
read linea
case "$linea" in
uno)
echo "Hai digitato 'uno'"
;;
due|tre)
echo "Hai digitato 'due' oppure 'tre'"
;;
q*)
echo "Hai digitato qualcosa che inizia con 'q'"
;;
*)
echo "Hai digitato qualcosa che non conosco"
;;
esac
Note
Bibliografia
Voci correlateAltri progetti
Collegamenti esterni
|