|
Sebbene generalmente lo usiamo per operazioni amministrative o di gestione dei file, il comfort de Linux estende la sua funzionalità ben oltre tale scopo, permettendoci di programmare script Questa guida non vuole essere un riferimento completo alla programmazione Bash, ma piuttosto un'introduzione ai comandi e alle strutture di base, che ci permetteranno di espandere la potenza del nostro sistema GNU / Linux. |
Cos'è uno "script"?
Fondamentalmente diciamo che è un file che contiene codice scritto in un certo linguaggio di programmazione che il sistema utilizza per un determinato compito. Non necessita di un input esterno o di un'interfaccia grafica, ma deve causare un output dei dati elaborati (anche se l'utente non li vede).
Il linguaggio usato da Bash è definito dal proprio interprete e combina la sintassi di altri Shell, come Korn Shell (ksh) o C Shell (csh). Molti dei comandi che vengono solitamente utilizzati nella console possono essere utilizzati anche negli script, ad eccezione di quelli che riguardano strettamente una particolare distribuzione.
Struttura di uno script
Per iniziare dobbiamo avere un editor di testo e voglia di programmare. I file che salviamo con estensione .sh possono essere eseguiti (o interpretati) dalla console, purché la prima riga sia la seguente:
#! / Bin / bash
Questo dice al sistema di utilizzare la console per eseguire il file. Inoltre, il carattere # ti consente di scrivere commenti. Per creare l'esempio più semplice aggiungiamo un'altra riga, vista nell'immagine seguente:
Il comando echo mostra un messaggio sullo schermo, in questo caso il tipico "Hello world!" Se lo salviamo e lo eseguiamo con la console vedremo il risultato.
Comandi di base
I seguenti comandi sono comuni e molto utili per qualsiasi tipo di programma. Chiariamo che ce ne sono molti altri, ma per ora tratteremo quanto segue.
Alias: consente di sostituire una stringa di parole con una più corta, consentendo la riduzione del codice.
#crea un alias chiamato per con l'indirizzo della cartella #Downloads alias per = '/ home / user / Downloads' # Ogni volta che vogliamo usarlo dobbiamo solo chiamare #la nuova parola per #Per distruggere quell'alias, usiamo unalias unalias per
break: permette di uscire immediatamente da un ciclo for, while, until o selezionare loop (studieremo in dettaglio i loop in seguito)
#Crea un ciclo che assegni i numeri da 1 a 5 #per ogni "giro del ciclo" per contatore in 1 2 3 4 5 do #Stampiamo il valore corrente della variabile #counter, che viene analizzato dal carattere $ echo " $ counter "#Se il valore del contatore è uguale a 3 se [$ counter –eq 3] allora #Il break esce dal ciclo per break fi done
continue - Simile a break, tranne per il fatto che ignora il ciclo corrente e passa a quello successivo.
#Crea un ciclo che assegni i numeri da 1 a 5 #per ogni "giro del ciclo" per il contatore in 1 2 3 4 5 do #Se il valore del contatore è uguale a 3 se [$ counter –eq 3] allora #Continua impedisce che il resto del ciclo #current venga analizzato passando al round successivo, ovvero il #valore 3 non verrà stampato. continua fi echo "$ counter" fatto
declare: dichiara le variabili e assegna loro dei valori, proprio come typeset (funzionano allo stesso modo). Possiamo combinarlo con alcune opzioni: -i dichiara interi; -r per variabili di sola lettura, il cui valore non può essere modificato; –A per array o "array"; -f per le funzioni; -x per variabili che possono essere "esportate" al di fuori dell'ambiente dello script stesso.
dichiarare –i num = 12 dichiarare –x pi = 3.14
aiuto: mostra la guida per un comando specifico.
lavori: mostra i processi in esecuzione.
#Con –c mostriamo il nome dei comandi, con –p # il pid (process id) di ogni processo. jobs -cp
let: valuta un'espressione aritmetica
let a = 11 let a = a + 5 #Finalmente stampiamo il valore di a che è 16 echo "11 + 5 = $ a"
local: crea variabili locali, che dovrebbero essere usate preferibilmente nelle funzioni dello script stesso per evitare errori. È possibile utilizzare le stesse funzioni del comando declare.
local v1 = "Questa è una variabile locale"
logout: consente di disconnettersi completamente da una Shell; utile nei casi in cui lavoriamo con più di una finestra Shell, in cui il comando exit consentirà di terminare solo una finestra alla volta.
printf: consente di stampare i dati e formattarli. Ha molte opzioni, quindi ne menzioneremo alcune.
#% f viene stampato come un numero mobile, n per la nuova riga # printf "% fn" 5 5.000000 # & d consente di passare numeri decimali come argomenti printf "Ci sono% d ordini valutati in% d dollari.n" 20 500 Ci sono 20 ordini valutati 500 Dollari.
read: legge una riga dallo standard input (modulo utilizzato per caricare dati tramite tastiera per esempio). Possiamo passare opzioni come: -t per dare un tempo limite di lettura; -a in modo che ogni parola sia assegnata a una posizione nell'array aname; -d per usare un delimitatore che verrà scritto alla fine della riga; tra gli altri.
echo "Inserisci il tuo nome e premi INVIO" # Leggi il nome della variabile leggi nome echo "Il tuo nome è $ nome"
tipo: descrive un comando e il suo comportamento. Può essere utile scoprire le definizioni dei dati per ogni comando.
type –a '[' #type ci dice che [è un comando incorporato di Shell [è un builtin di Shell # -a permette di trovare le directory che contengono # un eseguibile con il nome scritto. [è / usr / bin / [
ulimit: limita l'accesso e l'utilizzo di determinate risorse di sistema ai processi, ideale per programmi che consentono modifiche amministrative o che si rivolgono a diverse tipologie di utenti. Quando si imposta un limite, si scrive un numero che rappresenta i kilobyte del limite.
# Vediamo i nostri limiti attuali ulimit –a # -f permette di limitare gli utenti a non poter # creare file più grandi di 512000 Kb (500 #Mb) ulimit –f 512000 # -v limita la memoria virtuale del processo. ulimit –v 512000
attendere: attendere che un determinato processo o lavoro venga eseguito per continuare.
# Lo script attende che venga eseguito il processo di pid # 2585
aspetta 2585
Altri comandi utili che possiamo aggiungere agli script sono rappresentati da simboli.
!!: esegui di nuovo l'ultimo comando
! wer: esegue l'ultimo comando iniziato con l'espressione "wer".
'==', '! =', '>', '<', '> =' e '<=': operatori relazionali.
|: L'operatore OR generalmente utilizzato per unire due espressioni regolari.
: comando di escape che ti consente di formattare le espressioni. Ad esempio: a per un avviso acustico, n per una nuova riga, b per backspace, ecc.
