Transcription of Programmazione della shell Bash - La home page di …
1 Programmazione della shell BashMarco LiveraniAgosto 2011iiMarco Liverani, Programmazione della shell Bash, Agosto 2011 Copyright 2011 2015. Questa guida pu essere liberamente stampata, fotocopiata o riprodotta con ognialtro mezzo, purch sia distribuita integralmente e gratuitamente, senza scopo di lucro. Quanto riportato nellaguida pu essere citato liberamente, purch ci avvenga nel rispetto del copyright che rimane di propriet dell autore. Il presente documento disponibile su Internet al seguente indirizzo: del 6 gennaio shell Esecuzione della shell .. Aspetti sintattici del linguaggio Bash .. Apici, doppi apici e backtick ..52 Comandi interni, esterni e Comandi composti eseguiti nella stessa shell .
2 Comandi composti eseguiti in una sotto- shell .. Valutazione di espressioni aritmetiche.. Valutazione di espressioni condizionali .. Redirezione dell input/output .. Comandi in pipeline ..193 Variabili, variabili d ambiente e variabili Variabili scalari e array .. Variabili d ambiente .. Variabili speciali ..274 Strutture di Strutture di controllo condizionali .. Strutture di controllo iterative .. istruzione while .. istruzione until .. istruzione for .. istruzione select .. Definzione di una funzione .. Passaggio di parametri ad una funzione .. Funzioni ricorsive .. Librerie di funzioni .. Rotazione di file di log .. Rubrica degli indirizzi.
3 Dati .. dati .. dati .. le funzioni in uno script.. Script CGI .. cenni sulle tecnologie web .. interfaccia CGI.. esempio elementare .. Rubrica degli indirizzi web based ..74A Sintesi dei comandi principali81 Bibliografia85 IntroduzioneLashellBash probabilmente il pi diffuso interprete di comandi in ambiente UNIX: disponibile su tutte le piattaforme UNIX in commercio e su tutte le versioniopen sour-cedel sistema operativo (GNU/Linux, FreeBSD, NetBSD, OpenBSD, ecc.). Bash statasviluppata nel 1987 da Brian Fox, come evoluzione della Bourne shell (sh) scritta daStephen Bourne,Brian Fox e ChetRamey,rispettivamenteautori della Bourneshell, della Bashoriginaria e dellaattuale versione diBashStephen Bourne nel 1978; oggi lo sviluppo e l implementazione di nuove versioni del-la shell Bash curata da Chet Ramey.
4 Di fatto i comandi e le caratteristiche della shellBash costituiscono un sovra-insieme dei comandi e dellefeaturedella Bourne shell , che tutt ora presente, spesso come shell di default, sulla maggior parte dei sistemi ope-rativi UNIX. Bash un prodottoopen sourcerealizzato nell ambito del progetto GNU. Ilnome Bash l acronimo di Bourne Again shell , proprio per ricordarne la derivazioneoriginaria dalla shell di Stephen sito web ufficiale del progetto di manutenzione e sviluppo del programma Bash, aSito web ufficiale diBashcui possibile fare riferimento per la documentazione e l acquisizione del programmastesso (in formato sorgente o binario per diversi sistemi operativi), si trova all pagine di questa breve guida vengono presentati alcuni elementi di base perla Programmazione della shell Bash.
5 Le shell di comandi presenti in ambiente UNIX infatti sono progettate in modo tale da poter essere utilizzate in modalit interattivada parte degli utenti, ovvero come interprete di un linguaggio di Programmazione perl esecuzione di un programma vero e della shelle shell scriptingIn questo caso si parla dishell script: in generale si tratta di programmi di piccoledimensioni scritti per automatizzare operazioni ripetitive, utili alla gestione di un serverUNIX. In passato si fatto largo uso deglishell scriptanche per la realizzazione di appli-cazioni CGI (common gateway interface) in ambiente web. Oggi l utilizzo dei linguaggi discripting di derivazione UNIX per la realizzazione di applicazioni web circoscritta pre-valentemente all uso del linguaggio Perl che, fra i linguaggi di scripting, sicuramenteuno dei pi pagine seguenti faremo riferimento prevalentemente alla Programmazione del-la Bash su macchine che eseguono un sistema operativo UNIX.
6 Tuttavia bene precisa-re che la shell Bash un programma scritto nel linguaggio di Programmazione C, congrande attenzione alla portabilit e, pertanto, stato possibile riprodurne numeroseversioni anche per sistemi operativi non UNIX, come Microsoft Windows. In ambien-te Windows disponibile, ad esempio, una versione di Bash nell ambito del pacchettodenominato Cygwin, che consente di riprodurre un ambiente di esecuzione per nume-rosissimi programmi nati in ambiente UNIX, attraverso una libreria di compatibilit trale funzioni di base del sistema operativo UNIX e quelle del sistema operativo MicrosoftWindows. Quanto descritto nelle pagine di questa guida pu quindi essere sperimentatoIl programmaCygwinperl esecuzione di Bashin ambiente Windowsanche utilizzando una shell Bash in ambiente Windows: in questo caso, per acquisire edinstallare quanto necessario per l esecuzione della shell , si suggerisce di fare riferimentoal prodotto Cygwin, disponibile su Internet all indirizzo seguito di questo manuale assumeremo che siano noti al lettore i comandi UNIX eseguibili attraverso la shell : salvo qualche richiamo specifico per i comandi meno ele-mentari, si rimanda per un approfondimento ai numerosi testi citati tra i riferimentivviINDICE bibliografici (ad esempio [2] e [5]).
7 Sono invece trattati in dettaglio i comandi internidella shell Bash e le istruzioni per il controllo del flusso dell algoritmo codificato nelloshell presentazione di esempi di comandi della shell in modalit interattiva, vienerappresentato in grassetto il testo inserito in input dall utente, per distinguerlo dall out-put prodotto dalla shell . Nei numerosi listati riportati nelle pagine seguenti, le righesono numerate per poter fare riferimento nel testo alle istruzioni riportate negli script;inoltre sono evidenziate in grassetto le parole chiave che costituiscono i comandi dellinguaggio Bash e in corsivo i commenti presenti nello un linguaggio artificiale come quello della Bash, con un approccioelementare ed introduttivo come quello adottato in questo breve manuale, si camminasu un crinale sdrucciolevole: da un lato si cerca di fare in modo di mantenere breve econciso il discorso, in modo da non annoiare chi legge, d altra parte per cos si cor-re il rischio di tralasciare aspetti rilevanti e che possono impedire una comprensionedell argomento a lettori meno esperti e dunque privi di quegli strumenti che altrimenticonsentirebbero di fare a meno di molti dettagli.
8 Spero quindi di aver trovato il giustoequilibrio fra sintesi ed efficacia del testo. Se cos non fosse, avvisatemi!Questa breve guida per sua natura sicuramente incompleta e non descrive per in-tero le caratteristiche del potente linguaggio Bash: lo ripeto, una precisa scelta dovu-ta al fatto che ho preferito la sintesi alla completezza. Testi di riferimento pi ampi ecompleti sono indicati in bibliografia a pagina 85; per gli utenti delle diverse versionidel sistema operativo UNIX, un primo utile riferimento anche la pagina di manualedi Bash, accessibile direttamente dalla shell del sistema operativo mediante il comando man bash .Nel testo saranno sicuramente presenti degli errori e degli aspetti poco chiari; inentrambi i casi sar grato a quanti vorranno segnalarmeli via e-mail con un messag-gio di posta elettronica inviato ad uno dei miei indirizzi: 1La shell BashLeshelldei comandi del sistema operativo UNIX sono dei programmi che, al pari dialtri, possono essere eseguiti da ciascun utente del sistema o possono essere richiama-ti da altri programmi.
9 A differenza di altri software applicativi (es.: un editor di testo,La shell l interfaccia alfanumerica (nongrafica) tra l utente eil sistema operativoun applicazione di calcolo scientifico, un software per la posta elettronica, ecc.) la shelldei comandi progettata per essere uno degli strumenti principali per consentire unainterazione tra l utente ed il sistema operativo . Mediante la shell l utente in grado digestire i file e le directory presenti sulfilesystemdella macchina, di elaborarne il conte-nuto e di eseguire altri programmi presenti sul sistema utilizzando la tastiera del proprioterminale come unit di input e lo schermo alfanumerico del terminale come unit utilizzo del sistema operativo in modalit alfanumerica tipico dei sistemi ope-rativi destinati ai server, macchine che eseguono programmi in grado di offrire servizidi vario genere ad altri sistemi informatici o agli utenti connessi in rete.
10 Su queste mac-chine tipicamente gli utenti non operano in modalit interattiva, a meno che il siste-ma non consenta una connessione attraverso terminali direttamente connessi al servero mediante software di emulazione di terminale eseguiti sulle postazioni client degliutenti (spesso dei normali personal computer). L alternativa ad una shell di coman-di che opera in modalit alfanumerica un interfaccia utente grafica (GUI GraphicalUser Interface), che consente all utente di interagire con il sistema operativo attraversodelle componenti grafico-funzionali che spesso contribuiscono a semplificare l uso delsistema (es.: invece di digitare un comando sulla tastiera del terminale, con una GUI possibile eseguire un comando o un programma selezionando un icona visualizzataall interno di una finestra grafica).