CORSO AUTOGESTITO DI GNU/LINUX Riprendi in mano il TUO sistema Riprendi in mano il TUO futuro BASH SCRIPTING.

Slides:



Advertisements
Presentazioni simili
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Advertisements

Shell Scripting. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure contenuti.
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME … Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX AWK Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi – La shell Salvatore Campagna Politecnico di Torino Dipartimento di Automatica.
AWK Salvatore Campagna
Programmazione della shell pt.2
Script di shell (bash).
1 PROGRAMMAZIONE IN SHELL The Unix Programming Environment Kernigham - Pike.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Per gli approfondimenti sui vari punti affrontati oggi verrete indirizzati alle pagine degli “Appunti di informatica libera” ospitati nel sito:
Breve introduzione alla Bourne Again Shell (bash) Parte II ● Francesco Rossi – –
Automatizzar e con Perl e Bash LinuxDay 2007 Torino Cascina Roccafranca Francesco Golia e Igor Pesando.
1 Alberto Pollastro, !#/bin/bash Novara, GalLUG - Gruppo Utenti Linux Galliate - #!/bin/bash Alberto Pollastro.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
INTRODUZIONE A MATLAB/OCTAVE MANOLO VENTURIN UNIVERSITÀ DEGLI STUDI DI PADOVA DIP. DI MATEMATICA PURA ED APPLICATA A. A. 2007/2008.
Amministrazione di reti di calcolatori - Massimo Bertozzi Shell e scripting.
Lo scripting ben temperato Ing. Davide Bolcioni Consulente Sistemi Informativi Ovvero un tocco di eleganza nella programmazione della shell.
IL SOFTWARE (FPwin 6.0).
Ambienti di Programmazione per il Software di Base
© 2007 SEI-Società Editrice Internazionale, Apogeo
A cura dell’Ing. Buttolo Marco
I/O redirection AND PIPES
Corso LAMP Linux Apache Mysql Php
Cosa succede quando premi invio
PROGRAMMAZIONE SHELL -
Terza Lezione → Navigare nel file System → parte 2
7. Strutture di controllo Ing. Simona Colucci
Script Marco D. Santambrogio –
PROGRAMMAZIONE BASH - INTRODUZIONE
I comandi.
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Ambienti di Programmazione per il Software di Base
I FILES AD ACCESSO SEQUENZIALE
FORMULE E FUNZIONI SU EXCEL
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
realizzato dal prof.Conti Riccardo
© 2007 SEI-Società Editrice Internazionale, Apogeo
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Ambienti di Programmazione per il Software di Base
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
La struttura dei primi programma in C
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
Programmazione e Laboratorio di Programmazione
Processi decisionali e funzioni di controllo
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Metacaratteri Il carattere * indica un tipo ed un numero qualsiasi di caratteri Per copiare tutti i file che iniziano per “hemo” nella directory dir %
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Unità 1 Programmi base.
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

CORSO AUTOGESTITO DI GNU/LINUX Riprendi in mano il TUO sistema Riprendi in mano il TUO futuro BASH SCRIPTING

Cos'è uno script Uno script è una sequenza di comandi, codificata all'interno di un file, che se reso eseguibile, automatizza l'esecuzione di questi comandi.

Quando è utile uno script ? L'utilizzo più immediato è quello di automatizzare delle operazioni ripetitive e noiose. (ridimensionare tante foto, lavorare sui log, eliminazione selettivamente dei file) Sono fondamentali nell'amministrazione di un server...

Un primo esempio #!/bin/bash #Questo è il nostro primo script echo “ Ciao P2! “ chmod +x filescript oppure sh filescript

Caratteri Speciali ## commento ; separa due comandi sulla stessa riga ' full quoting (tutto è una stringa) “ partial quoting (stringhe + variabili) : null command (NOP Nothing Operation) ! negazione * “wild card” per espansione del nome dei file oppure come operatore aritmetico ** operatore aritmetico

