Ed eccoci alla seconda “lezione” sulla shell Bash (per chi fosse interessato, questa è la prima parte)..
Uno script è una sequenza di comandi che verrà eseguita su richiesta oppure automaticamente, per crearne uno avete bisogno semplicemente di un editor di testo, che sia nano o vi o vim o gedit (o qualsiasi altro) non importa. Uno script può essere richiamato semplicemente inserendo il suo “nome” nella shell, o può essere eseguito automaticamente dal sistema secondo le nostre impostazioni (molte operazioni all’avvio sono infatti degli script eseguiti in automatico).
Vediamo un piccolo esempio:
#!/bin/bash clear echo "Questo è il tuo primo script" echo "Benvenuto $USER"
Provate questo piccolo script e vedrete il risultato. 😉
Molto semplicemente, questo script visualizza le due stringhe indicate da [code]]czo0OlwiZWNob1wiO3tbJiomXX0=[[/code], dopo aver ripulito la console (con il comando [code]]czo1OlwiY2xlYXJcIjt7WyYqJl19[[/code]). [code]]czo1OlwiJFVTRVJcIjt7WyYqJl19[[/code] è la variabile di ambiente che contiene il nome utente con cui siamo loggati al momento. Focalizziamo la nostra attenzione sulla prima riga: [code]]czoxMTpcIiMhL2Jpbi9iYXNoXCI7e1smKiZdfQ==[[/code].
Questo serve a “dire” al sistema quale shell stiamo usando, ovviamente a patto che questa sia localizzata in [code]]czo0OlwiL2JpblwiO3tbJiomXX0=[[/code]. E’ chiaro quindi che ogni script deve iniziare con questa riga!!
Può essere poi utile inserire dei commenti nel nostro script, i quali non saranno visualizzati, ma potrebbero sempre tornare utili nel caso in cui riprendiamo il codice dopo mesi dalla sua creazione. Lo script visto prima diventa semplicemente:
#!/bin/bash # Pulisco lo schermo clear # Stampo le seguenti due righe echo "Questo è il tuo primo script" echo "Benvenuto $USER" # $USER contiene il nome utente # con cui siamo loggati
Abbiamo parlato di variabili, dobbiamo dire che queste sono sempre indicate da lettere tutte maiuscole, e sono di due tipi:
- globali, ovvero disponibili per tutte le shell, visualizzabili col comando [code]]czo4OlwicHJpbnRlbnZcIjt7WyYqJl19[[/code];
- locali, ovvero disponibili solo per la shell al momento utilizzata, visualizzabili col comando [code]]czozOlwic2V0XCI7e1smKiZdfQ==[[/code] (che attenzione visualizza anche le funzioni attualmente in memoria).
Ovviamente, locali o globali che siano, le variabili hanno anche un tipo, ovvero possono essere stringhe, numeri, array, e ovviamente possono anche essere dichiarate come costanti. In genere, la convenzione usata nella dichiarazione di una variabile è semplice:
NOMEVARIABILE="valore"
Attenzione perchè una variabile così dichiarata è disponibile solo nella shell corrente.
Caratteri speciali
- carattere di escape: si tratta semplicemente del carattere \, serve ad indicare di non considerare altri simboli speciali. Ad esempio: [code]]czoxMTpcImVjaG8gXFwkVVNFUlwiO3tbJiomXX0=[[/code] non stamperà il valore della variabile di ambiente [code]]czo1OlwiJFVTRVJcIjt7WyYqJl19[[/code], ma esattamente la stringa $USER;
- apici doppi: le famore virgolette (” “), servono a mantenere il valore letterale di un carattere, ad eccezione del $. Ad esempio [code]]czoxMjpcImVjaG8gXCIkVVNFUlwiXCI7e1smKiZdfQ==[[/code] stamperà il nome dell’utente connesso;
- apici singoli: ovvero ‘VARIABILE’. In questo caso si conserva il valore letterale dei caratteri, riprendendo l’esempio precedente [code]]czoxMjpcImVjaG8gXCckVVNFUlwnXCI7e1smKiZdfQ==[[/code] stamperà a video proprio la stringa $USER
Attenzione alla combinazione di questi caratteri speciali, si potrebbero ottenere effetti del tutto imprevisti!!
In uno script di shell possono ovviamente essere usati operatori aritmetici e logici, si tratta di quelli classici, comuni a molti linguaggi di programmazione. Ne trovate una esauriente lista a questo link.
Alias
Concludiamo questo articolo con due comandi molto importanti e molto usati per semplificare la vita del programmatore: alias e unalias. A cosa servono?? Semplice, un alias è una parola che “sostituisce” altre, ad esempio, il comando [code]]czo2OlwibHMgLWFsXCI7e1smKiZdfQ==[[/code] riporta l’elenco di tutti i file presenti nella directory corrente, compresi i file nascosti, in una visualizzazione verticale con molte informazioni aggiuntive.
Ora, il comando:
alias lsa='ls -al'
Non fa altro che consentirci di usare il comando [code]]czozOlwibHNhXCI7e1smKiZdfQ==[[/code] invece di [code]]czo2OlwibHMgLWFsXCI7e1smKiZdfQ==[[/code]. Scrivendo semplicemente [code]]czo1OlwiYWxpYXNcIjt7WyYqJl19[[/code] nella console, verrà restituita la lista degli alias correnti. Possiamo infine eliminare un alias col comando [code]]czo3OlwidW5hbGlhc1wiO3tbJiomXX0=[[/code], nell’esempio precedente:
unalias lsa
Alla prossima..
questo corso e’ quello di cui ho bisogno. Breve e conciso ma soprattutto chiaro per io novellino. Vorrei chiederti un favore, io cio’ ubuntu server 11.10, come si fa a cambiare il prompt con un’altro paio di parole? Daqualche parte ho letto di usare il comando PS1 ma la risposta e’ “not found” . grazie
Ciao..
Allora, ti dice not found perchè PS1 è una variabile di ambiente, non un comando, quindi non può essere usato da solo (dai uno sguardo alla prima parte di questa guida per un piccolo chiarimento). Per vederne il valore devi digitare
echo $PS1
Ovviamente modificando il valore di questa variabile, cambia il prompt. Prova ad esempio a digitare qualcosa del genere:
PS1="Prompt della shell > "
Vedrai che il prompt si modifica diventando esattamente uguale alla stringa che ho fornito. Ovviamente una modifica di questo tipo scompare appena chiudi la shell o riavvii il sistema. Per renderla permanente devi modificare un file che si trova di solito nella directory dell’utente attivo e su Ubuntu generalmente si chiama
.bashrc
. Usando i giusti caratteri di escape otterrai il prompt personalizzato che meglio credi.Ti lascio un link che spero potrà esserti utile: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
Alla prossima..