linux-ubuntu v.15.05.29
Linux-Ubuntu
-
1
linux-ubuntu v.15.05.29
• Note di utilizzo del sistema operativo Linux- Ubuntu
3
Distribuzioni .................................................................................................................................................................. 3
Organizzazione del sistema – Il File System ................................................................................................................ 4
Organizzazione degli utenti .......................................................................................................................................... 5
Superutenti ............................................................................................................................................................... 5
Utenti e gruppi .......................................................................................................................................................... 6
• Ubuntu
7
La dotazione software di UBUNTU ............................................................................................................................... 7
Interfaccia Unity di Ubuntu 11.10.................................................................................................................................. 8
12
• Terminale e comandi
Utente normale ................................................................................................................................................... 12
Utente root.......................................................................................................................................................... 13
Operazioni di uso generale .................................................................................................................................... 14
Operazioni di Gestione (file e cartelle) ................................................................................................................... 16
Accedere ad una cartella o ad una directory ................................................................................................. 16
Visualizzare il contenuto della cartella ........................................................................................................... 16
Creare una cartella ........................................................................................................................................ 16
Rinominare una cartella ................................................................................................................................. 16
Tagliare ed incollare una cartella ................................................................................................................... 16
Copiare ed incollare una cartella ................................................................................................................... 17
Cancellare una cartella vuota ........................................................................................................................ 17
Cancellare una cartella non vuota ................................................................................................................. 17
Rinominare un file .......................................................................................................................................... 17
Operazioni su utenti................................................................................................................................................ 18
Editor ........................................................................................................................................................................... 18
VI ............................................................................................................................................................................ 18
gedit ........................................................................................................................................................................ 20
nano ........................................................................................................................................................................ 20
• Bash (Shell) 21
Brevi istruzioni per la costruzione di semplici script (http://www.math.unipd.it/~burattin/tutorial/bash-scripting ) . 22
Le variabili ................................................................................................................................................................... 23
I parametri posizionali............................................................................................................................................. 24
Esempi con strutture di controllo ................................................................................................................................ 26
The if Statement ..................................................................................................................................................... 26
The case Statement ............................................................................................................................................... 27
The for Statement ................................................................................................................................................... 27
The while Statement ............................................................................................................................................... 28
Bibliografia .................................................................................................................................................................. 30
Appendice
32
• 1
2
linux-ubuntu v.15.05.29
Note di utilizzo del sistema
operativo Linux- Ubuntu
(Le presenti note si basano anche su documenti prelevati dalla Rete a cui si fa riferimento).
Linux è un sistema operativo free basato su API POSIX e UNIX.
Nel 1985 Richard Stallman fondò la FreeSoftware Foundation, il cui obiettivo era riassunto nell'acronimo ricorsivo
GNU = Gnu's Not Unix.
In realtà l'obiettivo era la scrittura di un intero Sistema Operativo, analogo a UNIX, con delle caratteristiche innovative
e varie applicazioni di corredo, che fosse interamente free, negando così la natura commerciale di UNIX.
Nel 1991 Linus Benedict Torvalds, studente del corso di Sistemi Operativi all'Università di Helsinky, aprì la strada allo
sviluppo di LINUX, che ad oggi è forse il segno più tangibile della realizzazione del progetto GNU.
Distribuzioni
Il sistema operativo Linux è presente sotto diverse forme (dette distribuzioni) che differiscono principalmente per la
dotazione software che integrano e per la scelta dell'interfaccia grafica.
Tutte però condividono quello che è il “cuore” del SO (“kernel”) che contiene i programmi per la gestione vera e
propria del pc e del suo hardware.
Le varie distribuzioni differiscono per il ``target'', per l'organizzazione del file system e dei file di partenza e di
configurazione, per la quantità e l'aggiornamento del materiale offerto, per il tipo di pacchettizzazione, ecc. Per
esempio, da certi punti di vista, Ubuntu Linux differisce da Linux RedHat più di quanto possano differire tra loro due
distinti Sistemi Operativi UNIX di tipo commerciale.
D'altro canto, dal punto di vista dell'utente che non deve fare amministrazione di sistema, l'una distribuzione o l'altra
fa poca differenza: può percepire più che altro la quantità e l'aggiornamento degli applicativi installati.
Sul sito http://www.linuxiso.it/ è possibile reperire tutte le distribuzioni attualmente disponibili e liberamente
scaricabili (grazie all'intuizione rivoluzionaria di Stallman e di Torvalds)
3
linux-ubuntu v.15.05.29
fig.1 – L'home page di linuxiso.it da dove è possibile scaricare la distribuzione preferita
Quale distribuzione scegliere? Dipende dall'uso che si pensa di fare di Linux. Esempio: se si ha un Mac, non c'è molta
scelta, così come se si ha una workstation particolare. Se non ci sono motivi specifici per scegliere una particolare
distribuzione, è bene scegliere secondo i propri gusti o esigenze. Ubuntu è forse la più facile da usare ed è quella a cui
noi faremo riferimento nel seguito.
Organizzazione del sistema – Il File System
Spesso per ``file system'' si intende l'organizzazione a basso livello dei file e delle directory sul corrispondente mezzo
fisico di memorizzazione, che la maggior parte delle volte è una partizione di un disco rigido (fisso). Nel seguito per
file system si intende l'albero delle directory corrispondente a una generica installazione: analizziamone alcune parti.
Non tutte le installazioni di Linux hanno lo stesso albero delle directory, in particolare ogni distribuzione può
presentare delle differenze anche significative da una release all'altra; inoltre, da questo punto di vista le varie
distribuzioni di Linux possono differire anche notevolmente tra loro.
Quindi, per fare un'esposizione utile e sensata, non vengono riportate tutte le directory, ma solo le più importanti, e
non si scende più di un livello dentro l'albero. Ecco un riferimento a Ubuntu Linux.
4
linux-ubuntu v.15.05.29
fig.2 – L'organizzazione dei file in Linux Ubuntu
Il file system ha origine in /, detta ``root'' o directory radice. Si nota esplicitamente che root è anche la username
dell'amministratore di sistema, la cui home directory è /root.
Organizzazione degli utenti
Esistono differenze fra i vari utenti, definite dai permessi e dall'acceso ai file e comandi
che un'utente può lanciare.
E' convenzione che i semplici utenti possano scrivere, leggere e modificare file solo all'interno del loro ambiente
(home) e lanciare semplici comandi che non influiscono sulla configurazione del sistema.
Superutenti
Per poter accedere completamente alle risorse del sistema bisogna accedere al sistema come
superuser,detto root. L'utente root è l'amministratore del sistema con tutti i poteri che comporta questo ruolo, quindi è
molto importante che l'accesso a root sia limitato solo al reale amministratore di sistema (sysadmin).
5
linux-ubuntu v.15.05.29
Utenti e gruppi
Prima di accedere al sistema occorre autenticarsi indicando un nome di utente conosciuto dal sistema. Gli utenti, a
loro volta, appartengono a gruppi. Ogni utente deve appartenere almeno ad un gruppo, ma può appartenere a più
gruppi.
6
linux-ubuntu v.15.05.29
Ubuntu
http://www.ubuntu-it.org/
http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=358&Itemid=33
http://www.ubuntu.com/ubuntu
La dotazione software di UBUNTU
In ogni distribuzione Linux vengono inoltre inclusi moltissimi software applicativi gratuiti e liberamente distribuibili
(sempre secondo la licenza GNU- GPL) (cfr “Ubuntu per principianti” in Youtube)
7
linux-ubuntu v.15.05.29
Interfaccia Unity di Ubuntu 11.10
Scrivania (http://help.ubuntu-it.org/8.04/ubuntu/user-guide/it/overview-desktop.html)
“La scrivania risiede dietro tutti gli altri componenti presenti sullo schermo. Quando non vi è alcuna finestra visibile, la
scrivania è quella parte dello schermo tra il pannello superiore e quello inferiore. Sulla scrivania è possibile
posizionare file e cartelle a cui si voglia accedere con facilità.
Quando si inserisce un CD, una unità flash o un altro supporto rimovibile, oppure un dispositivo contente file come un
lettore musicale o una fotocamera digitale, sulla scrivania compare una icona che rappresenta quel dispositivo.
I file e le cartelle posizionati sulla scrivania sono memorizzati in una
cartella speciale all'interno delle propria cartella home, dal nome Desktop.
Come ogni altra cartella, è possibile porre direttamente in essa file (o altre
cartelle), semplicemente questi appariranno anche sulla scrivania.”
In alto a destra le icone di notifica: mail, rete, volume, utente, icona di accensione (pann. Controllo , etc).
A sx dello schermo :
• DASH: Bottone di Ubuntu ( corrisponde allo START di Win), con casella di ricerca. Si basa su Lens (lenti di
ricerca (dash di base): generali, applicativi, doc privati e cartelle, musica) e Scope (motore di ricerca che puo’
cercare sul PC locale o in rete). Cfr https://launchpad.net/ per gli sviluppatori
•
Spazi di lavoro
8
linux-ubuntu v.15.05.29
•
Cartella Home
o
o
Creazione nuove cartelle, crea nuovo file, copia incolla…
Proprietà
9
linux-ubuntu v.15.05.29
o
Permessi (http://help.ubuntu-it.org/6.10/ubuntu/desktopguide/it/permissions.html)
Tutti i file in un sistema Linux hanno permessi che abilitano o meno gli utenti alla visualizzazione,
modifica o esecuzione. Il super utente "root" ha l'abilità di accedere a ogni file nel sistema. Ogni file
possiede delle restrizioni di accesso, restrizioni sull'utente ed è associato con un proprietario/gruppo.
Ogni file è protetto dai seguenti tre insiemi di permessi, in ordine di importanza:
•
utente si applica all'utente proprietario del file
•
gruppo si applica al gruppo associato con il file
•
altro si applica a tutti gli altri utenti
All'interno di questi insiemi ci sono i permessi attuali. I permessi e come si applicano a file e directory
sono elencati di seguito:
•
lettura i file possono essere visualizzati/aperti il contenuto delle directory può essere visualizzato
•
scrittura i file possono essere modificati o cancellati il contenuto delle directory può essere
modificato
•
esecuzione i file eseguibili possono essere avviati come programmi si può accedere alle directory
Per visualizzare e modificare i permessi di file e directory, scegliere Home e fare clic col tasto destro del
mouse su un file o una directory. Quindi scegliere Proprietà. I permessi sono disponibili all'interno della
scheda Permessi ed è possibile modificarli fin tanto che si è i proprietari del file/directory.
•
Navigazione con visualizzazione elenco
10
linux-ubuntu v.15.05.29
•
Info
•
•
•
•
Istallazione nuovi programmi
Ubuntu software center
Repository
Ubuntu -> Gestore aggiornamenti
11
linux-ubuntu v.15.05.29
Terminale e comandi
L’uso del Terminale in Linux e, quindi in Ubuntu, permette di gestire l’intero sistema usando i COMANDI.
(In queste note si fa riferimento ai documenti presenti in http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1543&Itemid=33 in cui è
possibile trovare ampia e valida documentazione)
Il “Terminale” è uno strumento importantissimo, col quale possiamo interagire direttamente col nostro sistema,
senza utilizzare l’interfaccia grafica. Ubuntu permette di modificare le impostazioni del sistema e di operare senza
dover mai passare dal terminale, ma è opportuno saperlo utilizzare perché può essere utile, se non indispensabile,
dovere impartire comandi in maniera diretta.
Da Dash troviamo il terminal che, una volta aperto si presenta come una finestra vuota che ci mostra una riga di
testo (linea di comando), alla cui destra, normalmente, troviamo il simbolo $ seguito dal cursore intermittente e
pronto a ricevere i nostri comandi.
Cominciamo a capire meglio quella riga che ci dice tante cose:
paolo@scuola:~$
•
Quello che compare alla sinistra di @ è il nostro nome utente, ossia paolo (lo stesso che utilizziamo, insieme
con la password, quando avviamo Ubuntu, ossia in apertura di sessione, da noi scelto durante l’installazione
di Ubuntu.
•
A destra di @ e prima dei due punti, troviamo il nome del computer, nel nostro caso scuola (anche questo lo
abbiamo scelto durante l’installazione di Ubuntu).
•
Dopo i due punti troviamo il simbolo ~ chiamato tilde . Esso significa che ci troviamo dentro la cartella “home”
(qualcosa che somiglia alla cartella Documenti e setting di Windows).
Utente normale
Ubuntu, anche se per entrare abbiamo dovuto digitare la password, ci considera ”utenti normali”, ossia abbiamo dei
privilegi limitati. Questo vuol dire che se vogliamo effettuare delle operazioni che modificano il sistema, dobbiamo
ottenere i privilegi di amministratore, fornendo la password alla richiesta. Il simbolo $, sta a significare che in quel
momento siamo dei semplici utenti normali e quindi abbiamo poteri (privilegi) limitati. Per acquisire,
momentaneamente, i privilegi di root, possiamo scriviamo la parolina magica: sudo. Ecco come scrivere il comando:
carlo@ufficio:~$ sudo comando
Questo termine (sudo), inserito prima di comando, farà scattare la richiesta della password. Solo dopo che abbiamo
digitato la password il nostro comando verrà eseguito. In definitiva sudo, inserito prima di un qualsiasi comando,
consente di eseguire il comando stesso con i privilegi di root (amministratore) e tali privilegi si perdono subito dopo
l'esecuzione del comando. Se si lascia il terminale aperto e dopo un paio di minuti, si vuole eseguire un altro
comando che prevede l'uso di sudo, non sarà necessario fornire di nuovo la password. Infatti, l'effetto "password"
rimane attivo per i successivi cinque minuti.
Come digitare la password - Nelle ultime versioni di Ubuntu, mentre si digita la password, non compaiono gli
asterischi e sembra che non succeda nulla, ma non è cosi’. In effetti è solo una questione di sicurezza.
12
linux-ubuntu v.15.05.29
Sudoers, compiere operazioni con sudo
Il comando sudo (super user do) è una stringa di comando usata su sistemi operativi
Unix-like per eseguire operazioni con privilegi di root (ovvero di amministratore).
A differenza del comando su (substitute user), sudo richiede all’utente solo la
propria password, e non quella dell’amministratore; perciò non occorre conoscere
password altrui, con ovvi vantaggi sulla sicurezza, è sufficiente essere stati
precedentemente abilitati. Il file di configurazione /etc/sudoers stabilisce chi può
sostituire chi, su quali macchine, e relativamente a quali operazioni. Fonte:
Wikipedia
Per aggiungere un utente al gruppo di sudoer, è sufficiente loggarsi da root e
lanciare il comando:
visudo
Potremo così modificare il file /etc/sudoers ed aggiungere i permessi di sudoer ad un
utente specifico.
Una volta che il nostro utente sarà come un root, potremo lanciare qualsiasi
operazione di sistema che richieda permessi speciali, aggiungendo “sudo” all’inizio
di ogni sintassi. Per esempio, per l’installazione di VLC:
sudo apt-get install vlc
Il sudoer è molto comodo, ma ovviamente comporta più rischi per la sicurezza,
specialmente nel caso in cui il sistema è utilizzato da più utenti. Usatelo con
discrezione.
Utente root
Ogni volta che lo reputeremo necessario, possiamo utilizzare un altro metodo che ci consentirà di conservare, più a
lungo, i nostri poteri di amministratore. Nel caso dell'esempio con nome carlo e nome del computer ufficio, ecco
come daremo il comando:
carlo@ufficio:~$ sudo –s
ci verrà chiesta la password e subito dopo noteremo che la riga sarà diventata:
root@ufficio:~#
Ossia il nostro nome è cambiato in root e $ (dollaro) è diventato # (sharp o cancelletto), significa che adesso non è
loggato l’utente carlo ma l’utente di root che ha i privilegi d’amministratore.
Ecco ad esempio due modi diversi, ma entrambi corretti, di indicare come dare il comando ciccio:
$ sudo ciccio
==> significa che al terminale dovrà esserci carlo@ufficio:~$ sudo ciccio
# ciccio
==> significa che al terminale dovrà esserci root@ufficio:~# ciccio
Esempio pratico
Per finire faremo un esempio pratico. Vogliamo impostare la data e l’ora del nostro computer. Useremo il comando
date. Ad esempio, per il 22 luglio 2008, ore 16.30 metteremo i numeri 072216302008 (07=luglio, 22=giorno,
1630=ore e minuti, 2008=anno), quindi il comado vero e proprio sarà:
date 072216302008
Il primo metodo da utilizzare, nel caso fossimo utenti normali, consiste nell'inserire sudo davanti al comando:
sudo date 072216302008
Dopo avere dato il comando, ci verrà chiesta la password e quindi (se non abbiamo commesso errori di digitazione
o di copia-incolla) sarà cambiata l’ora e la data.
Il secondo metodo consiste nel farci riconoscere, subito, come utente root e dopo dare il comando date. Per farci
riconoscere quale utente root, digitiamo sudo -s o con le solite modalità di scrittura indicate da manuali e guide:
$ sudo –s
Il nostro comando date sarà:
date 072216302008 e dopo avere dato Invio da tastiera, la data e l'ora del nostro sitema saranno impostate
come noi volevamo. Ricordiamo che fino a quando non chiuderemo il terminale, saremo utenti root, ovvero resterà
il simbolo #
13
linux-ubuntu v.15.05.29
Disconnessione da root
per tornare utente con permessi normali sulla stessa finestra di terminale:
exit
Nota: questo comando funziona solo se in finestra si è partiti da user e ci si è loggati come root.
Il comando exit può servire anche per chiudere la finestra del terminale, da riga di codice stessa.
Operazioni di uso generale
Quale versione sto usando?
who -- version
Arresto del sistema
Per spegnere il PC direttamente da terminale, si può lanciare:
halt
Serve essere root o avere i permessi di sudoer (aggiungere sudo all’inizio della sintassi) affinchè il comando vada a
buon fine.
Riavvio del sistema
Per riavviare il PC direttamente da terminale, si può lanciare:
reboot
Lista dei File System montati
Se si avesse l’esigenza di conoscere i File System montati nel sistema, utile per sapere come sono allocati in /dev,
che tipo di permessi di lettura e scrittura si hanno in essi, e così via, si può semplicemente lanciare da qualunque
utente:
mount
Per ottenere in output la lista che cerchiamo.
Lista delle periferiche USB montate
Lanciare, da root o con “sudo”, il seguente comando:
lsusb
Lista delle schede PCI montate
lspci
Ricerca di file nel sistema
Se siamo alla ricerca di un determinato file all’interno del nostro computer, il mio consiglio è andare su Risorse e
selezionare Cerca file. In questo modo il processo sarà più rapido e meno macchinoso, ma in questa guida siamo qui
per vedere come è possibile farlo anche da terminale.
Il motore di ricerca da terminale si chiama Locate e possiamo installarlo normalmente digitando:
14
linux-ubuntu v.15.05.29
apt-get install locate
Esso fa uso di un database ad aggiornamenti costanti, ma non frequenti, pertanto se volessimo ricercare un file di
recente creazione, spostamento o immissione nel sistema dovremo prima lanciare il comando di update per questo
database. Da root o con permessi sudoer aggiungendo “sudo” prima della sintassi digitiamo:
/usr/bin/updatedb
Attendiamo che l’aggiornamento sia terminato, e poi lanciamo:
locate testo.txt
se per esempio stiamo cercando da qualche parte nel nostro sistema il file “testo.txt”. Naturalmente, quella parte è da
sostituire con il file di cui siete alla disperata ricerca.
Visualizzare lo spazio libero sulle memorie e lo stato della memoria RAM e della cache
Se vogliamo avere una veloce panoramica dello spazio libero di tutti i File System montati e della RAM in uso,
esistono due comandi che ci vengono in soccorso.
Il primo, per gli spazi liberi, è:
df
Mentre il secondo, per la gestione della RAM e della cache in uso, è:
free
Niente di più semplice, vero?
Visualizzare i processi di sistema in uso e le loro dipendenze
Da terminale abbiamo anche la possibilità di avere la panoramica sui processi in uso dal sistema.
ps –e
ps -axl
Potete anche chiedere uno schema strutturato ad albero se volete le idee più chiare sui processi aperti:
pstree
Forzare la chiusura di un processo
kill processo
Vedere in ordine cronologico tutti i comandi digitati
History
Creazione di un nuovo utente
Modifica della password di un user e di un root .
Per creare un nuovo utente da terminale, è sufficiente diventare root, e digitare il comando:
adduser nomeutente
Saranno richieste la password che si vuole assegnare all’utente, e in più altre piccole informazioni facoltative che
potete immettere, ovvero Nome Completo, Stanza N° (?!), Numeri telefonici, ed altro.
Cancellazione di un utente
userdel nomeutente
Modifica della password di un user e di un root
Per la modifica da terminale della password di un utente, è possibile con l’uso di passwd.
Possono verificarsi tre condizioni:
1) Siamo loggati come utenti normali, abbiamo i permessi sudo, e non abbiamo mai impostato una password di root
(situazione tipica dopo l’installazione di Ubuntu). Ci basterà digitare:
15
linux-ubuntu v.15.05.29
sudo passwd root
E ci verrà richiesto di immettere una password e di ripeterla. Sarà la password assegnata all’utente root;
2) Siamo loggati come root, e vogliamo impostare una password diversa ad un utente normale. Basterà lanciare
semplicemente:
passwd nomeutente
Con il nome dell’utente a cui vogliamo settare la password al posto di “nomeutente”;
3) Siamo loggati come utenti normali, non ricordiamo la password di root e non abbiamo i permessi di sudoers. Qui è
un bel problema. Credo che non si possa fare null’altro che reinstallare il sistema.
Operazioni di Gestione (file e cartelle)
(http://vicsteele.wordpress.com/comandi/#6
Eleco comandi : http://www.istitutomajorana.it/scarica/Ubuntu_comandi_da_terminale.pdf)
Accedere ad una cartella o ad una directory
Per entrare nella cartella “cartella” digitiamo:
cd cartella ; ad esempio cd documenti
Per entrare nella cartella “sottocartella” presente in “cartella” in un solo comando partendo da fuori le due cartelle,
digitiamo:
cd cartella/sottocartella
Se siamo in “sottocartella” e vogliamo tornare in “cartella” digitiamo:
cd ..
Se siamo in “sottocartella” e vogliamo uscire sia da lì che da “cartella”, digitiamo:
cd ../..
Visualizzare il contenuto della cartella
ls
ls –help
ls –l
Vedo i permessi
ls –a
Si potranno visualizzare anche gli eventuali file nascosti, mentre scrivendo:
ls –A
Si potranno visualizzare oltre ai file nascosti anche quelli di sistema
Creare una cartella
mkdir cartella
Se volessimo creare la cartella “cartella” e subito al suo interno la cartella “sottocartella” scriviamo:
mkdir cartella/sottocartella
Attenzione ai permessi. Se farete “sudo mkdir …” oppure lancerete il comando da root, da utenti normali non si
avranno i permessi di scrittura.
Rinominare una cartella
mv cartella/ directory/
Tagliare ed incollare una cartella
cd cartella
mv sottocartella /home/vostronomeutente/directory
16
linux-ubuntu v.15.05.29
Copiare ed incollare una cartella
cd cartella
cp -r sottocartella /home/vostronomeutente/directory
Non scordatevi “-r”, altrimenti vi darà errore di directory omessa.
Cancellare una cartella vuota
Questo comando va bene solo se la cartella che si vuole cancellare è vuota.
rmdir cartella
Cancellare una cartella non vuota
rm -rf cartella
Per dovere di cronaca “-rf” è in grado di cancellare ogni file, se avete i permessi di root o di sudo.
Rinominare un file
Per rinominare un file da terminale deve essere usato, come per il Taglia e Incolla, mv.
Volendo rinominare il file “testo.txt” in “text.txt” dovremo dirigerci prima nella cartella in cui il file è presente, e poi
digitare: mv testo.txt text.txt
Tagliare ed incollare un file
mv testo.txt /home/vostronomeutente/
Copiare ed incollare un file
cp testo.txt testo.bak
Cancellare un file
rm testo.txt
il file sarà cancellato, se si possiedono i permessi giusti.
Creare un collegamento
Per creare un collegamento di file o cartelle si deve usare il comando ln.
ln "file da collegare" "directory di collegamento"
Poniamo ad esempio che ho il file testo.txt nella home e voglio creare un collegamento in usr/bin. Scriverò:
ln /home/gigi/testo.txt /usr/bin
Digitate ln –help per avere la lista e le loro spiegazioni.
Cambiare i permessi di lettura, scrittura ed esecuzione.
Può succedere di aver bisogno di dover cambiare i permessi ad un file, per consentire la lettura, la scrittura o
l’esecuzione ad ogni utente, oppure al contrario di proteggerlo da utilizzi indesiderati e restringerlo ad un particolare
utente o gruppo.
Quello che si dovrà utilizzare sarà il chmod. Per cambiare i permessi, ad esempio, al file testo.txt dovremo prima farlo
da autori del file (per essere sicuri che abbiamo ogni permesso di farlo), ad esempio accedendo prima da root se non
possiamo interagire col file da utenti semplici, e poi digitare:
chmod xxx testo.txt
Al posto di XXX vanno tre numeri. I numeri che possiamo usare sono:
777 - Lettura, scrittura, esecuzione per tutti (proprietario, gruppo, altri)
755 – Lettura, scrittura, esecuzione per il proprietario, lettura, esecuzione per il gruppo ed altri utenti.
644 – Lettura, scrittura per il proprietario, lettura per il gruppo ed altri utenti.
17
linux-ubuntu v.15.05.29
666 – Lettura e scrittura per tutti.
700 – Lettura, scrittura, esecuzione per il proprietario, nessun permesso per il gruppo ed altri.
Pertanto, se volessimo assegnare qualunque permesso a tutti:
chmod 777 testo.txt
Scaricare un file da Internet
Da terminale è possibile anche scaricare file da Internet, che siano http o ftp.
Per farlo, basterà digitare wget seguito dall’url del file che si vuole scaricare. Se volessimo scaricare il file
http://www.sito.it/file.rar ,ci basterà digitare:
wget http://www.sito.it/file.rar
Il file sarà messo in download e, una volta scaricato, piazzato nella directory in cui siamo presenti nel terminale al
momento del lancio del comando.
Operazioni su utenti
Chi sono
who
Editor
http://www.coresis.com/extra/linuxcorsobase/6-4.htm
VI
L'editor VI (visual editor) è il più diffuso nell'ambiente UNIX e Linux.
Per aprire vi ed editare un nuovo file basta digitare vi oppure vi nomefile nel secondo caso, se il file esiste viene
aperto, se non esiste viene creato nuovo. Ad esempio vi aaa.c
VI ha due modalità di funzionamento: il modo comando (command) e il modo inserimento (input).
In modalità inserimento ogni parola verrà inserita direttamente nel file.
E' possibile usare molti comandi per entrare in questa modalità il più comune è i (insert). Entrare in modalità comando
è possibile in qualsiasi momento premendo il tasto ESC, ogni lettera verrà interpretata come un comando.
(La versione GNU di VI si chiama VIM, (Vi IMproved) ed è quella comunemente usata nelle distribuzioni Linux.)
Comandi principali
Salvare e uscire
ZZ
salvare e uscire
18
linux-ubuntu v.15.05.29
:w
salvare
:w
<file>
salvare in altro file con il nome desiderato
:wq
salvare e uscire
:q
se non sono state effettuate modifche usce senza salvare
:q!
uscita incondizionata
Comandi di copia e incolla
yy
copia la riga corrente
y2 <giu>
copia 2 righe sotto la posizione in cui si trova il cursore
p
incolla il testo nel punto dove si trova il cursore
Cancellare righe o caratteri
x
cancella il carattere in cui si trova il cursore
X
cancella il carattere alla sinistra del cursore
D
cancella tutto quello che si trova alla sinistra del cursore fino alla
fine della riga
dd
cancella la riga in cui si trova il cursore
3dd
cancella 3 righe partendo dalla quella in cui si trova il cursore
dG
cancella dalla posizione in cui si trova il cursore fino alla fine del
file
d1G
cancella dalla posizione in cui si trova il cursore fino all'inizio del
file
Spostarsi nel file
^
inizio della riga corrente
$
fine della riga corrente
G
fine del file
1G
inizio del file
Ricerca e sostituzione del testo
/<testo>
cerca il testo dalla posizione corrente verso il basso
?<testo>
cerca il testo dalla posizione corrente verso l'alto
u
annulla l'ultima modifica effettuata
U
annulla l'ultimo annullamento
.
ripete l'ultimo comando
19
linux-ubuntu v.15.05.29
gedit
È l'editor predefinito in Ubuntu, http://wiki.ubuntu-it.org/Ufficio/EditorDiTesto
Per aprire uno specifico file è sufficiente aggiungere il percorso del file:
gedit /percorso/al/file
sostituendo /percorso/al/file con un file esistente, come ad esempio /etc/apt/sources.list
nano
Un altro editor molto usato, più facile e diretto è “nano” (basta digitare “nano”)
20
linux-ubuntu v.15.05.29
Bash (Shell)
Bash (acronimo per bourne again shell) è una shell testuale del progetto GNU usata nei sistemi operativi Unix e
Unix-like. Essa è chiamata anche Bourne shell dal nome del suo autore originario Stephen Bourne.
Si tratta di un interprete di comandi che permette all'utente di comunicare col sistema operativo attraverso una serie di
funzioni predefinite, o di eseguire programmi.
Essa mette a disposizione un semplice linguaggio di scripting che permette di svolgere compiti più complessi, non
solo raccogliendo in uno script una serie di comandi, ma anche utilizzando variabili, funzioni e strutture di controllo di
flusso. (http://it.wikipedia.org/wiki/Bash)
(http://www.wikihow.com/Write-a-Shell-Script-Using-Bash-Shell-in-Ubuntu , è consigliato dare un’occhiata a http://www.youtube.com/watch?v=GLJfdBk8z8E
oppure http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=1400&Itemid=33 )
Esempi
Scrivere un’applicazione che mostra la lista dei file in una cartella.
Lanciare Terminal
Lanciare vi (o altro editor, ad esempio gedit) con
vi lista.sh
il nome della shell: ad esempio
Dentro l’editor digitare ‘i’ per l’inserimento
Inserire la riga
#!/bin/bash , conosciuta come “Shebang line”
Digitare: echo “benvenuto nei file della cartella”
ls
Digitare: echo “arrivederci dai file della cartella”
ESC
:wq! (per salvare il file)
Per rendere ESEGUIBIE la shell: chmod +x lista.sh
Digitare ./lista.sh
oppure sh lista.sh e … congratulazioni!!!
Ecco un semplice esempio di script:
#!/bin/bash
# Questo script installa le tre applicazioni audacity amsn e amule
sudo apt-get install audacity -y
sudo apt-get install amsn -y
sudo apt-get install amule -y
exit
Ultimata la scrittura ci basta salvare il
l'estensione.sh, ad esempio: installazione.sh
file
con
un
nome
qualsiasi
e
con
Facendo doppio click sullo script (installazione.sh), lo stesso verrà aperto
con Gedit (editore di testi) e ne verrà, semplicemente mostrato il contenuto. Questo
in quanto lo script non è stato reso eseguibile. Per renderlo eseguibile, bisogna
21
linux-ubuntu v.15.05.29
fate click col destro sullo script
consentire l’esecuzione come programma.
Brevi
istruzioni
per
la
(file .sh),
costruzione
quindi
di
scegliete Proprietà
semplici
->
script
(http://www.math.unipd.it/~burattin/tutorial/bash-scripting )
Un Bash script è un file di testo che contiene una serie di comandi che saranno eseguiti sequenzialmente. Ciascun
comando deve essere separato da un carattere di “newline” (ovvero ci deve essere un comando per riga).
Un esempio di Bash script è il seguente:
#!/bin/bash
date > ora-corrente
mv ora-corrente nuovo-nome
la prima riga inizia con i caratteri “#!” seguiti da un percorso “/bin/bash”. I primi servono a far identificare quel file come
uno script eseguibile; il percorso indica quale interprete utilizzare (in questo caso, Bash). A partire dalla seconda riga,
inizia la serie di comandi vera e propria. In questo caso, il primo comando eseguito è “date > ora-corrente” che scrive
l'orario corrente sul file ora-corrente; il secondo comando, “mv ora-corrente nuovo-nome”, rinomina il file oracorrente in nuovo-nome.
Per poter eseguire uno script, salvato in un file “test.sh”, si deve utilizzare la seguente sintassi:
$ bash test.sh
in alternativa, è possibile aggiungere al file i permessi di esecuzione, tramite il comando:
$ chmod +rx test.sh
che dà a tutti gli utenti il permesso di lettura ed esecuzione per il file test.sh. A questo punto, lo stesso script può
essere invocato tramite la più semplice sintassi
$ ./test.sh
All'interno di uno script Bash è possibile inserire qualsiasi comando che possa essere interpretato da Bash. Ad
esempio, considerando lo script precedente, si possono aggiungere alcune stampe di verifica, ottenendo:
#!/bin/bash
echo "Stampa ora corrente"
date > ora-corrente
echo "Spostamento file"
mv ora-corrente nuovo-nome
echo "Esecuzione completata"
che produrrà il seguente output:
$ ./test.sh
Stampa ora corrente
Spostamento file
Esecuzione completata
Promemoria esercizio shell
cd Scrivania
cd aa
ls
gedit aa.sh
ls
aa.sh
bash aa.sh
chmod +rx aa.sh
aa
./aa.sh
hystory
cd pippo
ls
22
linux-ubuntu v.15.05.29
./sc1.sh
ls -l
./script.sh
cd ..
date
cd..
cd Scrivania
mkdir bb
cd bb
ls
gedit bb.sh
ls
bb.sh
ls -l
chmod +rx bb.sh
ls -l
./bb.sh
history
history>todo.txt
Le variabili
http://www.pluto.it/files/ildp/guide/abs/variables.html
Le variabili rappresentano il modo in cui i linguaggi di scripting e di programmazione identificano i dati. Una variabile
non è nient'altro che un'etichetta, un nome assegnato a una locazione, o a una serie di locazioni, di memoria del
computer che contiene un dato. Le variabili compaiono nelle operazioni aritmetiche, nelle manipolazioni quantitative e
nelle verifiche di stringhe.
Bisogna fare una netta distinzione tra il nome di una variabile ed il suo valore. Se variabile1 è il nome di una
variabile, allora $variable1 è il riferimento al suo valore cioè il dato in essa contenuto.
bash$ variabile=23
//assegnamento del valore
bash$ echo variabile
variabile
bash$ echo $variabile
23
//riferimento al valore contenuto
L'unica volta in cui una variabile compare "nuda" -- senza il prefisso $ -- è quando viene dichiarata o al momento
dell'assegnamento, quando viene annullata, quando viene esportata.
L'assegnamento può essere fatto con = (come in variabile=23), con un enunciato read (read variabile) ed all'inizio di
un ciclo (for var2 in 1 2 3).
NOTA Quando si inizializzano le variabili, non sono consentiti spazi prima e dopo il
segno =
#!/bin/bash
# Variabili: assegnamento e sostituzione
a=375
ciao=$a
23
linux-ubuntu v.15.05.29
echo ciao
# Non è un riferimento a variabile, ma solo la stringa "ciao".
echo $ciao
echo ${ciao}
# Come sopra.
Un esempio con lettura variabile (read):
Chiede una riga in input e mostra un messaggio in base al contenuto:
#!/bin/bash
echo "Scrivi qualcosa e premi Invio:"
read linea
case $linea in
uno)
echo "Hai digitato 'uno'"
;;
due|tre)
echo "Hai digitato 'due' oppure 'tre'"
;;
q*)
echo "Hai digitato qualcosa che inizia con 'q'"
;;
*)
echo "Hai digitato qualcosa che non conosco"
;;
esac
I parametri posizionali
Sono i parametri che seguono il nome di uno script di shell. Essi sono collocati nelle variabili $1, $2, $3 e così via.
Lunghe secondo necessità, le variabili vengono aggiunte ad una matrice interna. $# contiene il numero totale dei
parametri, come viene dimostrato con questo semplice script:
#!/bin/bash
# positional.sh
# Questo script legge 3 parametri posizionali e li stampa.
POSPAR1="$1"
POSPAR2="$2"
POSPAR3="$3"
echo "$1 è il primo parametro posizionale, \$1."
echo "$2 è il secondo parametro posizionale, \$2."
echo "$3 è il terzo parametro posizionale, \$3."
echo
echo "Il numero totale di parametri posizionali è $#."
Con l'esecuzione uno potrebbe dare un qualsiasi numero di argomenti:
ora provate a chiamare :
positional.sh uno due tre quattro cinque
Cosa mostra il video?
…………………………………
24
linux-ubuntu v.15.05.29
Lo script qui sotto esegue alcuni comandi (date, w, uname, uptime)
#!/bin/bash
clear
printf "Queste sono informazioni sono fornite da miosistema.sh. Il programma
inizia ora.\n"
printf "Ciao, $USER\n\n"
printf "La data odierna è `date`, questa è la settimana n. `date +"%V"`.\n\n"
printf "Questi sono gli utenti attualmente collegati:\n"
w | cut -d " " -f 1 - | grep -v USER | sort -u
printf "\n"
printf "Questo è `uname -s` che gira in un processore `uname -m`.\n\n"
printf "Questa è l'informazione di uptime:\n"
uptime
printf "\n"
printf "Questo è tutto gente!\n"
http://www.math.unipd.it/~burattin/tutorial/bash-scripting
Vi sono un certo numero (tendenzialmente elevato) di cosiddette variabili speciali, usate per il controllo dell'esito dei
comandi, per il passaggio di argomenti agli script e per la gestione dei processi.
Variabile
Significato
$?
indica errore se != 0
$!
messaggio d'errore
$#
numero parametri posizionali
$*
espande a tutti i parametri
$0
nome del programma in esecuzione
$1..$9
primi 9 parametri passati al programma
${10}..${99}..
dal decimo parametro in poi
(http://www.retitlc.polito.it/mellia/corsi/LaboratorioPROTO/doc/Scripting/QESS.html)
[nonsns]$ cat hello-world
#! /bin/bash
echo "hello, world, sono il file $0 (processo $$)"
echo "hai specificato $# parametri"
echo "mi hai detto $*"
echo
exit 2
[nonsns]$ hello-world a b 99
hello, world, sono il file ./hello-world (processo 2058)
hai specificato 3 parametri
mi hai detto a b 99
[nonsns]$ echo $?
2
Qui c'è un esempio molto semplice che produrrà un suono all'avvio ed allo spegnimento della vostra
macchina:
#!/bin/bash
25
linux-ubuntu v.15.05.29
# This script is for /etc/rc.d/init.d
# Link in rc3.d/S99audio-greeting and rc0.d/K01audio-greeting
case "$1" in
'start')
cat /usr/share/audio/at_your_service.au > /dev/audio
;;
'stop')
cat /usr/share/audio/oh_no_not_again.au > /dev/audio
Esempi con strutture di controllo
The if Statement
La sintassi dell'istruzione if :
if [ expression ]
then
commands
elif [ expression2 ]
then
commands
else
commands
fi
http://it.wikipedia.org/wiki/Bash
Confronta se i file "file_a" e "file_b" sono identici tramite il comando cmp
(effettuando la redirezione dello standard output e dello standard error a /dev/null
in modo da nascondere i suoi messaggi), e scrive a video il risultato:
#!/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
-----------------------------------------------------Controlla se il file "prova.txt" esiste e scrive un messaggio al riguardo:
#!/bin/bash
if [ -f prova.txt ]
then
echo "Il file prova.txt esiste."
else
echo "Il file prova.txt non esiste o non è un file"
fi
-----------------------------26
linux-ubuntu v.15.05.29
si noti che bash usa l'inverso del nome per segnalare la fine della dichiarazione. In questa dichiarazione la parola
chiave fi viene utilizzato per segnalare la fine del if. L'istruzione elif è un'abbreviazione di else if.
The case Statement
case string1 in
str1)
commands;;
str2)
commands;;
*)
commands;;
esac
ask yes or no input from user.
$ cat yorno.sh
#!/bin/bash
echo -n "Do you agree with this? [yes or no]: "
read yno
case $yno in
[yY] | [yY][Ee][Ss] )
echo "Agreed"
;;
[nN] | [n|N][O|o] )
echo "Not agreed, you can't proceed the installation";
exit 1
;;
*) echo "Invalid input"
;;
esac
$ ./yorno.sh
Do you agree with this? [yes or no]: YES
Agreed
si noti che con l'istruzione case è possibile confrontare le stringhe con caratteri jolly
The for Statement
Un ciclo (o iterazione) è una ripetizione di una determinata azione per un dato numero di volte sulla base di un dato
delimitatore.
27
linux-ubuntu v.15.05.29
for var1
do
statements
done
Il programma seguente stampa i numeri da 1
a 10:
for i in $(seq 1 10);
do
echo $i
done
Il ciclo FOR crea un iterazione sulla base di una data lista di valori o di una data condizione. Vediamo un esempio:
#!/bin/sh
for X in 1 2 3 4 5
do
echo $X
done
In questo caso il ciclo for si ripete per ogni valore specificato (nel nostro caso verranno stampati i numeri da 1 a 5, ma
avremmo potuto usare anche valori non sequenziali oppure non numerici).
Avremmo potuto scrivere lo stesso esempio anche in questo modo:
for X in $(seq 5)
do
echo $X
done
In pratica abbiamo utilizzato il comando seq per creare una sequenza numerica; ovviamente l'utilità di questo
comando è maggiore tanto più è estesa la sequenza che desideriamo ciclare.
Il comando seq può essere utilizzato in tre modi differenti:
•
specificando solo il valore di arrivo (come nel nostro esempio);
•
specificando, nell'ordine, sia il valore di partenza che quello di arrivo;
•
specificando, nell'ordine: il valore di partenza, l'incremento, il valore di arrivo;
The while Statement
while expression
do
statements
done
#!/bin/bash
# This script opens 4 terminal windows.
i="0"
28
linux-ubuntu v.15.05.29
while [ $i -lt 4 ]
do
xterm &
i=$[$i+1]
done
#!/bin/sh
X=1
while [ $X -le 5 ]
do
echo $X
X=`expr $X + 1`
done
Nel nostro caso il ciclo continerà fino a quando la condizione limite (X minore o uguale a 5) risulta vera stampando,
quindi, una sequenza numerica da 1 a 5.
Due comandi molto importanti nella gestione dei loop sono break e continue.
Il comando break serve per interrompere il ciclo in modo arbitrario. Vediamo un esempio di ciclo while interrotto
con break:
#!/bin/sh
X=1
while [ $X -le 20 ]
do
echo $X
if [ $X -eq 5 ]
then
break
fi
X=`expr $X + 1`
done
Nel nostro esempio il ciclo verrà interrotto quando la nostra variabile contatore avrà raggiunto il valore di 5.
Attraverso break è anche possibile interrompere più cicli annidiati:
#!/bin/sh
for X1 in 1 2 3
do
for X2 in 0 5
do
if [ $X1 -eq 2 -a $X2 -eq 0 ]
then
break 2
else
echo "$X1 $X2";
fi
done
done
29
linux-ubuntu v.15.05.29
In questo esempio abbiamo introdotto una doppia condizione, quando verificata questa portera allo stop di entrambi i
cicli, per farlo si usa la sintassi:
break n
Dove "n" indica il i ciclo da cui si desidera uscire (n deve essere maggiore o uguale di 1).
Mentre break interrompe il ciclo, il comando continue lo fa proseguire semplicemente saltando l'iterazione corrente. Il
funzionamento e la sintassi sono i medesimi visti per break.
Bibliografia
http://www.inforge.net/community/guide-gnu-linux/392678-list-principali-comandi-shell-linux.html in italiano!
http://oldsite.to.infn.it/groups/group4/mirror/linux/AppuntiLinux/AL-3.10.42.html
http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html bush for beginners GUIDA COMPLETA con esempi
http://wiki.ubuntu-it.org/Programmazione/LinguaggioBash
http://stackoverflow.com/questions/4728320/bash-script-case-statement-and-sub-menus
http://www.pluto.it/files/ildp/guide/abs/internal.html#EX36 guida in italiano
http://www.thegeekstuff.com/linux-101-hacks-ebook/ book free
http://codex.altervista.org/guidabash/guidabash_1_11.pdf
Youtube:
https://www.youtube.com/watch?v=wNOw1L2ZfRs Pipe e >
https://www.youtube.com/watch?v=4W7EFxkkzFg Aritmetica
30
linux-ubuntu v.15.05.29
31
linux-ubuntu v.15.05.29
1 Appendice
SCHEMA PER LA RELAZIONE DI LABORATORIO …………………
Ecco che cosa deve contenere una relazione di laboratorio.
1. Intestazione: deve riportare tutti i dati dell’autore della relazione (nome,
cognome, classe), nomi degli altri componenti del gruppo di lavoro e la data.
2. Titolo dell’esperienza.
3. Obiettivo/i dell’esperienza (vincoli oggettivi e soggettivi)
4. Materiale/software occorrente.
5. Procedimento/metodo: si riporta lo svolgimento dell’attività pratica e per far
questo ci si può aiutare anche con formule, calcoli, tabelle, disegni o con
l’inserimento di immagini o altro materiale multimediale relativo all’esperienza
realizzata.
6. Codice e Osservazioni: si riporta il codice del programma (se c’è) e/o la
descrizione di tutto ciò che si ritiene importante per la comprensione del
processo da realizzare
7. Considerazioni critiche e conclusioni: verificare se sono stati raggiunti gli
obiettivi prefissati, valutare se i risultati sono in accordo con le proprie
conoscenze teoriche, fornire una interpretazione e/o spiegazione dei risultati
ottenuti. (In alcune esperienze l’insegnante fornirà domande specifiche e
proprio rispondendo a tali domande si potranno trarre le opportune
interpretazioni, spiegazioni e conclusioni).
Nella pagina seguente è riportato un esempio di modello da usare per la relazione
di laboratorio che può essere modificato per adattarlo alle diverse attività di
laboratorio.
32
linux-ubuntu v.15.05.29
ISIS “C. Facchinetti” Sede: via Azimonti, 5
21053 Castellanza
Relazione di …………………….- Classe …………………Data ……………………………
Cognome …………………………………………….. Nome …………………………………..
Componenti del gruppo di lavoro:
Titolo
(indice)
Obiettivo/i dell’esperienza
Materiali/software occorrente
Procedimento/metodo
Codice/Osservazioni
Considerazioni critiche e conclusioni
33
Scarica

linux-ubuntu v.15.05.29