Dispensa Script Linux 4A-In

8
4AIN DISPENSE SCRIPT LINUX

Transcript of Dispensa Script Linux 4A-In

  • 4AIN

    DISPENSE SCRIPT LINUX

  • Dispensa Script per Linux Autori : classe 4A/IN 1

    1)gruppo : Raffaele Palazzi , Alex Giacomini , Denis Bernovschi

    While

    Sintassi di base :

    while [ condition ] do command1 command2 commandN done Teoria : Il ciclo il ciclo di base di qualsiasi linguaggio di programmazione ; il ciclo viene eseguito ogni qualvolta la condizione impostata viene verificata correttamente , ed esegue le istruzioni comprese nel blocco do/done . Di seguito abbiamo riportato alcuni esempi : Script 1 #!/bin/sh INPUT_STRING=hello while [ "$INPUT_STRING" != "bye" ] do echo "Please type something in (bye to quit)" read INPUT_STRING echo "You typed: $INPUT_STRING" done Script 2 #!/bin/bash counter=$1 factorial=1 while [ $counter -gt 0 ] do factorial=$(( $factorial * $counter )) counter=$(( $counter - 1 )) done echo $factorial Script 3 #!/bin/bash a=10 b=0 while [ $a -gt 1 ] do b=0 ((a--)) echo $a while [ $b -le 10 ] do

    ((b++)) echo $b done done echo FINE

    Il seguente script testa il passaggio di una stringa , e ne verifica l'uguaglianza, quando simile termina .

    Il seguente script esegue il calcolo del fattoriale

    del n. che gli passiamo

    Il seguente script esegue 2 cicli while annidati

  • Dispensa Script per Linux Autori : classe 4A/IN 2

    Il Ciclo Until/Do While

    2)gruppo : Giampaoli Amedeo , Licci Giacomo , De Cesesaris Giacomo

    Sintassi di base :

    until[ condition ] do Varie Istruzioni done

    Teoria : Il Ciclo Until (o Do While) funziona essenzialmente come il ciclo while, con l' eccezione che il ciclo viene eseguito finch la condizione prestabilita nel ciclo non verificata, mentre quando lo il ciclo termina. Il risultato finale lo stato d' uscita dell' ultimo comando eseguito nel ciclo, oppure zero se nessun comando stato eseguito, la condizione pu essere intesa come un qualsiasi comando che pu uscire con un risultato di successo o fallimento e le istruzioni all' interno del ciclo possono essere un qualsiasi comando UNIX, script o costrutto di Shell. Script 1 #!/bin/bash # Questo script copia file dalla mia directory home in quella del web server. # Una nuova directory viene creata ogni ora. # Se le immagini occupano troppo spazio, le pi vecchie vengono rimosse. while true; do DISCOPIENO=$(df -h $WEBDIR | grep -v File | awk '{print $5 }' | cut -d "%" -f1 -) until [ $DISCOPIENO -ge "90" ]; do DATA=`date +%Y%m%d` ORA=`date +%H` mkdir $WEBDIR/"$DATA" while [ $ORA -ne "00" ]; do DESTDIR=$WEBDIR/"$DATA"/"$ORA" mkdir "$DESTDIR" mv $PICDIR/*.jpg "$DESTDIR"/ sleep 3600 ORA=`date +%H` done DISCOPIENO=$(df -h $WEBDIR | grep -v File | awk '{ print $5 }' | cut -d "%" -f1 -) done DARIMUOVERE=$(find $WEBDIR -type d -a -mtime +30) for i in $DARIMUOVERE; do rm -rf "$i"; done done Il seguente script riordinaimmagini.sh, verifica la disponibilit di spazio su disco. Se non reperibile spazio su disco, rimuove le immagini dai mesi precedenti:

  • Dispensa Script per Linux Autori : classe 4A/IN 3

    Il Ciclo For 3)gruppo : Ciro Palmese , Omar Macciaroni , Gorini Francesco Sintassi di base :

    for NOME [in LISTA]; do COMANDI; done Teoria :

    Il ciclo for il primo dei tre costrutti di ciclo della Shell di Linux. Questo ciclo consente di specificare un elenco di valori e una lista lista di comandi che viene eseguita per ciascun valore dell'elenco. Analisi dei comandi: Il comando [in LISTA] se non presente viene sostituito con $@ (parametri che parte da 1) ed in questo caso for esegue COMANDI per ogni parametro posizionale. Inoltre il comando [in LISTA] pu essere qualsiasi elenco di parole, stringhe o numeri, che possono essere gi scritte oppure prodotte da qualsiasi comando. Il comando NOME pu essere sostituito con il nome di qualsiasi variabile solitamente il nome usato i. FUNZIONALITA': COMANDI per andare in esecuzione pu essere un qualsiasi comando appartenete al sistema operativo o alla Shell. La prima volta che viene eseguito il ciclo, NOME viene settato con la prima voce della LISTA. La seconda volta, il suo valore viene settato con la seconda voce in lista ecc... Il ciclo termina quando NOME ha assunto ciascun valore di LISTA e non rimasta alcuna voce in LISTA. Dopo l'esecuzione del ciclo avremo due possibilit in uscita: 1----> se il comandi vengono eseguiti il risultato l'ultima operazione dei comandi 2----> se i comandi non vengono eseguiti invece il risultato sar 0. Script 1 #!/bin/bash for arg in "$var1" "$var2" "$var3" ... "$van" # Al 1mo passo del ciclo, arg = $var1 # Al 2do passo del ciclo, arg = $var2 # Al 3zo passo del ciclo, arg = $var3 # ... # Al passo Nmo del ciclo, arg = $varN

    Ad ogni passo del ciclo, arg assume il valore di ognuna delle successive variabili elencate in lista.

  • Dispensa Script per Linux Autori : classe 4A/IN 4

    If then else

    4) Gruppo: Luca Mezzanotti, Giovanni Arduini

    Sintassi di base:

    If [ condizione ] then Istruzione 1 else istruzione 2 fi

    #!/bin/bash

    a=5 b=4 if [ $a -eq $b ]; then echo "buongiorno" else echo "buonasera" fi exit 0 Condizione: [ $a -eq $b ] [ ] comando di verifica $a e $b sono le due variabili da confrontare, $ indica la variabile -eq l'operatore di confronto, che in questo caso significa uguale NB :

    La prima riga della selezione pu essere scritto in due modi 1.if [ condizione ] then 2. if [ condizione ]; then

    Questo per dire che quando if e then sono sulla stessa riga occorre mettere un punto e virgola subito dopo il comando

    di verifica (o enunciato if). Ovviamente come su un qualsiasi linguaggio di programmazione il comando else pu essere omesso. Dunque l'else

    facoltativo. In tal caso se la condizione non vera, si esce dallo script senza che venga eseguito alcun comando.

    Operatori logici tra interi -ne indica il not ( ! )if [ $a -ne $b ] -gt: indica il maggiore ( > )if [ $a -gt $b ] -ge: indica il maggiore uguale ( >= ) if [ $a -ge $b ] -lt: indica il minore ( < )if [ $a -lt $b ]

  • Dispensa Script per Linux Autori : classe 4A/IN 5

    -le: indica il minore uguale ( $(basename $A) fi exit 0 Questo script controlla se il documento ciao.txt esiste ed regolare, se ci vero dice in output va bene, altrimenti lo crea

  • Dispensa Script per Linux Autori : classe 4A/IN 6

    Comando Grep & Set

    5)gruppo : Ragozzini Alessandro , Roberti Davide , Russo Alex

    Sintassi di base:

    grep [opzioni] [-e] modello1 [file1][file2 ]

    Teoria :

    Il comando grep della shell di linux ricerca in uno o pi file di testo le linee che corrispondono alla stringa da noi scelta.Il comando trova largo utilizzo nella ricerca delle occorrenze di una data parola. I parametri (facoltativi) [file] e [file2] indicano i nomi (o

    all'occorrenza interi percorsi) dei file in cui ricercare la stringa. Il parametro [modello] indica la stringa da ricercare.

    Opzioni:

    -i che disabilita la caratteristica di case sensitive, ovvero ignora la differenza tra minuscole e maiuscole -n che va a numerare la riga di risultato con il numero di linea in cui si trova l'occorrenza all'interno del file -l Indica solo i nomi dei file in cui stata trovata almeno una corrispondenza (ciascun file elencato una sola volta, indipendentemente dal numero di corrispondenze trovate) -v nega i modelli specificati, restituendo quindi le linee che NON contengono la stringa ricercata -E I modelli sono espressioni regolari estese invece che espressioni regolari di base -F i modelli verranno ricercati in maniera LETTERALE -c Produce per ciascun file solo il conteggio del numero di linee che corrispondono

    Storia : ORIGINE DEL NOME GREP

    Il nome del programma deriva dal comando g/re/p dell' editor di testo "ed" che svolge una funzione simile, ovvero ricercare globalmente (ovvero in tutto il file e non in una sola linea) una espressione regolare regular espression) e di mostrare (print) le corrispondenze.

    Comando Set

    Il comando set modifica il valore delle variabili interne di uno script. Un possibile uso quello di attivare/disattivare le opzioni, legate al funzionamento della shell stessa, che determinano il comportamento dello script. Un'altra applicazione quella di reimpostare i parametri posizionali passati ad uno script con il risultato dell'istruzione (set [comando]). Lo script assume perci i campi dell'output di [comando] come parametri posizionali. Lanciato senza parametri per, il programma restituisce tutte le impostazioni generali della shell, comprensive di variabili e funzioni che si riferiscono all'ambiente.

  • Dispensa Script per Linux Autori : classe 4A/IN 7

    Variabili 6)gruppo: Ariel Lascano , Ali Asghari Sayed Teoria : bisogna innanzitutto dividere i 2 tipi di variabili , infatti esistono variabili dambiente ed variabili comuni , Le variabili dambiente sono un mezzo elementare e pratico di configurazione del sistema: i programmi, a seconda dei loro compiti e del loro contesto, leggono alcune variabili e variano il loro comportamento in base al contenuto di esse. Es(PATH).

    $# numero di argomenti passati al comando $* o $@ tutti gli argomenti passati $- opzioni fornite allinterprete $? valore restituito dallultimo comando eseguito $$ identificativo di elaborazione dellinterprete $! Identificativo di elab. dellultimo comando iniziato con &

    NB: Una variabile definita la prima volta che viene usata, anche se non contiene valori. Lassegnazione di un valore si ottiene con una dichiarazione simile a NOME_DI_VARIABILE=[VALORE]

    If then else