Lug Roma3 Corso Linux Base
Transcript of Lug Roma3 Corso Linux Base
![Page 1: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/1.jpg)
2/136
�
�
�
�
�
�
Lezione 1 - Unix: Definizioni e Storia
![Page 2: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/2.jpg)
3/136
�
�
�
�
�
�
Def: Sistema operativo
Collezione di programmi per il coordinamento
delle attivita e delle componenti funzionali
di un calcolatore
� Le attivita possono venir generate a seguito dell’interazione
operatore/elaboratore
![Page 3: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/3.jpg)
4/136
�
�
�
�
�
�
Collezione di programmi
• Kernel o Nucleo del S.O.
•Driver
• Gestore degli accessi
• Gestore dei protocolli di rete
• Programmi di utilita
• Compilatori
• Librerie
• . . .
![Page 4: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/4.jpg)
5/136
�
�
�
�
�
�
Attivita funzionali
• elaborazione numerica
• stampe e salvataggi
• scrittura di applicativi
• interazione con applicativi
• attivita ludica
• . . .
![Page 5: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/5.jpg)
6/136
�
�
�
�
�
�
Coordinamento
• Gestione del tempo di processore
• Condivisione d’accesso
•Mutua esclusione
• Serializzazione
• Controllo permessi
• . . .
![Page 6: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/6.jpg)
7/136
�
�
�
�
�
�
![Page 7: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/7.jpg)
8/136
�
�
�
�
�
�
Unix - storia
Nasce negli anni ’70 alla Bell Labs (Thompson, Ritchie)come sistema proprietario in contrapposizione
alla politica diMULTICS
(Multiplexed Information and Computing Service)
Gira inizialmente di PDP-7 (assembler)Poi su PDP-11 viene riscritto in C (1973) da
Dennis Ritchie
![Page 8: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/8.jpg)
9/136
�
�
�
�
�
�
Unix - storia (2)
In seguito ad un accordo del 1953 AT&T nonpoteva commercializzare prodotti informatici
⇓Unix viene offerto gratutitamente (no support)
⇓Viene portato su altre architetture
![Page 9: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/9.jpg)
10/136
�
�
�
�
�
�
Unix - storia (3)
AT&T nel 1983 estende Unix
⇓System V
Alla Berkeley Unix viene portato su VAX
⇓Berkeley System Distribution
![Page 10: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/10.jpg)
11/136
�
�
�
�
�
�
Unix - inquadramento
Sistema operativo:
•multitasking grazie a:
– time sharing
– contest switching
•multiuser con:
– superuser
– utenti
– gruppi
![Page 11: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/11.jpg)
12/136
�
�
�
�
�
�
Unix - inquadramento (2)
• portabile
– scritto in linuguaggio C
– implementa una serie di funzioni standard
• con funzionalita di rete
– client/server
– peer2peer
– 3-Tier
![Page 12: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/12.jpg)
13/136
�
�
�
�
�
�
Progetto POSIX
Portable Operating System Standardfor
Computer Environment
• Standard IEEE
• Detta i requisiti di compatibilita con lo standard Unix
• si suddivide in:– POSIX.1 (IEEE 1003.1 ) ⇒ Kernel
– POSIX.2 (IEEE 1003.2 ) ⇒ Interfaccia, utilities
– POSIX.3 (IEEE 1003.3 ) ⇒ Tools di valutazione
![Page 13: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/13.jpg)
14/136
�
�
�
�
�
�
Linux & Open Source
progetto GNU (GNU is NOT UNIX)
FSF: 1985 - Richard Stallman (MIT)progetto Linux
Linux on Minix: 1991 - Linus Torvaldprogetto Minix
Minux: Prof. Tanenbaumprogetto GPL (GNU Public License)
GNU/Linux + Debian
![Page 14: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/14.jpg)
15/136
�
�
�
�
�
�
Il kernel
Gestisce:
• accesso al filesystem
• scheduling
• accesso ai protocolli di rete
Fornisce:
• API per l’accesso ai dispositivi HW
• virtualizzazione della memoria
• strumenti di mutua esclusione
![Page 15: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/15.jpg)
16/136
�
�
�
�
�
�
Il filesystem Unix
Il filesystem e il complesso sistema che i sistemi operativi moderni
utilizzano per organizzare le entita di memorizzazione permanente
Poiche in Unix ogni cosa e un file il filesystem e fondamentale
La struttura logica del FS Unix e un albero
La struttura fisica del FS Unix e fatta di blocchi e inode
Il filesystem Unix inizia da root (/)
![Page 16: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/16.jpg)
17/136
�
�
�
�
�
�
File ordinari
Rientrano in questa categoria l’80% dei file diuso comune. Possono avere un nome lungo fino
a 255 caratteri, che puo iniziare e contenerequalunque lettera o numero, degli spazi, i segni
di interpunzione.
[oratio:~] andrea% .,asdf. sdfjk,234_ad:
e un nome di file valido
![Page 17: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/17.jpg)
18/136
�
�
�
�
�
�
File ordinari (2)
Bisogna stare attenti solo al fatto che:
• il primo carattere non sia un .
• il primo carattere non sia un -
• il nome non contenga il ; $
• il nome non contenga |, &
![Page 18: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/18.jpg)
19/136
�
�
�
�
�
�
File ordinari (3)
Si possono creare con:
• touch nomefile
• attraverso ridirezione dell’output
• con un editor (VI, Emacs)
Si riconoscono listando la directory con ls -ldrwxr-xr-x 42 andrea staff 1428 Nov 4 21:19 ex-Progetti-oratio
drwxr-xr-x 29 andrea staff 986 Nov 4 21:19 ex-home-oratio
-rw-r--r-- 1 root staff 150266148 Sep 26 18:10 ex-root-oratio.tgz
-rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 httpd.conf
![Page 19: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/19.jpg)
20/136
�
�
�
�
�
�
Directory
Hanno la stessa caratteristica dei file, ma il loronome finisce sempre con slash (/).
Ovviamente possono contenere file o directory
Si riconoscono listando la directory con ls -ldrwxr-xr-x 42 andrea staff 1428 Nov 4 21:19 ex-Progetti-oratio
drwxr-xr-x 29 andrea staff 986 Nov 4 21:19 ex-home-oratio
-rw-r--r-- 1 root staff 150266148 Sep 26 18:10 ex-root-oratio.tgz
-rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 httpd.conf
![Page 20: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/20.jpg)
21/136
�
�
�
�
�
�
File nascosti?
Tutti i file o le directory che iniziano con il puntonon sono visibili con il comando ls a meno di
non usare il parametro -a
[oratio:~] andrea% ls -ladrwxr-xr-x 42 andrea staff 1428 Nov 4 21:19 .
drwxr-xr-x 29 andrea staff 986 Nov 4 21:19 ..
-rw-r--r-- 1 root staff 150266148 Sep 26 18:10 .ex-root-oratio.tgz
-rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 .httpd.conf
-rw-r--r-- 1 andrea staff 37326 Oct 17 09:29 .bashrc
![Page 21: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/21.jpg)
22/136
�
�
�
�
�
�
File speciali - mount point
Non abbiamo degli identificatori standard comein DOS per i dispositivi di memorizzazione
Possiamo far corrispondere i dispositivi dimemorizzazione con delle directory
e.g.
Floppy disk 1 (A:) ⇒ /mnt/floppy
Partizione primaria del primo HD (C:) ⇒ /
Partizione secondaria del primo HD (D:) ⇒ /home
![Page 22: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/22.jpg)
23/136
�
�
�
�
�
�
File speciali - mount point (2)
Alcuni mount point sono previsti dal sistema:
• scritti nel file /etc/fstab
• verificabili attraverso il comando mount
Avendo opportuni privilegi se ne possono montare di propri
• dischetti ⇒ /dev/fdn
• partizioni ⇒ /dev/hdcn
• immagini ISO ⇒ /dev/loopn
![Page 23: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/23.jpg)
24/136
�
�
�
�
�
�
File speciali - altri
Altri tipi di file:
• socket
• pipe
• link
• devices
![Page 24: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/24.jpg)
25/136
�
�
�
�
�
�
Le directory importanti
Se ci si fa un giretto fuori dalla propria home siscopre un mondo vastissimo
Applications Encode automount resources
Applications (Mac OS 9) Encode.pm bin rr
Cartella Sistema Library cores sbin
Desktop Network dev sw
Desktop (Mac OS 9) Previous Systems etc temporaneo
Desktop DB System mach tmp
Desktop DF Temporary Items mach.sym usr
Desktop Folder TheVolumeSettingsFolder mach_kernel var
Developer Trash opt
Documenti Users private
Elimina al Riavvio Volumes res
![Page 25: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/25.jpg)
26/136
�
�
�
�
�
�
Le directory importanti
Lo standard POSIX prevede la presenza delleseguenti directory di sistema
boot bin dev
etc home lib
opt sbin usr
var tmp
usr/local var/log
![Page 26: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/26.jpg)
27/136
�
�
�
�
�
�
Il contenuto di etc
Contiene:• file di configurazione (rete, sicurezza, servizi)
• script e directory di runlevel
• file di password e gruppi
• file e directory di crontab
• file di default
![Page 27: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/27.jpg)
28/136
�
�
�
�
�
�
Il contenuto di bin
Contiene i comandi di base del sistema:
• cp, mv, ls, rm,. . .
• echo, cat, . . .
• kill, stat,. . .
• le shell
![Page 28: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/28.jpg)
29/136
�
�
�
�
�
�
Il contenuto di sbin
Contiene i comandi specifici di pseudo-amministrazione:
• utility per la rete (setup, probe)
• utility per i dischi
• utility per il logging
• utility per il boot
![Page 29: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/29.jpg)
30/136
�
�
�
�
�
�
Il contenuto di opt
Directory di nuova fattura:
• tende a sostituire usr/local
• ci vanno i programmi che nella loro folder hannouna gestione non conforme allo standard pereseguibili, configurazioni e manuali
• Java, . . .
![Page 30: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/30.jpg)
31/136
�
�
�
�
�
�
Il contenuto di usr
Directory storica di Unix, contiene:
• il sistema X11
• le utility evolute per la configurazione di:
– rete
– stampanti
– dischi
– librerie
– utenti
– sicurezza
![Page 31: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/31.jpg)
32/136
�
�
�
�
�
�
Il contenuto di usr/local
Directory repository per i programmi locali
All’inizio Unix fu pensato con filesystemdistribuito/remoto
Questa directory era il punto di montaggio deidispositivi locali alla macchina
Ha in se tutta la struttura di / (root)
![Page 32: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/32.jpg)
33/136
�
�
�
�
�
�
Il contenuto di dev
Directory dei dispositivi virtuali :
• dischi e partizioni
• porte seriali, parallele, ausiliari, . . .
• frame-buffer, video, ram, . . .
• terminali seriali e virtuali
• standard input, output e error
• zero, null e random
![Page 33: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/33.jpg)
34/136
�
�
�
�
�
�
Il contenuto di mnt
Directory che contiene i mount-point deidispositivi removibili:
• floppy
• cdrom
• secure digital & flash card
• partizioni DOS/Windows :-)
![Page 34: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/34.jpg)
35/136
�
�
�
�
�
�
non ci perdiamo... (pwd)
Il filesystem Unix e molto vasto, ma con pwd
possiamo sempre conoscere il path attuale
Comando:[Computer] andrea% pwd
/System/Library/StartupItems/Portmap/Resources
Attenzione ai link simbolici poiche vengono risolti !!
![Page 35: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/35.jpg)
36/136
�
�
�
�
�
�
...path della propria homedir
Viene deciso dall’amministratore durante lacreazione dell’utenza insieme con la shell di
default
root:*:0:0:System Administrator:/var/root:/bin/tcsh
Il default e /home/<nomeutente>
Si puo raggiungere attraverso cd, ~ o $HOME
![Page 36: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/36.jpg)
37/136
�
�
�
�
�
�
Il comando mkdir
Come in DOS server per creare una DIRECTORY
[Computer] andrea% mkdir Resources/Tezzuia
/System/Library/StartupItems/Portmap/Resources
Attenzione a guardar bene dove siamo!!
![Page 37: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/37.jpg)
38/136
�
�
�
�
�
�
Il comando rm -r
Server per cancellare ricorsivamente il contenutodi una DIRECTORY
Comando:[Computer] andrea% rm -r Portmap
/System/Library/StartupItems/Portmap/Resources
Attenzione al PATH, possiamo cancellare TUTTO!!
![Page 38: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/38.jpg)
39/136
�
�
�
�
�
�
Il comando ls -l
Server per listare la DIRECTORY mostrandi tuttigli attributi
Non visualizza i file . (punto)
Per visualizzare i file speciali ci mettiamo ilparametro -a
Comando:[Computer] andrea% ls -l Portmap
/System/Library/StartupItems/Portmap/Resources
![Page 39: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/39.jpg)
40/136
�
�
�
�
�
�
Il comando ls -l (2)
Server per listare la DIRECTORY mostrandi tuttigli attributi
total 1116-rw-r--r-- 1 andrea staff 33783 Nov 4 09:14 back.jpg-rw-r--r-- 1 andrea staff 36334 Nov 4 09:14 back2.jpg-rw-r--r-- 1 andrea staff 10933 Nov 4 09:14 bg.jpg-rw-r--r-- 1 andrea staff 42173 Nov 4 09:14 d12.jpg-rw-r--r-- 1 andrea staff 11161 Nov 4 10:49 img4.gif-rw-r--r-- 1 andrea staff 116144 Nov 4 10:54 img4.jpg-rw-r--r-- 1 andrea staff 5691 Nov 11 22:03 slide.out-rw-r--r-- 1 andrea staff 663403 Nov 11 22:03 slide.pdf-rw-r--r-- 1 andrea wheel 29397 Nov 11 22:05 slide.tex-rw-r--r-- 1 andrea wheel 29167 Nov 11 22:03 slide.tex~
![Page 40: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/40.jpg)
41/136
�
�
�
�
�
�
Il comando ln
Crea dei link ai fileDue tipi di link:
• hard link - (ogni file e un hard link)
• soft link - (puntatori, il kernel sostituisce ladestinazione)
Opzioni:-s : link simbolici
![Page 41: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/41.jpg)
42/136
�
�
�
�
�
�
Il comando touch
Cambia la data di accesso e modifica di un file[Computer] andrea% touch Tezzuia.file
[Computer] andrea% ls -l Tezzuia.file
-rw-r--r-- 1 andrea staff 0 Nov 11 22:22 Tezzuia.file
Riproviamo dopo 2 minuti !!
![Page 42: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/42.jpg)
43/136
�
�
�
�
�
�
Il comando chmod
Server per cambiare gli attributi di un file odirectory
0400 read by owner
0200 write by owner
0100 execute (or search for directories) by owner
0070 read, write, execute/search by group
0007 read, write, execute/search by others
r = read , w = write , x = execute
u = user , g = group , o = other , a = all
![Page 43: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/43.jpg)
44/136
�
�
�
�
�
�
Il comando chown
Server per cambiare i proprietari di un file odirectory
Comando:[Computer] andrea% chown [-R] <user>.<group> <file>
e.g.[Computer] andrea% chown -R nobody.nobody file
![Page 44: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/44.jpg)
45/136
�
�
�
�
�
�
Il comando cp -ra
Guardare il man!!
![Page 45: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/45.jpg)
46/136
�
�
�
�
�
�
Il comando mv
Guardare il man!!
![Page 46: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/46.jpg)
47/136
�
�
�
�
�
�
Il comando mount
Guardare il man!!
![Page 47: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/47.jpg)
48/136
�
�
�
�
�
�
Il comando wc
Riporta in standard output il numero di parole,byte, linee che compongono il file
Opzioni:-l : numero di linee
-c : numero di caratteri
-w : numero di parole
![Page 48: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/48.jpg)
49/136
�
�
�
�
�
�
Il comando file
Restituisce il tipo di fileIl nome dei file puo contenere qualsiasi carattere
(anche il punto), non esiste il concetto di esten-sione per identificare il tipo di file.Il comando file confronta il contenuto del file conun database (magic.mime) e restituisce il tipo didati contenuti nel file.
![Page 49: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/49.jpg)
50/136
�
�
�
�
�
�
Il comando find
Serve per ricercare un file all’interno delfilesystem
Realizza la ricerca discendendo ricorsivamente ledirectory a partire da quella indicata come
parametro.
Individua in questa passeggiata i file chesoddisfano l’espressione immessa come parametro
L’espressione e formata da PRIMARIES edOPERANDI
![Page 50: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/50.jpg)
51/136
�
�
�
�
�
�
Il comando find (2)
PRIMARIES importanti:
• -delete : cancella tutti i file trovati
• -empty : ci dice se il file attuale vuoto
• -iname <pattern> : pattern non case-sensitive
• -links <n> : ritorna i file che hanno n links
• -ls : riporta l’output in formato del comando ls -l
• -nogroup : riporta i file che non appartengono a gruppi conosciuti
• -nouser : riporta i file che non appartengono a utenti conosciuti
• -perm <nnnn> : riporta i file che hanno il bit dei permessi <nnnn>
![Page 51: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/51.jpg)
52/136
�
�
�
�
�
�
Il comando cat
Non serve solo a visualizzare, ma anche aconcatenare i file
e.g.
bash-2.05a$ cat ilfile sefile > dufile
Contatena il contenuto di ilfile e di sefile e scrive il risultato in dufile
e.g.2
bash-2.05a$ cat ilfile sefile >> dufile
Contatena il contenuto di ilfile e di sefile e appende il risultato alla fine di dufile
![Page 52: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/52.jpg)
53/136
�
�
�
�
�
�
Il comando cat (2)
Le opzioni piu interessanti sono:
• -n: numera le linee
• -b: non numera le linee vuote
• -s: toglie le linee vuote consecutive
• -v: visualizza i caratteri non stampabili
• -t: visualizza i caratteri TAB come CTRL-I
![Page 53: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/53.jpg)
54/136
�
�
�
�
�
�
Comandi more e less
Vengono utilizzati quando l’output superal’ampiezza della zona di visualizzazione
Possono essere utilizzati in pipe all’output...
bash-2.05a$ cat ilfile dufile | less
... o con parametro il nome di un file
bash-2.05a$ more ilfile
![Page 54: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/54.jpg)
55/136
�
�
�
�
�
�
Comandi head e tail
Vengono utilizzati per selezionare parti del file
head visualizza le prime 10 righe del file(parametro) o dell’output (pipe)
tail visualizza le ultime 10 righe del file(parametro) o dell’output (pipe)
![Page 55: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/55.jpg)
56/136
�
�
�
�
�
�
Comandi head e tail (2)
Opzioni di head:
• -n: decide il numero di linee da visualizzare
![Page 56: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/56.jpg)
57/136
�
�
�
�
�
�
Comandi head e tail (3)
Opzioni importanti di tail:
• -f: non esce dalla visualizzazione aspettandoulteriori linee
• -n: visualizza le ultime n righe
• -n +: visualizza a partire dall’n-esiama riga
• -b: visualizza gli ultimi n blocchi da 512 bytes
• -c: visualizza gli ultimi n bytes
• -r: utilizza l’ordine inverso di visualizzazione
![Page 57: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/57.jpg)
58/136
�
�
�
�
�
�
Il multitasking - time sharing
Metodo di ripartizione del tempo di elaborazionein cui un componente detto scheduler si occupadi attivare i processi in base alla priorita delle
code di attesa in cui essi sono inseriti
Si differenzia dal multitasking cooperativo per ilfatto che non sono i processi ad avere il controllosul tempo di esecuzione a loro disposizione, maesiste un controllore centralizzato per tutto il
sistema
![Page 58: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/58.jpg)
59/136
�
�
�
�
�
�
Concetto di processo
Un’entita di elaborazione unitaria, generato daun programma (eventualmente compilato),
ovvero da un metodo simbolico con cui vengonoespressi gli algoritmi che un processore deve
eseguire per elaborare dei risultati a partire daalcuni dati iniziali.
In Unix ogni processo e di proprieta di un singolo utente (colui che lo
ha lanciato), ha una priorita, una sua area di memoria assegnata e puo
eventualmente scambiare messaggi e dati con altri processi
![Page 59: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/59.jpg)
60/136
�
�
�
�
�
�
Concetto di thread
Unita logica di elaborazione all’interno di unprocesso (e.g. stampa, calcolo, accesso alla rete,
etc..)
Ogni thread condivide con gli altri (dello stessoprocesso) l’area di memoria assegnata e non equindi necessario avviare procedure di scambiomessaggi con memoria condivisa fra processi
Viene evitato il contest switching
![Page 60: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/60.jpg)
61/136
�
�
�
�
�
�
Processi di sistema
Esistono particolari tipi di processi che sonoattivati dal sistema all’avvio e vivono per tutto il
tempo in cui e attivo il sistema detti demoni
Gestiscono:
• servizi di rete
• azioni automatizzate e temporizzate
• controlli sullo stato del sistema
• accessi locali
![Page 61: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/61.jpg)
62/136
�
�
�
�
�
�
Processi utente
Fanno parte di questa classe tutti i processi chederivano dall’invocazione di comandi dalla shell e
tutti quelli attivati da particolari condizioni(cron e post-login/pre-logout)
Ogni utente puo:
• sospendere
• uccidere :-(
• osservare
• riavviare
![Page 62: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/62.jpg)
63/136
�
�
�
�
�
�
Il comando ps
Un processo e identificato dal suo nome e dalsuo Process-ID (PID)
Attraverso il comando ps e possibile visualizzarelo stato dei processi
Opzioni:
• -a: mostra tutti i processi
• -c: mostra solo il comando e non il path
• -u: mostra informazioni sull’utente proprietario del processo
• -x: non mostra le informazioni sulle linee di terminale
![Page 63: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/63.jpg)
64/136
�
�
�
�
�
�
Il comando top
Mostra le statistiche sull’uso del sistema
Nelle statistiche e previsto lo stato di ognisingolo processo
I processi sono ordinati per quantita di tempo diCPU occupato
Schiacciando la M il sistema ordina lavisualizzazione per quantita di memoria occupata
![Page 64: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/64.jpg)
65/136
�
�
�
�
�
�
I segnali
E possibile inviare dei segnali ad un processoAttraverso la tastiera:
• CTRL-C : KILL
• CTRL-Z : STOP
Attraverso il comando kill:
• -9 o -KILL
• -2 o -INT
• -1 o -HUP
![Page 65: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/65.jpg)
66/136
�
�
�
�
�
�
Foreground & Background
Sono le due modalita di esecuzione in cui si puotrovare un processo
I processi che sono interattivi non possono esseremandati in bg
E possibile cambiare la modalita di esecuzionecon il comando bg dopo aver inviato un segnale
di sospensione ad un processo (CTRL-Z) eritornare alla modalita interattiva attraverso fg
![Page 66: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/66.jpg)
67/136
�
�
�
�
�
�
Il comando jobs
Il comando permette di visualizzare quali siano iprocessi in esecuzione bg o sospesi
![Page 67: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/67.jpg)
68/136
�
�
�
�
�
�
Il comando fg
![Page 68: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/68.jpg)
69/136
�
�
�
�
�
�
Il comando bg
![Page 69: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/69.jpg)
70/136
�
�
�
�
�
�
Il comando &
![Page 70: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/70.jpg)
71/136
�
�
�
�
�
�
Il comando kill
Invia un segnale ad un processo attraverso il suoPID
Prima ricerco il PID del processo a cui voglioinviare il segnale (ps), poi:
kill -9 <PID>
![Page 71: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/71.jpg)
72/136
�
�
�
�
�
�
Il comando killall
Invia un segnale ai processi attraverso il loroNOME
Nel nome del processo non va incluso il PATH:killall -9 <Process-NAME>
![Page 72: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/72.jpg)
73/136
�
�
�
�
�
�
Il filesystem /proc
Tutto e un file, quindi anche l’ambiente e le op-zioni dei processi devono poter essere acceduti co-me fileIl filesistem speciale /proc contiene una directoryper ogni processo (identificata dal PID): in ognidirectory:
• cmdline
• cwd
• environ
![Page 73: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/73.jpg)
74/136
�
�
�
�
�
�
Il filesystem /proc (2)
• exe
• fd/
•maps
•mem
•mounts
• root
• stat e statm
• status
![Page 74: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/74.jpg)
75/136
�
�
�
�
�
�
Il filesystem /proc (3)
In Linux il filesystem proc contiene anche alcunifile ed alcune directory speciali che permettono dicontrollare a run-time il funzionamento del kernel.Per esempio:
• /proc/cpuinfo
• /proc/sys/net/ipv4/ip forward
• /proc/sys/net/kernel/modprobe
Le opzioni possono anche essere manipolate consysctl
![Page 75: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/75.jpg)
76/136
�
�
�
�
�
�
Moduli
Anche nei kernel monolitici come quello di Unixe di Linux alcuni componenti possono essere inse-riti e rimossi durante il funzionamento.In questo modo e possibile risparmiare memoriadedicata al kernel senza doverlo ricompilare al sor-gere di una nuova esigenza.Per motivi legati alla gestione di memoria, pero,l’uso di moduli riduce leggeremente le prestazionidel sistema.
![Page 76: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/76.jpg)
77/136
�
�
�
�
�
�
Moduli (2)
Alcuni comandi per gestire i moduli
• insmod
•modprobe
• rmmod
•modinfo
Nei kernel recenti e stata aggiunta la possibilita digestire automaticamente i moduli attraverso il file/etc/modules.conf oppure l’utility hotplug.
![Page 77: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/77.jpg)
78/136
�
�
�
�
�
�
La Shell
• assomiglia al prompt del DOS :-)
• stabilisce un’interfaccia fra Utente e S.O.
– interpreta i comandi immessi da tastiera
– restituisce il valore di ritorno delle applicazio-ni
• fornisce un linguaggio di programmazione
![Page 78: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/78.jpg)
79/136
�
�
�
�
�
�
Diverse esigenze ⇒ diverse shell
• Bourne Shell (Steve Bourne - MIT)
• Korne Shell (David Korne - Bell Labs)
• C-Shell (sea-shell)
• a-Shell (ascetic shell)
• tcshell
(C-shell free)
• Zshell
(Korne shell free)
![Page 79: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/79.jpg)
80/136
�
�
�
�
�
�
Regole di base
• Qualsiasi SHELL di Unix e in grado di distinguere le maiuscole dalle minuscole
• I comandi si terminano con un ENTER
• I comandi possono essere piu lunghi di una riga
• I parametri dei comandi in Unix sono preceduti dal meno (-)
• I nomi delle variabili d’ambiente sono MAIUSCOLI
• Per ottenere il valore delle variabili d’ambiente si usa il prefisso $
• Negli script di shell se si vuole proseguire oltre una riga il comando
e buona norma mettere un backslash alla fine di ogni riga (\)
![Page 80: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/80.jpg)
81/136
�
�
�
�
�
�
Comandi
Comando DOS Comando UnixATTRIB (set) chmodATTRIB (get) ls -lDIR lsCOPY cpMOVE mvXCOPY cp -rMORE less | moreCHKDSK (stat) df
![Page 81: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/81.jpg)
83/136
�
�
�
�
�
�
Comandi (2)
DELTREE rm -rDEL rmFIND grepSORT sortDATE (get) dateDATE (set) date -sTIME (get) dateTIME (set) date -sCLS clear | resetTYPE catVER uname -a
![Page 82: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/82.jpg)
84/136
�
�
�
�
�
�
Comandi (3)
MD mkdirCD (set) cdCD (get) pwdRD rm -ryComandi di Help man & apropos
![Page 83: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/83.jpg)
85/136
�
�
�
�
�
�
grep
Il comando grep stampa le linee che soddisfano il pattern
Comando:grep chino
inserire delle parole e vedere se si riesce a farle stamparedare CTRL-C per terminare
![Page 84: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/84.jpg)
86/136
�
�
�
�
�
�
grep (2)
Opzioni importanti:
• -i: non fa differenza fra maiuscole e minuscole
• -r: ricerca ricorsivamente in [sotto]directory
• -l: da solo il nome dell’entita in cui si e trovato il pattern
• -v: inverte il match (NOT pattern)
• -c: conta le linee che corrispondono il pattern
![Page 85: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/85.jpg)
87/136
�
�
�
�
�
�
Esempio: seleziono le directory
Voglio selezionare tutti i file che hanno nel loro nome il carattere “/”
metto in pipe (concateno)l’output di ls
conl’input di grep
Comando:
bash-2.05a$ ls -F | grep /
![Page 86: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/86.jpg)
88/136
�
�
�
�
�
�
Input e output
Unix ha a disposizione 4 operatori standard:
• | (pipe o concatenamento)
•> (output verso file)
•< (input da file)
•>> (output in aggiunta ad un file)
![Page 87: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/87.jpg)
89/136
�
�
�
�
�
�
Esempio - Redirezione verso un file
Alla fine dell’esercizio dobbiamo avere la lista delle subdirectory in un
file
Comando:
bash-2.05a$ ls -F | grep / > ilfile
Come possiamo sapere se il file contiene quelloche volevamo?
Nel frattempo mettiamo in un altro file tutto quel-lo che sta nella home tranne le sottodirectory
![Page 88: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/88.jpg)
90/136
�
�
�
�
�
�
Soluzione
Utilizziamo il comando cat per visualizzare ilfile
Comando:
bash-2.05a$ cat ilfile
Utilizziamo il parametro -v di grep per invertire la selezione
Comando:
bash-2.05a$ ls -F | grep -v / > sefile
![Page 89: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/89.jpg)
91/136
�
�
�
�
�
�
Prompt della shell
Quando una shell attende ed esegue i comandiin maniera interattiva.La disponibilita a ricevere comandi viene eviden-ziata da un messaggio di invito o prompt.Prompt composto da simboli e informazioni utiliall’utente per tenere d’occhio il contesto in cui staoperando.
![Page 90: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/90.jpg)
92/136
�
�
�
�
�
�
Esempio prompt
[luigi@lg600 luigi]$ pwd/home/luigi[luigi@lg600 luigi]$ cd /tmp[luigi@lg600 /tmp]$ echo $PS1[\u@\h \W]\$[luigi@lg600 /tmp]$ whoamiluigi[luigi@lg600 /tmp]$ hostnamelg600.gangitano.it[luigi@lg600 /tmp]$ pwd/tmp
![Page 91: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/91.jpg)
93/136
�
�
�
�
�
�
Storico dei comandi
Bash mantiene uno storico dei comandi utilizzatidall’utente.Lo storico NON si interrompe alla fine di una ses-sione o con un reboot (e su file).Freccette (su,giu) per sfogliarloCTRL-R+[qualche carattere] per cercare all’inter-no dello storicoCTRL-R cerca ancora
![Page 92: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/92.jpg)
94/136
�
�
�
�
�
�
Altri tasti utili
Andare all’inizio della riga - CTRL-AAndare alla fine della riga - CTRL-E
CANC - CTRL-D(spesso CANC e mappato male)
![Page 93: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/93.jpg)
95/136
�
�
�
�
�
�
Alias
Bash permette la definizione di nuovi comandi informa di alias di altri comandi (o serie di comandi).
alias - elenca gli alias esistentialias nome=”comando con tutti i parametri”
alias dir=ls –color
![Page 94: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/94.jpg)
96/136
�
�
�
�
�
�
Serie di comandi
E possibile dare piu comandi da eseguire in serieseparando gli elementi della lista con dei ;Esempio
$ mv pippo.ps pluto.ps;mv pluto.ps pippo.ps
Equivale a:
$ mv pippo.ps pluto.ps
$ mv pluto.ps pippo.ps
![Page 95: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/95.jpg)
97/136
�
�
�
�
�
�
Ambiente
Ogni programma in funzione nel sistema ha unproprio ambiente definito in base a delle varia-bili di ambiente.
![Page 96: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/96.jpg)
98/136
�
�
�
�
�
�
Variabili d’Ambiente
Le variabili d’ambiente sono un mezzo ele-mentare e pratico di configurazione del sistema: iprogrammi, a seconda dei loro compiti e del lo-ro contesto, leggono alcune variabili, e in base alcontenuto si comportano.
Esempio:la variabile PATH
![Page 97: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/97.jpg)
99/136
�
�
�
�
�
�
PATH
La variabile PATH indica tutte le directory dovela shell deve andare a guardare per trovare dei fileeseguibili (i programmi per capirci)E una variabile a tuti gli effetti:$ echo $PATH/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/usr/games:/home/luigi/bin:/usr/sbin:/usr/X11R6/bin:/usr/games
![Page 98: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/98.jpg)
100/136
�
�
�
�
�
�
PATH e la directory corrente
La directory corrente normalmente NON vieneinclusa nella variabile PATHNon e molto sicuro, e non dovrebbe mai essere“prima” di quelle canoniche.Si puo aggiungere in fondo a PATH, o ovviare cosı:
./nome_file_eseguibile
![Page 99: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/99.jpg)
101/136
�
�
�
�
�
�
Ambiente (2)
L’ambiente consegnato a ogni programma cheviene messo in esecuzione, controllato dalla shellche puo assegnare ambienti diversi a programmidiversi.La shell pu creare, modificare e leggere questevariabili,e utile per la realizzare file script.
![Page 100: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/100.jpg)
102/136
�
�
�
�
�
�
Gestione Variabili in BASH
Variabili di shellUna variabile definita quando contiene un valore,anche se vuoto.L’assegnamento di un valore si ottiene con unadichiarazione del tipo:nome_di_variabile=[valore]
Esempio:[luigi@lg600 luigi]$ pluto=cane_di_topolino[luigi@lg600 luigi]$ echo $plutocane_di_topolino
![Page 101: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/101.jpg)
103/136
�
�
�
�
�
�
Esportazione Variabili
Le variabili di shell hanno validit limitata all’am-bito della shell stessa.I comandi interni alla shell stessa sono al correntedi queste variazioni mentre i programmi che ven-gono avviati non ne risentono.Per i programmi esterni le variabili devono es-sere esportate. L’esportazione delle variabili siottiene con il comando interno export.
![Page 102: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/102.jpg)
104/136
�
�
�
�
�
�
Esportazione Variabili (2)
Esempi$ PIPPO="ciao"$ export PIPPO
Crea la variabile PIPPO e quindi la esporta.$ export PIPPO="ciao"
In un colpo solo.
![Page 103: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/103.jpg)
105/136
�
�
�
�
�
�
Espansione/Sostituzione
Come gia si intuiva da alcuni comandi che ab-biamo visto la shell, prima di lanciare i programmie/o comandi fa delle modifiche alla stringa che noigli passiamo, meccanismo noto come espansione
![Page 104: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/104.jpg)
106/136
�
�
�
�
�
�
Passi dell’espansione
1. parentesi graffe;
2. tilde ;
3. parametri e variabili;
4. comandi;
5. aritmetica (da sinistra a destra);
6. suddivisione delle parole;
7. percorso o pathname.
![Page 105: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/105.jpg)
107/136
�
�
�
�
�
�
Espansione della tilde
Se una parola inizia con il simbolo tilde ( ) in-terpreta quello che segue, fino alla prima barraobliqua (/), come un nome-utente.E sostituisce questa prima parte con il nome delladirectory personale dell’utente stesso.˜ da sola sottointende l’utente attualeEsempi
$ cd ~
$ cd ~tizio/public_html
![Page 106: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/106.jpg)
108/136
�
�
�
�
�
�
Espansione di parametri e variabili
Gia vistosostituzione del parametro o della variabile con ilsuo contenuto.Esempio
[luigi@lg600 luigi]$ pippo=PIPPO
[luigi@lg600 luigi]$ echo $pippo
PIPPO
![Page 107: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/107.jpg)
109/136
�
�
�
�
�
�
Sostituzione comandi
La sostituzione dei comandi consente di utiliz-zare quanto emesso attraverso lo standard outputda un comando. Ci sono due forme possibili:
$(comando)
‘comando‘
Apici “al contrario” altgr+apicePer ora Standard Output = testo riportato comerisultato dal comando
![Page 108: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/108.jpg)
110/136
�
�
�
�
�
�
Espansione di percorso
I simboli *, ? e [ vengono intepretati ed espansiin serie di stringhe (che indicano percorsi)Vediamo solo il piu importante: *Corrisponde ad una qualsiasi stringaquindi se siamo in una directory con questi file:
paperino paperone paperoga minnie topolino
rm -f pape* -> rm -f paperino paperone paperoga
![Page 109: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/109.jpg)
111/136
�
�
�
�
�
�
Caratteri di protezione
A volte magari abbiamo bisogno di scrivere ef-fettivamente caratteri come:
$ * { [ ... }
Esistono 3 modalita:
1. Escape
2. Apici singoli
3. Apici doppi
![Page 110: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/110.jpg)
112/136
�
�
�
�
�
�
Escape
La barra obliqua inversa (\) rappresenta il ca-rattere di escape. Serve per preservare il signifi-cato letterale del carattere successivo, cioe evitareche venga interpretato diversamente da quello cheveramente. Esempiols -l \$fff
3B cerca di leggere il file che si chiama proprio$fff
![Page 111: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/111.jpg)
113/136
�
�
�
�
�
�
Escape (2)
Usato da solo (quindi con uno spazio dopo) serveper continuare una linea (nonostante si vada acapo) Esempio$ ls -l \supercalifragilischespiralidoso
viene interpretato come un unico comando suuna linea
![Page 112: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/112.jpg)
114/136
�
�
�
�
�
�
Apici Singoli
Racchiudendo dei caratteri tra apici semplici (’)si mantiene il valore letterale di questi caratteri.Un apice singolo non pu essere contenuto in unastringa del genere. Esempio
$ echo ’$0 $1 \ ... restano "inalterati".’
$0 $1 \ ... restano "inalterati".
![Page 113: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/113.jpg)
115/136
�
�
�
�
�
�
Apici Doppi
Racchiudendo una serie di caratteri tra una cop-pia di apici doppi si mantiene il valore letterale diquesti caratteri, a eccezione di $,‘ e \. Esempio
$ echo "Il parametro \$0 contiene: \"$0\""
Il parametro $0 contiene: "-bash"
![Page 114: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/114.jpg)
116/136
�
�
�
�
�
�
Espressioni regolari
A (modern) RE is one or more non-empty branches, separated by ‘ | ’.
It matches anything that matches one of the branches.
A branch is one or more pieces, concatenated. It matches a match for
the first, followed by a match for the second, etc.
A piece is an atom possibly followed by a single ‘*’, ‘+’, ‘?’, or bound.
An atom followed by ‘*’ matches a sequence of 0 or more matches of
the atom. An atom followed by ‘+’ matches a sequence of 1 or more
matches of the atom. An atom followed by ‘?’ matches a sequence of
0 or 1 matches of the atom.
![Page 115: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/115.jpg)
117/136
�
�
�
�
�
�
Espressioni regolari (2)
A bound is ‘ {’ followed by an unsigned decimal integer, possibly
followed by ‘,’ possibly followed by another unsigned decimal integer,
always fol- lowed by ‘ }’. The integers must lie between 0 and
RE DUP MAX (255) inclusive, and if there are two of them, the first
may not exceed the second. An atom followed by a bound containing
one integer i and no comma matches a sequence of exactly i matches
of the atom. An atom fol- lowed by a bound containing one integer i
and a comma matches a sequence o i or more matches of the atom.
An atom followed by a bound containing two integers i and j matches
a sequence of i through j (inclusive) matches of the atom.
![Page 116: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/116.jpg)
118/136
�
�
�
�
�
�
Espressioni regolari di Bash
* ⇒ Corrisponde ad ogni stringa, NULL STRING inclusa.
? ⇒ Corrisponde ad ogni singolo carattere.
[...] ⇒ Corrisponde con uno dei caratteri racchiusi fra parentesi.
Una coppia di caratteri separati da una tilde denota un intervallo
Apice e punto esclamativo invertono la selezione, se messi come primo
carattere dopo [
i caratteri ] e − possono essere ricercati mettendoli al primo posto
dopo la [
![Page 117: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/117.jpg)
119/136
�
�
�
�
�
�
Le classi POSIX
esistono anche delle classi POSIX(alnum,alpha,digit,space,upper,lower)
che possono venir utilizzate con la sintassi[[:classe:]]
Spiegazione:
• alnum : caratteri alfanumerici
• alpha : solo i caratteri alfabetici
• digit : solo le cifre
• space : i caratteri di spazio e TAB
• upper : i caratteri MAIUSCOLI
![Page 118: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/118.jpg)
120/136
�
�
�
�
�
�
Le opzioni nelle espressioni regolari
Per scegliere fra diversi token opzionali si usanole parentesi tonde per delimitare l’insieme e il
segno di pipe | per separare le opzioni
e.g.ls -Fa | egrep ’(a|b)’
![Page 119: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/119.jpg)
121/136
�
�
�
�
�
�
Le ripetizioni nelle espressioni regolari
Per identificare token di lunghezza predefinita(fino a 255 ripetizioni) o intervalli di ripetizione(da n a m volte) si utilizzano le parentesi graffe
con un numero, con dei numeri separati davirgole o con due numeri separati dal meno
e.g.ls | egrep ’s{3}l+g{3}’
![Page 120: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/120.jpg)
122/136
�
�
�
�
�
�
Comandi - sed
Comando utile ma molto complesso, ne vediamosolo un uso: sostituzione di stringheRiga per riga di un file (o dello standard output)sostituisce una stringa con un altra.Esempioabbiamo il file prova.html e vogliamo cambiarealcuni link senza editare il file:$ cat prova.html| \
sed ’s/<a href="immagini/<a href="images/’ > \prova-modificato.html
![Page 121: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/121.jpg)
123/136
�
�
�
�
�
�
Un editor universale: vi
Per poter creare degli script e necessario avereun editor di testo. Linux dispone di molti editor,ciascuno con le sue peculiarita, ma uno solo lotroverete in tutti i sistemi Unix, e molto spesso el’unico che avrete a disposizione.
Benvenuti nel magico mondo di vi.
![Page 122: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/122.jpg)
124/136
�
�
�
�
�
�
Esecuzione
Il comando base per accedere a vi e, ovviamente,vi, ma nelle distribuzioni piu recenti e presente unaversione enhanced, con molte funzionalita in piu,che prende il nome di vim (Vi IMproved).
![Page 123: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/123.jpg)
125/136
�
�
�
�
�
�
Descrizione dell’ambiente
Eseguendo il comando vi vi troverete davanti al-l’ambiente di editing, che appare inizialmente piut-tosto scarno. L’area di lavoro e completamentededicata al testo da elaborare, ad esclusione del-l’ultima riga in basso che mantiene, di volta involta, indicazioni sullo stato in cui si trova l’editor.
![Page 124: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/124.jpg)
126/136
�
�
�
�
�
�
Ambienti
vi infatti e stato progettato in modo da distin-guere anche concettualmente l’immissione del te-sto dall’interpretazione di comandi che operanosul testo inserito.In qualsiasi momento, per poter inserire un co-mando e sufficiente tornare alla modalita comandipremendo il tasto Esc.Inoltre il tasto Esc consente di annullare un co-mando non completato. Premerlo piu volte diseguito non ha effetti collaterali.
![Page 125: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/125.jpg)
127/136
�
�
�
�
�
�
Apertura di un file
L’esecuzione del comando vi senza argomenti,crea un nuovo buffer vuoto.Se invece vogliamo editare un file esistente possia-mo invocare vi seguito dal nome del file che vogliaeditare.
vi nomefile
In alternativa, una volta avviato vi, e possibileaprire un file con il comando :e:e nomefile
![Page 126: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/126.jpg)
128/136
�
�
�
�
�
�
Inserimento del testo
Premendo il tasto i oppure Ins si passa alla mo-dalita di inserimento del testo, in cui e possibiledigitare del testo normalmente.Solitamante questa modalita e identificata dallapresenza della stringa – INSERT – nella barra distato.
![Page 127: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/127.jpg)
129/136
�
�
�
�
�
�
Inserimento del testo (2)
Testo inserito dopo aver premuti il tasto [i]~~~~-- INSERT --
E da notare che il carattare (tilde) identifica lelinee vuote.
![Page 128: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/128.jpg)
130/136
�
�
�
�
�
�
Modifica del testo
La pressione del tasto r attiva la modalita mo-difica del testo in cui il testo inserito sovrascrive iltesto esistente.L’attivazione di tale modalita e identificata dallapresenza della stringa – REPLACE – nella barra distato.Lo stesso risultato si ottiene premendo due volteil tasto Ins.
![Page 129: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/129.jpg)
131/136
�
�
�
�
�
�
Cancellazione del testo
Per cancellare del testo e possibile utilizzare ilcomando x che cancella il carattere identificatodal cursore, oppure il comando dd preceduto daun numero n il quale, appunto, cancella n righe apartire da quella occupata dal cursore.Testo inserito nelle slide precedenticontinua sulla seconda rigae sulla terza~
L’esecuzione del comando 2 dd quando il curso-re si trova sulla prima riga cancellera le prime duerighe e lascera la terza.
![Page 130: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/130.jpg)
132/136
�
�
�
�
�
�
Copia ed incolla
Il comando yy, eventualmente preceduto da un numero, copia in un
buffer n righe a partire da quella in cui si trova il cursore.
La funzione “Taglia” in realta l’abbiamo gia vista, dato che viene svolta
dal comando dd che non si limita a cancellare una riga ma la copia in
un buffer.
Per incollare si usano i comandi p oppure P. Il primo incolla a par-
tire dalla riga seguente a quella in cui si trova il cursore, il secondo a
partire da quella in cui si trova il cursore.
![Page 131: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/131.jpg)
133/136
�
�
�
�
�
�
Ricerche nel testo
Per cercare una stringa all’interno di un file ditesto si usa il comando /. Tra l’altro questo co-mando svolge la stessa funzione in molte situazioni(all’interno di man, less, more, ecc.).Dopo la pressione del tasto / e possibile digitarela stringa da cercare che apparira nella barra distato.Per ripetere l’ultima ricerca effettuata si usa iltasto n.
![Page 132: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/132.jpg)
134/136
�
�
�
�
�
�
Salvataggio e chiusura
Per salvare il testo editato, si usa il comando :w,mentre per uscire dal programma si usa il comando:q.I due comandi possono esseri combinati (:wq) persalvare ed uscire nello stesso momento.Inoltre e’ possibile forzare l’uscita senza salvare(con conseguente perdita delle modifiche), con ilcomando :q!.
![Page 133: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/133.jpg)
135/136
�
�
�
�
�
�
Riepilogo (1)
• vi nomefile, apre il file in vi
• Esc torna alla modalita comandi
• :e (edit) apre un file
• i o Ins inserisce del testo
• r o due volte Ins sovrascrive il testo
• [n] dd taglia n righe
• [n] yy copia n righe
• p incolla dopo la riga corrente
• P incolla a partire dalla riga corrente
![Page 134: Lug Roma3 Corso Linux Base](https://reader034.fdocument.pub/reader034/viewer/2022042518/557bf22fd8b42aab048b51f1/html5/thumbnails/134.jpg)
136/136
�
�
�
�
�
�
Riepilogo (2)
• / cerca all’interno del testo
• n ripete l’ultima ricerca
• :w salva
• :q chiude
• :q! chiude senza salvare