Caratteri Speciali 2, concatena operatori aritmetici. ` Sostituzione comando. Rende disponibile l'output di 'command' per l'assegnazione a una Varabile $() serve per assegnare un camndo ad una variabile (come sopra)

Caratteri Speciali 3 $ recupera il contenuto di una variabile $# numero di argomenti passati dalla linea di comando contiene tutti gli argomenti passati dalla linea di comando $i i-esimo argomento passato dalla linea di comando ($0,$1,$2,$3)

Caratteri Speciali 4 $$ restituisce il pid (process id) prog1 | prog2 redirige l'outout del programma in input al secondo programma

Redirezione I/O Script > file scrive nel file l'output del programma Script >> file appende alla fine del file l'output dello script Command &> file scrive lo stdout e lo stderr del comando nel file Command >&2 redirige lo stdout del programma nello stderr

Redirezione I/O prog < file dà il file in input al programma prog <<fine dà in input una serie di comandi al programma Prog <<eof > input1 > input2 > eof...stampa aoutput...

FORK Nella maggior parte dei casi i programmi eseguibili da linea di comando sono bloccanti, ovvero la shell aperta resterà in attesa finquando il programma eseguito non termina. Per eseguire il programma e continuare a lavorare nella stessa shell, è necessario avviare il nuovo processo in modalità "background", ovvero Forkarlo. Il fork in shell avviene aggiungendo una & finale al comando, da non confondere con la & della redirezione. Sintassi: comando &

Variabili Per dichiarare una variabile si usa il seguante costrutto: nome=valore NOTA: non ci devono essere spazi tra “nome”, “=”, “valore” Un altro modo per dichiarare una variabile: declare nomevar

Array Per dichiarare array si usa il seguante costrutto: Array[0]=valore Array[1]=valore … array[n]=valore In modo più sintetitco: array=(valore1 valore2 valore3) E' possibile usare il comando declare: declare -a nomevar

Flags condizionali -d è una directory -e esiste file/direcotry -z stringa vuota?? -f è un file == ! != && || Test: ritorna il risultato un espressione booleana

Costrutto IF/THEN if [ condition1 ]; then if [ condition2 ]; then #do−something fi

Esempio #!/bin/bash if [ $# != 2 ]; then echo "$0 " exit 1 fi if [ -d $1 ]; then tar -cZf $2 $1 else if [ -f $1 ]; then tar -cZf $2 $1 fi

FOR for arg in list; do command(s)... done

WHILE while [ condition ]; do command(s)... done

ESEMPIO #!/bin/sh if [ $# != 1 ]; then echo sintassi: $0 cartella else files=$(ls $1) for i in $files; do echo $i done fi

UNTIL until [ condition−is−true ]; do command(s)... done

CASE (in) / esac case "$variable" in "exp1" ) command... ;; "exp2" ) command... ;; *) ;; esac

Funzioni La dichiarazione può avvenire in almeno tre modi: function nomefunzione function nomefunzione() nomefunzione() Le funzioni non accettano una lista di parametri in particolare, nè ritorano un valore. Sono da considerarsi come dei programmi normali. I parametri passati ad una funzione sono accessibili con $1, $2, $3,... e per avere la lista completa si usa esattamente come lo script principale. Allo stesso modo, il return corrisponde all'exit status di qualsiasi altro programma ed è accessibile con $?. L'invocazione di una funzione è identico a quello di un programma. L'output di una funzione è quindi da considerarsi come l'output di un qualsiasi altro programma, analizzabile con $(funzione parametri).

echo Stampa a video l'input. Nel caso di istruzioni con escape (es. \a, \b) bisogna specificare -e. Se non si vuole stampare il fine linea si utilizza -n. echo -e "ciao\a" Stampa in output "ciao" e suona un companello.

read "read" non è un programma ma un comando interno alla shell. Serve a leggere riga per riga da un determinato input e salvarlo in una variabile d'ambiente. while cat file|read LINE; do echo $LINE done Stamperà il file riga per riga. In questo caso, read ritorna 0 finquando c'è qualcosa da leggere nel file, 1 altrimenti facendo quindi terminare il while. L'output di cat, che ripete il file, viene dato come input tramite pipe al comando read, che quindi consuma l'input riga per riga.

uniq && sort Uniq è un programma che permette di estrarre tutte le righe da un file senza duplicati. uniq file > senzaduplicati Sort ordina l'input restituendolo in output. L'ordinamento avviene riga per riga. sort file > ordinato

grep Questo programma è utile per fare ricerche utilizzando delle espressioni regolari all'interno di un file, riga per riga. grep qualcosa file1 file2... Le opzioni più comuni sono: -n visualizza il numero di riga corrispondente ad una occorrenza del risultato -r per eseguire la ricerca in sottocartelle -i per effettuare la ricerca in modo case-insensitive -v per invertire il risultato della ricerca grep -v "ciao$" file Troverà tutte le linee nel file che NON finiscono con "ciao".

head Visualizza le prime 10 righe di un file. head file Per specificare il numero di righe si utilizza l'opzione -n. head -n 1 file Visualizza la prima riga del file. Specificando -n -N, dove N è un numero, è possibile visualizzare il contenuto del file tranne le ultime N righe.

tail Visualizza le ultime 10 righe di un file. tail file Per specificar eil numero di righe si utilizza l'opzione -n. tail -n 1 file Visualizza l'ultima riga del file. Specificando -n +N, dove N è un numero, è possibile visualizzare il contenuto del file tranne le prime N righe, la prima inclusa.

awk AWK è un linguaggio di programmazione, implementato sotto i sistemi GNU/Linux principalmente da GNU (Gawk). Nello shell scripting, solitamente awk viene utilizzato per splittare (dividere in token) stringhe, piuttosto che sfruttarne tutte le sue potenzialità (programmazione di sockets, regexp, ecc.). awk file '{ print $1; }' Dato un file che contiene righe con parole divise da spazi, visualizza la prima parola per ogni riga. awk file '{ print $1 $3; }' In questo caso concatena prima e terza parola per ogni riga. Per specificare il delimitatore, invece che lo spazio di default, si utilizza l'opzione -F. Awk mette a disposizione alcune variabili utili relative all'input che producono utili informazioni nella processazione dei dati. Ad es. NF indica il numero degli split fatti per ogni riga. echo |awk -F. '{ print $2 " " NF; }' Visualizza

sed Sed è un potente programma scritto da un italiano, Bonzini. Serve per effettuare molteplici operazioni di trasformazione dell'input; un coltellino svizzero. Anch'esso dispone di un metalinguaggio potente ma non general-purpose come awk. L'utilizzo più frequente di sed consiste nell'effettuare sostituzioni con espressioni regolari. echo ciao|sed 's/ia/ai/' Il comando in questione è "s" che indica a sed di effettuare una sostituzione. In questo caso, sostituisce tutte le occorrenze di "ia" con "ai" dando luogo all'output "caio" da un input "ciao". Sed di default lavora per riga. Nel caso si voglia effettuare delle sostituzioni in un file, e a sua volta salvare il risultato nel file stesso (invece che visualizzarlo in output) si utilizza l'opzione -i. sed -i 's/^ \+//' file Elimina tutti gli spazi all'inizio di ogni riga. Per delucidazione e caratteri speciali sulle espressioni regolari -> man sed.