GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Scripting Introduzione Tutorial con 5 esempi pratici

Simile alle nostre serie Unix Sed e Unix Awk in corso, pubblicheremo diversi articoli sullo scripting Bash, che tratterà tutte le tecniche di scripting bash con esempi pratici.

Shell è un programma che interpreta i comandi dell'utente. I comandi possono essere immessi direttamente dall'utente o letti da un file chiamato script della shell.

Shell viene chiamata come shell interattiva, quando legge direttamente l'input dall'utente.

La shell viene chiamata come shell non interattiva, quando legge i comandi da un file e lo esegue. In questo caso, la shell legge ogni riga di un file di script dall'alto verso il basso ed esegue ogni comando come se fosse stato digitato direttamente dall'utente.

Stampa il valore della variabile shell incorporata $-, per sapere se la shell è interattiva o non interattiva.

# echo $-
himBH

Nota:la variabile $- contiene una "i" quando la shell è interattiva .

Unix ha una varietà di shell. Bourne shell (sh), Bourne di nuovo shell (bash), C shell (csh), Korn shell (ksh), Tenex C shell (tcsh). Usa i comandi what o whereis unix per scoprire dove si trova una shell specifica come mostrato di seguito.

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

Puoi passare da una shell all'altra, digitando il nome della shell. Ad esempio, digita csh per passare alla shell C.

Scrittura ed esecuzione di script di shell

Esempio 1. Script Hello World Bash

  1. Crea uno script digitando le seguenti due righe in un file utilizzando il tuo editor preferito.
  2. $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  3. Puoi scegliere qualsiasi nome per il file. Il nome del file non dovrebbe essere uguale a nessuno dei comandi integrati di Unix.
  4. Lo script inizia sempre con i due caratteri '#!' che si chiama she-bang. Questo per indicare che il file è uno script e deve essere eseguito utilizzando l'interprete (/bin/bash) specificato dal resto della prima riga del file.
  5. Esegui lo script come mostrato di seguito. In caso di problemi durante l'esecuzione di uno script di shell, fare riferimento al tutorial sull'esecuzione di uno script di shell
  6. $ bash helloworld.sh
    Hello World
  7. Quando esegui il comando "bash helloworld.sh", avvia la shell non interattiva e le passa il nome del file come argomento.
  8. La prima riga dice al sistema operativo quale shell generare per eseguire lo script.
  9. Nell'esempio sopra, l'interprete bash che interpreta lo script ed esegue i comandi uno per uno dall'alto verso il basso.
  10. Puoi persino eseguire lo script, senza "bash" iniziale di:
    • Cambia il permesso sullo script per consentire a te (Utente) di eseguirlo, usando il comando “chmod u+x helloworld.sh”.
    • La directory contenente lo script dovrebbe essere inclusa nella variabile di ambiente PATH. Se non incluso, puoi eseguire lo script specificando il percorso assoluto dello script.
  11. echo è un comando che restituisce semplicemente l'argomento che gli diamo. Viene anche utilizzato per stampare il valore della variabile.

File di avvio di Bash

Come discusso in precedenza nel nostro articolo sulla sequenza di esecuzione per .bash_profile e file correlati, quando bash viene invocato come shell interattiva, legge ed esegue prima i comandi da /etc/profile. Se /etc/profile non esiste, legge ed esegue i comandi da ~/.bash_profile, ~/.bash_login e ~/.profile nell'ordine indicato. L'opzione –noprofile può essere utilizzata all'avvio della shell per inibire questo comportamento.

In genere il tuo bash_profile esegue ~/.bashrc. Se lo desideri, puoi mostrare un messaggio di benvenuto. Questo viene eseguito solo al primo accesso. Puoi esportare le variabili come vuoi e puoi impostare gli alias che saranno in esecuzione e disponibili una volta aperta la shell. Quando una shell di login esce, Bash legge ed esegue i comandi dal file ~/.bash_logout.

Esempio 2. Stampa un messaggio di benvenuto quando accedi

Digita i seguenti contenuti nel tuo file bash_profile. Se il file non esiste, crea un file con il contenuto seguente.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

Quando accedi a una shell interattiva, vedrai i messaggi di benvenuto come mostrato di seguito.

login as: root
root@dev-db's password:
Welcome on dev-db

Esempio 3. Stampa delle informazioni relative al sistema

Quando accedi a una shell interattiva, puoi mostrare il nome del kernel installato nel server, la versione bash, il tempo di attività e il tempo nel server.

$cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

Quando avvii una shell interattiva, stampa il messaggio come mostrato di seguito.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Esempio 4. Stampa gli ultimi dettagli di accesso

Se più utenti utilizzano la stessa macchina con lo stesso accesso, dettagli come la macchina da cui è avvenuto l'ultimo accesso e l'ora in cui hanno effettuato l'accesso sarebbero i dettagli più utili. Questo esempio stampa gli ultimi dettagli di accesso durante l'avvio di una shell interattiva.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

ultimolog | grep "radice" | awk {'print "Ultimo accesso da:"$3

print "Data e ora ultimo accesso:",$4,$5,$6,$7,$8,$9;}'
Durante l'avvio, riceverai il messaggio come mostrato di seguito.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Ultimo accesso da:sasikala-laptop

Data e ora ultimo accesso:mar 22 febbraio 11:24:01 +0100 2010

Esempio 5. Esporta variabili e imposta alias durante l'avvio

I comandi più comuni che utilizzerai nei tuoi file .bashrc e .bash_profile sono il comando export e alias.

Un alias sta semplicemente sostituendo un pezzo di testo con un altro. Quando esegui un alias, sostituisce semplicemente ciò che hai digitato con ciò a cui è uguale l'alias. Ad esempio, se vuoi impostare un alias per il comando ls per elencare i file/le cartelle con i colori, procedi come segue:

alias ls 'ls --color=tty'

Se aggiungi questo comando a uno dei file di avvio, puoi eseguire il comando ls, dove verrà automaticamente sostituito con il comando ls –color=tty.

Il comando Export viene utilizzato per impostare una variabile di ambiente. Varie variabili di ambiente vengono utilizzate dal sistema o da altre applicazioni. Sono semplicemente un modo per impostare parametri che qualsiasi applicazione/script può leggere. Se imposti una variabile senza il comando di esportazione, quella variabile esiste solo per quel particolare processo.

Nell'esempio seguente, sta esportando la variabile di ambiente HISTSIZE. La riga che inizia con # è una riga di commento.

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}

Linux
  1. Quale interprete di shell esegue uno script senza Shebang?

  2. Tutorial Awk:Comprendi le variabili Awk con 3 esempi pratici

  3. Esercitazione sullo stato di uscita di Bash Shell con esempi pratici

  4. Il tutorial Ultimate Bash Array con 15 esempi

  5. 15 utili comandi integrati di Bash Shell (con esempi)

Scripting Bash – Spiegazione del comando Printf con esempi

Bash Scripting – Array associativo spiegato con esempi

Bash Scripting – Array indicizzato spiegato con esempi

Tutorial passo passo sullo scripting della shell

Tutorial sulle funzioni di Bash Shell con 6 esempi pratici

Script Bash per Loop spiegato con esempi