Videocorso in italiano su Udemy!
https://www.udemy.com/corso-linux-per-sviluppatori-web-lamp-apache-php-mysql/?couponCode=SLIDES10
- Installare un server linux
- Lavorare con la linea di comando
- Gestione gruppi, utenti e permessi
- Bash scripting
- Espressioni regolari
- Apache, NGnix &Https
- Installare PHP & MySql
- Cron e crontab
Slide riferite alla terza lezione del corso. Trattano dell'utilizzo della shell in generale e dei comandi in essa utilizzabili. Si parlerà anche delle soluzioni ad eventuali problemi di configurazione del sistema ed inoltre delle più comuni tecniche di virtualizzazione ed emulazione o l'utilizzo di wine.
Intro a Linux tenuta all'università degli studi di Napoli Federico II. Speaker: Gabriele Previtera - https://www.linkedin.com/in/gabriele-previtera-6657648b/
Linux Capabilities: Un miglior root di SUID root.
Traduzione in lingua italiana delle diapositive presentate alla conferenza organizzata dalla Linux Foundation LinuxCon2014, Düsseldorf, 15 ottobre 2014.
2. Il problema della gestione delle dipendenze affligge da tempo qualsiasi sviluppatore che non voglia reinventare la ruota. Questo problema può essere affrontato da due punti di vista: quello dello sviluppatore che ha bisogno di usare una libreria e quello dello sviluppatore che ha creato la propria libreria e vuole distribuirla
3. Una prima possibile soluzione al problema è: scaricare i sorgenti della libreria e installarli a mano. Questa soluzione ovviamente è molto scomoda e ha molti difetti: difficoltà di manutenzione, difficoltà di replicazione, difficoltà o impossibilità di versionamento. È stata mostrata solo per motivi "storici"
4. PEAR è stato per molto tempo lo standard de facto per la gestione delle librerie. Il suo problema principale era nella necessità di dover installare le librerie a livello di sistema, mentre spesso è necessario gestire versioni diverse su progetti diversi. Un altro problema è che è rimasto poco sviluppato e ancorato alla compatibilità con PHP4
5. Un altra possibile soluzione è la gestione delle dipendenze nel sistema di versioanmento: externals per subversion, submoduli per git, eccetera. Difetti di questo approccio: lo sviluppatore di librerie dovrebbe tenere un repository per ogni sistema, l'utilizzatore è costretto a gestire in contemporanea aggiornamenti delle revisioni del suo progetto e aggiornamenti delle librerie
6. Un approccio più recente e interessante è stato quello adottato da Symfony 2.0, cioè uno script di gestione scritto ad hoc. Purtroppo non era in grado di gestire le dipendenze indirette ed era legato strettamente a git
8. Il primo passo per usare Composer è installarlo. La procedura è molto semplice, trattandosi di uno script PHP da linea di comando: basta scaricare l'installer ed eseguirlo. Non obbligatorio, ma consigliato, spostare l'eseguibile sotto a un percorso incluso in $PATH. Pper sistemi non Unix-compatibili... non lo so! Arrangiatevi
9. L'installazione delle librerie è facile: basta eseguire il comando seguito dal parametro "install". Occorre però preparare un file di configurazione
10. Questo esempio di file di configurazione di Composer è tratto da Symfony Standard Edition, con alcune righe tagliate per questioni di spazio.
11. Vediamo ora un esempio su come pubblicare la propria libreria, tratta da un caso reale; un bundle per Symfony2 creato sotto PUGX. Il primo passo è quello di pubblicare il progetto su github
12. Questo è il file composer.json del bundle, con le sue dipendenze e le impostazioni per l'autoloading
13. Il passo successivo consiste nel pubblicare la libreria su Packagist, configurando le impostazioni relative all'integrazione con github
14. Tutto qui! Come direbbe il Principe, è fatta! Non serve niente di più di questo, è molto facile e consente di gestire dipendenze a cascata.
15. Ma se io avessi l'esigenza di usare una libreria che non è open source e quindi non posso mettere su github? Si possono impostare altri reposi
Seconda lezione del corso di Introduzione al Software Libero organizzato dal Siena Linux User Group per i soci dell'Associazione Radioamatori Italiani di Siena
This document provides a brief history of Linux, beginning with Charles Babbage in the 19th century and the development of early computers. It discusses the development of UNIX in the 1960s-1970s and the GNU operating system by Richard Stallman in the 1980s. In 1991, Linus Torvalds developed the Linux kernel. The document then discusses the rise of popular Linux distributions and desktop interfaces. It notes that Linux is free, stable, and secure compared to other operating systems. Finally, it promotes a UK-based IT support company that provides Linux solutions and support for businesses.
This document provides an overview of Linux and its advantages over other operating systems. It discusses:
- The history and origins of Linux and how it was created by Linus Torvalds as a free alternative to Minix.
- Key benefits of Linux like better security, stability, cost savings, and freedom from vendor lock-in due to its open source nature.
- Popular Linux distributions and how to obtain, install, and set up Linux on your computer.
- Common desktop environments, applications, and features available in Linux like web browsing, email, printing, and hardware support.
The document provides an overview of introductory topics for Linux, including comparisons to other operating systems, key components and applications, customization options, and tips for installation and usage. It discusses differences between source code and compiled programs, highlights alternatives for common applications, and outlines considerations for choosing a Linux distribution.
Videocorso in italiano su Udemy!
https://www.udemy.com/corso-linux-per-sviluppatori-web-lamp-apache-php-mysql/?couponCode=SLIDES10
- Installare un server linux
- Lavorare con la linea di comando
- Gestione gruppi, utenti e permessi
- Bash scripting
- Espressioni regolari
- Apache, NGnix &Https
- Installare PHP & MySql
- Cron e crontab
Slide riferite alla terza lezione del corso. Trattano dell'utilizzo della shell in generale e dei comandi in essa utilizzabili. Si parlerà anche delle soluzioni ad eventuali problemi di configurazione del sistema ed inoltre delle più comuni tecniche di virtualizzazione ed emulazione o l'utilizzo di wine.
Intro a Linux tenuta all'università degli studi di Napoli Federico II. Speaker: Gabriele Previtera - https://www.linkedin.com/in/gabriele-previtera-6657648b/
Linux Capabilities: Un miglior root di SUID root.
Traduzione in lingua italiana delle diapositive presentate alla conferenza organizzata dalla Linux Foundation LinuxCon2014, Düsseldorf, 15 ottobre 2014.
2. Il problema della gestione delle dipendenze affligge da tempo qualsiasi sviluppatore che non voglia reinventare la ruota. Questo problema può essere affrontato da due punti di vista: quello dello sviluppatore che ha bisogno di usare una libreria e quello dello sviluppatore che ha creato la propria libreria e vuole distribuirla
3. Una prima possibile soluzione al problema è: scaricare i sorgenti della libreria e installarli a mano. Questa soluzione ovviamente è molto scomoda e ha molti difetti: difficoltà di manutenzione, difficoltà di replicazione, difficoltà o impossibilità di versionamento. È stata mostrata solo per motivi "storici"
4. PEAR è stato per molto tempo lo standard de facto per la gestione delle librerie. Il suo problema principale era nella necessità di dover installare le librerie a livello di sistema, mentre spesso è necessario gestire versioni diverse su progetti diversi. Un altro problema è che è rimasto poco sviluppato e ancorato alla compatibilità con PHP4
5. Un altra possibile soluzione è la gestione delle dipendenze nel sistema di versioanmento: externals per subversion, submoduli per git, eccetera. Difetti di questo approccio: lo sviluppatore di librerie dovrebbe tenere un repository per ogni sistema, l'utilizzatore è costretto a gestire in contemporanea aggiornamenti delle revisioni del suo progetto e aggiornamenti delle librerie
6. Un approccio più recente e interessante è stato quello adottato da Symfony 2.0, cioè uno script di gestione scritto ad hoc. Purtroppo non era in grado di gestire le dipendenze indirette ed era legato strettamente a git
8. Il primo passo per usare Composer è installarlo. La procedura è molto semplice, trattandosi di uno script PHP da linea di comando: basta scaricare l'installer ed eseguirlo. Non obbligatorio, ma consigliato, spostare l'eseguibile sotto a un percorso incluso in $PATH. Pper sistemi non Unix-compatibili... non lo so! Arrangiatevi
9. L'installazione delle librerie è facile: basta eseguire il comando seguito dal parametro "install". Occorre però preparare un file di configurazione
10. Questo esempio di file di configurazione di Composer è tratto da Symfony Standard Edition, con alcune righe tagliate per questioni di spazio.
11. Vediamo ora un esempio su come pubblicare la propria libreria, tratta da un caso reale; un bundle per Symfony2 creato sotto PUGX. Il primo passo è quello di pubblicare il progetto su github
12. Questo è il file composer.json del bundle, con le sue dipendenze e le impostazioni per l'autoloading
13. Il passo successivo consiste nel pubblicare la libreria su Packagist, configurando le impostazioni relative all'integrazione con github
14. Tutto qui! Come direbbe il Principe, è fatta! Non serve niente di più di questo, è molto facile e consente di gestire dipendenze a cascata.
15. Ma se io avessi l'esigenza di usare una libreria che non è open source e quindi non posso mettere su github? Si possono impostare altri reposi
Seconda lezione del corso di Introduzione al Software Libero organizzato dal Siena Linux User Group per i soci dell'Associazione Radioamatori Italiani di Siena
This document provides a brief history of Linux, beginning with Charles Babbage in the 19th century and the development of early computers. It discusses the development of UNIX in the 1960s-1970s and the GNU operating system by Richard Stallman in the 1980s. In 1991, Linus Torvalds developed the Linux kernel. The document then discusses the rise of popular Linux distributions and desktop interfaces. It notes that Linux is free, stable, and secure compared to other operating systems. Finally, it promotes a UK-based IT support company that provides Linux solutions and support for businesses.
This document provides an overview of Linux and its advantages over other operating systems. It discusses:
- The history and origins of Linux and how it was created by Linus Torvalds as a free alternative to Minix.
- Key benefits of Linux like better security, stability, cost savings, and freedom from vendor lock-in due to its open source nature.
- Popular Linux distributions and how to obtain, install, and set up Linux on your computer.
- Common desktop environments, applications, and features available in Linux like web browsing, email, printing, and hardware support.
The document provides an overview of introductory topics for Linux, including comparisons to other operating systems, key components and applications, customization options, and tips for installation and usage. It discusses differences between source code and compiled programs, highlights alternatives for common applications, and outlines considerations for choosing a Linux distribution.
Encryption is key to safety online, but also important offline. But how does it work? This presentation will cover the basics and help you to be safer.
This document provides an overview of Linux including who uses Linux, main Linux distributions, the Linux kernel, common Linux commands, desktop environments, toolkits, installing Linux, installing software, and the Linux file system structure. It discusses topics such as the Unix philosophy of everything being a file, using cat to play audio files, licenses like GPL and LGPL, and compares desktop environments like Gnome and KDE as well as toolkits like GTK+ and QT.
This document provides an overview of Linux shells and shell environment variables. It discusses that shells provide a command line interface to allow users to enter commands and that common shells include bash, tcsh, csh, ksh, and sh. It also describes global and local environment variables, how to view, set, and remove them, and important default variables like HOME, PATH, and MAIL. Finally, it covers features like variable arrays, aliasing commands, and shell startup files.
Linux is everywhere. In your daily life, you are communicating with Linux servers, major internet sites such as Facebook and Google are using Linux servers. In addition, most modern televisions and Android mobiles run on Linux. At the root of it, Linux is free software used to control desktop, laptop, supercomputers, mobile devices, networking equipment, airplanes and automobiles and so on. With Linux knowledge and an inexpensive computer you can create tiny gadgets at home, making it a widely acclaimed weapon in your skills' armour.
This document provides an overview of scripting and the shell. It discusses shell basics including editing commands and setting editing modes. It covers pipes and redirection, variables and quoting, common filter commands like cut, sort, uniq, and wc. It also discusses the tee, head, tail, grep, bash scripting, regular expressions, Perl programming including variables, arrays, regular expressions and input/output. Finally, it briefly introduces Python scripting.
The document discusses the Bash shell, which is the most popular shell in Linux. It is an sh-compatible shell that incorporates useful features from other shells like Korn and C shells. Bash can be used both interactively and for scripting purposes. The document provides examples of basic Bash scripts that use variables, command substitution, arithmetic evaluation, and conditional statements. It also discusses environmental variables and the read command.
This document provides an overview of shell scripting in 3 paragraphs or less:
The document discusses Linux shell scripting, including that a shell is a user program that provides an environment for user interaction by reading commands from standard input and executing them. It mentions common shell types like BASH, CSH, and KSH, and that shell scripts allow storing sequences of commands in a file to execute them instead of entering each command individually. The document provides basic information on writing, executing, and using variables and input/output redirection in shell scripts.
This document is a presentation on introducing Linux shell scripting. It begins by stating that the talk is aimed at those who can open a terminal and type commands. It then outlines what will be covered, including basic shell commands, combining commands, creating simple scripts, and using cron for automation. The document provides examples of commands for files, disks, processes, and networks. It also demonstrates how to combine commands using pipes and redirection. Finally, it shows how to create simple scripts and discusses using cron for automation.
This document discusses shells and shell scripting in Linux. It provides information on common Linux shells like Bash, Bourne shell, C shell, etc. It describes the basic functions of shells like command interpretation, I/O redirection, variables, parameters and more. Shell scripts allow automating tasks and complex series of commands. The document also covers shell script basics, special parameters, variables, I/O redirection operators and more shell scripting concepts.
This document provides an overview of useful commands for Ubuntu Linux, beginning with basic Linux commands and how to get help or more information on commands. It then covers managing software, important keyboard shortcuts, history commands, redirecting input/output, using aliases and environment variables. Additional sections discuss commands for working as a user, such as editing text, searching files, sorting output and more. The document concludes with commands for system administration, including working with partitions, processes, resources, and network interface cards.
- Linux originated as a clone of the UNIX operating system. Key developers included Linus Torvalds and developers from the GNU project.
- Linux is open source, multi-user, and can run on a variety of hardware. It includes components like the Linux kernel, shell, terminal emulator, and desktop environments.
- The document provides information on common Linux commands, files, users/groups, permissions, and startup scripts. It describes the Linux file system and compression/archiving utilities.
Cryptography is the science of using mathematics to encrypt and decrypt data.
Cryptography enables you to store sensitive information or transmit it across insecure networks so that it cannot be read by anyone except the intended recipient.
The document provides an overview of key components of Linux including processor management using processes and scheduling, file management using a hierarchical directory structure and permissions, memory management using virtual memory and paging, device management through device drivers and identifiers, and the command line interface for navigating the file system and running commands. It describes processes like fork() and exec() for managing processes, and concepts like virtual addressing and page tables for memory management. Device management in Linux treats all devices as files that are accessed through device drivers defined by a major and minor number.
Con un approccio pratico, e ricco di esempi semplici per illustrare bene i concetti, impara le basi del linguaggio di scripting Bash, ormai divenuto uno standard de facto in termini di scripting di shell (Shell Scripting).
La presentazione si compone di 12 lezioni / capitoli:
1 - Introduzione
2 - Primi passi
3 - Variabili
4 - Array
5 - Aritmetica
6 - Test
7 - Costrutti condizionali
8 - Cicli iterativi
9 - Funzioni
10 - Quoting
11 - Terminare uno script
12 - Debugging
Per un totale di 98 diapositive
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
La shell Bash - Comandi base - Comandi avanzati - Espressioni regolariFulvio Corno
Master: Amministratore Linux - Livello Base
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
Apache Maven è un tool per la gestione di progetti e build automation, utilizzato principalmente per progetti Java, il cui obiettivo è: semplificare, uniformare e automatizzare il processo di build di sistemi complessi.
In questa presentazione / guida verranno illustrati i problemi e le criticità dei tool di build automation tradizionali: make e Apache Ant, vedremo poi come installare e configurare Maven, le caratteristiche, gli obiettivi e i punti di forza del tool, le fasi del ciclo di vita, i plugin e i goal, le dipendenze, gli scope e la risoluzione di eventuali conflitti, i repository, i plugin "esterni" e i progetti multi-modulo.
La presentazione è ricca di esempi pratici.
Chi ha paura della command-line? - WordCamp Roma 2018Marco Chiesi
Negli ultimi decenni le interfacce uomo-macchina dei sistemi informatici si sono evolute incessantemente con l’obiettivo di rendere l’interazione con gli utenti sempre più semplice e intuitiva.
Ci sono però ambiti specifici in cui l’interfaccia a “riga di comando” si dimostra tutt’oggi uno strumento insostituibile. Ne è la dimostrazione il crescente successo del progetto WP-CLI, supportato ufficialmente da WordPress.
Non è indispensabile essere programmatori o sistemisti per trarre un vantaggio diretto e tangibile dall’utilizzo di strumenti basati su riga di comando. Questo talk, dopo una rapida introduzione sull’argomento, presenterà una carrellata di esempi pratici e di semplice applicazione, in cui l’uso della command-line può far risparmiare tantissimo tempo.
2. Chi sono
● BSc Computer Science @ Uniba
● Software Developer @ ApuliaSoft
● Membro del Club degli Sviluppatori - Puglia
● *nix User :)
3. Outline
● La shell
● La shell in *nix
● Bash
● Caratteristiche di Bash
● Scripting con bash
4. La shell
“La shell (detta anche interprete dei comandi), in informatica, è la parte di un sistema
operativo che permette agli utenti di interagire con il sistema stesso, impartendo comandi e
richiedendo l'avvio di altri programmi. Insieme al kernel costituisce una delle componenti
principali di un sistema operativo. Il suo nome (dall'inglese shell, guscio) deriva dal fatto che
questa componente viene considerata l'involucro, la parte visibile del sistema ed è dunque
definibile come l'interfaccia utente o il programma software che la rende possibile.”
Wikipedia
5. GNU/Linux
● Linux è uno dei kernel adottati dal sistema operativo GNU.
● GNU/Linux è una distribuzione del sistema operativo GNU composta dal
kernel linux e dagli strumenti messi a supporto dello stesso, sviluppati dalla
Free Software Foundation (FSF)
● Il nome è tuttora oggetto di controversia
● Per comodità utilizzeremo Linux come alias di GNU/Linux
● Ad oggi sul mercato esistono centinaia di disrtibuzioni linux (ubuntu, debian,
redhat, ec…)
6. La shell nel mondo *nix - sh
Nel 1971 Ken Thompson rilascia la prima versione della Thompson shell (sh). Rispetto alle
shell moderne questa shell era piuttosto rudimentale: aveva il supporto alle pipe, alcune
strutture di controllo di base (come if/then e goto) ed le wildcard sui nomi dei file.
Ispirata alla shell del sistema operativo Multics basata sul modello RUNCOM (run command
- comando eseguibile).
Nei sistemi unix-like (come linux) molti file di configurazione terminano con suffisso rc in
memoria dell’antenato delle shell unix RUNCOM .
7. La shell nel mondo *nix - bourne shell
La Bourne shell è una riscrittura completa della shell originale sh ad opera di
Stephen Bourne. Distribuita per la prima volta nel 1979 con la versione 7 di UNIX,
di fatto sostituiva la shell originale di Thompson.
Questa versione portava numerose caratteristiche come:
● here document
● sostituzione dei comandi
● variabili d’ambiente
● strutture di controllo avanzate (es. loop)
8. La shell nel mondo *nix - La bourne shell (2)
Tradizionalmente la bourne shell si avvia attraverso il programma sh, sito nella
cartella /bin. Tuttavia oggi giorno sh non è nient’altro che un alias per una delle
sue numerose alternative.
9. La shell nel mondo *nix - La bourne shell (2)
● Almquist shell (ash)
● Bourne-Again shell (bash)
● Korn shell (ksh)
● Debian Almquist shell (dash)
● Public domain Korn shell (pdksh)
● MirBSD Korn shell (mksh)
● Z shell (zsh)
● Busybox
10. Bash
Bourne-Again shell è una shell scritta da Brian Fox nel contesto del progetto GNU
come alternativa free ed open source alla bourne shell. La sua prima versione
risale al 1989 e, al giorno d’oggi, è la shell di default di molte distribuzioni Linux e
di Mac OSX.
E’ disponibile anche per le piattaforme Microsoft Windows attraverso il tool
cgywin. A partire dalla versione Anniversary Update di Windows 10 la shell bash è
stata integrata in modo “nativo” nel sistema operativo.
11. Bash (2)
Spesso viene chiamata anche bourne shell dal nome dell’autore (Stephen Bourne)
della shell da cui è stata ispirata bash.
L'espansione dell'acronimo bash, Bourne again shell, letteralmente significa
un'altra shell Bourne, ma Bourne again ha la stessa pronuncia di born again, cioè
rinata creando la definizione finale shell rinata.
12. Bash (3)
Tecnicamente bash è un interprete di comandi che permette all’utente di
comunicare con il sistema operativo attraverso una serie di funzioni predefinite
(built in) o di eseguire programmi e script
14. Redirezione
Bash è in grado di eseguire la redirezione dell’input e dell’output dei programmi
eseguiti su di essa in modo da eseguire più programmi in sequenza creando una
vera e propria pipeline software dove l’output del programma precedente diventa
l’input del programma successivo
17. Brace expansion
La brace expansion è una caratteristica che permette di generare tutte le possibili
combinazioni tra una stringa ed un insieme di alternative.
$ echo a{p,c,d,b}e
ape ace ade abe
$ echo {a,b,c}{d,e,f}
ad ae af bd be bf cd ce cf
18. Brace expansion (2)
La brace expansion può essere utilizzata anche per esprimere sequenze
$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
$ echo file{1..4}.txt
file1.txt file2.txt file3.txt file4.txt
$ echo {a..e}
a b c d e
$ echo {1..10..3}
1 4 7 10
$ echo {a..j..3}
a d g j
19. Gestione dei processi
La shell bash ha due modi con il quale esegue i programmi: batch mode
(sequenziale) e concurrent mode (concorrente)
Se digitiamo i comandi separati da un ;
command1; command2
stiamo eseguendo i comandi in modalità batch, ovvero l’esecuzione di command2
avverrà dopo l’esecuzione di command1 sia che esso fallisca o vada a buon fine
20. Gestione dei processi (2)
Se digitiamo
command1 &command2
stiamo eseguendo i comandi in modalità concorrente. command1 viene eseguito
in background ed il controllo della shell passa a command2 che viene eseguito in
foreground. E’ possibile sospendere command2 con ctrl+z.
21. Gestione dei processi (3)
Un programma sospeso può essere rievocato utilizzando il comando fg (se al
momento della sospensione si trovata in foreground) o bg (se si trovava in
background). L’id del processo in background è contenuto nella variabile $!
La shell può essere sincronizzata per attendere la fine di un job in background
utilizzando il comando wait, seguito dal process id (pid) del processo da
attendere. se non viene passato il pid, wait forza la shell ad attendere che tutti i
job in background terminino.
22. Esecuzione condizionale
In bash è possibile eseguire comandi sequenza in modo che l’esecuzione del
primo condizioni l’esecuzione del secondo. Ad esempio se digitiamo
command1 && command2
l’esecuzione di command2 avverrà se e solo se l’esecuzione di command1 va a
buon fine. Analogamente
command1 || command2
indica che l’esecuzione di command2 avviene se command1 fallisce.
23. Configurazione di bash
Alla partenza, bash tenta di caricare automaticamente una serie di file:
● se si tratta di una shell di login, bash tenta di caricare:
1. il file "/etc/profile"
2. solo il primo tra i file ".bash_profile", ".bash_login" e ".profile" collocati nella home directory
dell'utente e che risulti essere disponibile;
3. il file ".bashrc" collocato nella home directory dell'utente;
All'uscita di una shell interattiva di login, bash carica il file .bash_logout collocato nella home dell'utente
(se disponibile).
● se si tratta di una shell interattiva non di login, bash tenta di caricare il solo file ".bashrc" collocato
nella home directory dell'utente.
24. Configurazione di bash (2)
L'utente può modificare i file nella propria home directory per personalizzare il
proprio ambiente di lavoro.
Quando bash è avviata non interattivamente (ad esempio per eseguire uno script
di shell) essa controlla se esiste la variabile d'ambiente BASH_ENV o ENV ed in
caso positivo carica il file specificato dal valore della variabile (se bash è avviata
in modalità POSIX controlla solo ENV). Procede quindi ad eseguire il resto (script
o altro).
26. Scripting in Bash
Bash mette a disposizione un linguaggio di scripting piuttosto semplice, che
permette di svolgere compiti piuttosto complessi, astraendo la realizzazione
all’interno di script che possono diventare dei programmi eseguibili da bash,
avvalendosi del supporto di caratteristiche proprie dei linguaggi di
programmazione più evoluti come le strutture di controllo e le variabili.
27. Anatomia di uno script bash
Il seguente script permette di creare un archivio in "/tmp/my-backup.tar.gz" contenente l'intera propria
cartella personale (tenendo conto che "~" rappresenta "/home/proprionomeutente"):
28. Anatomia di uno script (2)
per rendere eseguibile lo script creato in precedenza è sufficiente assegnare al
file contenente lo script i permessi di esecuzione con il comando chmod
chmod +x nomefile
29. La $PATH in bash
tutti gli script eseguibili in bash possono essere eseguiti direttamente dalla riga di
comando (esattamente come le utility di base) a patto che essi siano eseguibili e
siano ubicati in uno dei percorsi indicati nella variabile d’ambiente $PATH
30. Le strutture condizionali
Il linguaggio di scripting di bash supporta le espressioni condizionali, ovvero
espressioni del tipo:
se <si verifica questa condizione> allora
<esegui queste istruzioni>
altrimenti
<esegui queste altre istruzioni>
31. Le strutture condizionali (2)
Nel linguaggio bash la sintassi per esprimere le strutture condizionali è la
seguente:
if expression; then
…
else
…
fi;
32. Le strutture condizionali - esempi
#!/bin/bash
if cmp file_a file_b &>/dev/null; then
echo "I File a e b sono identici."
else
echo "I File a e b sono diversi."
fi
Confronto tra due file
33. Le strutture condizionali - esempi (2)
#!/bin/bash
if [ -f $1 ]; then
echo "Il file $1 esiste."
else
echo "Il file $1 non esiste o non è un file"
fi
Controlla l’esistenza di un file
34. Le strutture di controllo - esempi (3)
#!/bin/bash
echo "Scrivi qualcosa e premi Invio:"
read linea
case "$linea" in
uno)
echo "Hai digitato 'uno'"
;;
*)
echo "Hai digitato qualcosa che non conosco"
;;
esac
35. I cicli
Bash supporta le strutture iterative, ovvero particolari strutture che consentono di
eseguire istruzioni comuni su collezioni di dati. Bash supporta tre tipi di cicli:
● for
● while
● until
36. I cicli - for
Il ciclo di tipo for differisce dal tipico ciclo for che ritroviamo negli altri linguaggi di
programmazione. In bash il form permette di iterare soltanto sulle stringhe
(collezione di caratteri)
37. for - esempio
#!/bin/bash
for i in $( ls ); do
echo item: $i
done
In questo esempio, stampiamo i contenuti della cartella in
cui ci troviamo.
La variabile i conterrà i vari valori rappresentanti i nomi dei
file contenuti nella cartella.
La parola chiave done indica la terminazione del blocco di
istruzioni del ciclo.
38. I cicli - while
Il ciclo while si comporta esattamente come negli altri linguaggi di
programmazione, ovvero esegue iterativamente un blocco di istruzioni fintantoché
la condizione specificata è rispettata
39. while - esempio
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done
In questo esempio, viene stampato il
valore di COUNTER fintanto che esso
risulta essere minore o uguale di 10.
40. I cicli - until
Il ciclo until si comporta esattamente come negli altri linguaggi di
programmazione, ovvero esegue iterativamente un blocco di istruzioni fintantoché
la condizione specificata è rispettata. A livello semantico il suo funzionamento è
identico al ciclo while.
41. until - esempio
#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
In questo esempio, viene stampato il
valore di COUNTER fintanto che esso
risulta essere minore o uguale di 10, con la
differenza che in questo caso COUNTER
viene inizializzato a 20, pertanto verranno
stampati i numeri al contrario
42. Altri comandi
Una trattazione esaustiva delle funzionalità e dei comandi di bash è disponibile al
seguente indirizzo
https://www.gnu.org/software/bash/manual/html_node/
un ulteriore aiuto è dato dall’help in linea, richiamabile attraverso il comando man.