File - VivoScuola

Transcript

File - VivoScuola
StarShell
Linux
Architettura ed Uso
StarShell
Indice
Collegarsi a Linux
Architettura di Linux
Il Filesystem
I Files
Permessi sui files
Utenti e Gruppi
Manualistica
Il Sistema Grafico X
Utilities Avanzate
Editors di Linux
3
21
45
73
83
92
102
107
144
151
2
StarShell
Collegarsi a Linux
3
StarShell
Storia di Unix
1969
Unix
Research
AT&T Bell Labs.
1980
1981
Berkeley
Standard
Distribution
Unix
System V
AT&T
circa 1994
FreeBSD
OpenBSD
Irix
Tru64
Linux
Aix
HP-UX
Solaris
4
StarShell
Distribuzioni di Linux
– Necessità di integrazione di sistema
– Supporto fisico e metodo di installazione
– Amministrazione e supporto
Red Hat
SuSE – Novell
Slackware
Debian
Ubuntu
5
StarShell
Unix: Diagramma a Cipolla
Gli applicativi colloquiano
col Kernel tramite
Chiamate di Sistema
L!essere umano
è all!esterno del
diagramma
E! una API in
linguaggio C
Applicativi
L!umano interagisce
con gli applicativi
Kernel
System
Calls
Il Kernel fornisce
i servizi comuni
del sistema
operativo
Hardware
Shell
L!umano interagisce
con un!interfaccia a
caratteri (Shell) o
grafica (GUI) per lanciare
gli applicativi
StarShell
Device
Drivers
Interfacce Grafiche
(GUI)
Il Kernel comunica
col l!Hardware
tramite i Device
Drivers
Gli applicativi non possono
interagire direttamente
con l!Harware
6
Interazione con UNIX
Applicativi
Command
Line CLI
Interface
Shell
sh
csh
ksh
bash
Kernel
HW
device
drivers
system
calls
Graphical
User GUI
Interface
Desktop
Environment
Common Desktop
Environment (CDE)
KDE
Gnome
Java Desktop
System (JDS)
7
StarShell
Collegamento a Unix
Benvenuto
(issue)
Nome utente
Password
non
visualizzata
Welcome to master.starshell.sh
Login: user
Password: xf57ht
Sistema di sviluppo.
[master:user]$
Command Line Interface (CLI)
collegamento a caratteri
“console”
Graphical User Interface (GUI)
collegamento grafico
“desktop”
• login tramite Display Manager
• CLI su GUI tramite finestra “terminale”
Message of the Day (MOTD)
“Pronto”
$ utente generico
# amministratore
(superuser, “root”)
Uscita dalla sessione di lavoro
CLI comando exit o logout
GUI apposito bottone o voce menù
8
StarShell
Linux – Qualche comando
•
•
•
•
•
•
•
•
•
•
id – identità personale
who – chi è collegato
whoami – chi sono io tra i collegati
tty – nome del mio terminale
hostname – nome della mia macchina
date – data ed ora corrente
pwd – directory corrente
ls – lista directory corrente
ls -l – lista lunga
man ls – (q: uscire, spazio: avanti, b: indietro)
9
StarShell
Cambiamento password
passwd
• Comando di cambiamento password. Richiede
– vecchia password
• richiesta per verificare l'utente
– nuova password
• richiesta 2 volte
• non visualizza niente durante la digitazione
• Complicatezza minima
– almeno 6 caratteri, di cui almeno 1 non alphanum
– non simile a login o parole dizionario
– determinata da PAM (Pluggable Authentication Modules)
policies di sicurezza
10
StarShell
Interruzione comandi
sleep 5
– attende 5 secondi prima di ridare il pronto
sleep 10000
^C (control-C)
– interrompe il comando corrente
stty -a
stty intr “^A”
sleep 20000
^A (control-A)
– Solo in questa sessione di terminale
.bash_profile == autoexec.bat
11
StarShell
Utilizzo di UNIX
Console
Non necessita di
interfacce grafiche
LAN
W
A
N
Workstations
di Rete
Supporta interfacce grafiche
distribuite in rete
X Window System
UNIX Box
Non necessita di
amministrazione
continua
Non necessita
di frequenti
reboot
Terminali Seriali
Particolarmente adatto
alla connettività di rete
Utilizzi principali:
•Application Server
•Database Server
•Communication Server
12
StarShell
Parametri di Connessione stty
Param. Tasti
Effetto
intr ^C terminazione semplice
stop^\ terminazione con
core dump
susp
^Z sospensione
Situazione Classica
collegamento seriale
asincrono
Unix Box
UNIX
Parametri di connessione:
velocità
parità
bit di start e stop
Box controllo di flusso
Disciplina di linea:
carattere di cancellazione
carattere di abort
carattere di kill
....
Terminale
Obsoleti per
connessione di rete
Ancora validi
13
StarShell
Comandi, argomenti e opzioni
tar -cvf arch1.tar *.c *.h makefile
comando
opzioni
argomenti
argomento
dell'opzione f
– Il comando è il primo elemento
– Le opzioni sono precedute dal trattino
• -a -b -c = -abc = -bc -a
– Convenzione (non sempre osservata)
• -bar = -b -a -r sono tre opzioni
• --bar è una singola opzione
– Ogni comando ha opzioni diverse
14
StarShell
La Shell
Interprete di comandi per sessioni CLI
• interattivo - esecuzione immediata
• linguaggio di programmazione di “script” (procedure shell)
- esecuzione immediata o differita
Shell Anno
Bourne 1971
C-Shell 1981
Korn
1986
Bash 1994
Comando Commenti
sh primitiva, supportata
su ogni Unix
csh da Berkeley
ksh AT&T, copyright
bash
da Linux
“migliore” per la programmazione
Programmazione
sh
csh <> sh
ksh >= sh
bash >=sh
bash <> ksh
“migliore” per l’interattività
alias
storia comandi
modifica comandi precedenti
completamento comandi e file
‘Bourne again shell’ (battuta di spirito)
15
StarShell
Variabili d'ambiente
– Personalizzano il comportamento di comandi ed utilities
printenv
• lista le variabili d'ambiente correnti
export VAR=valore
• crea una variabile di nome VAR e dato valore e la
esporta all'ambiente
• per convenzione le variabili d'ambiente hanno nome
maiuscolo
• tutti i comandi successivi la conoscono
unset VAR
• cancellare una variabile
– Non tutte le variabili d'ambiente potenzialmente utili
sono già settate
16
StarShell
Procedure shell automatiche
– Nella directory di login dell'utente
• Tipicamente files nascosti: iniziano con . (punto)
.bash_profile
• Comandi eseguiti al login con la Bourne shell
.bashrc
• Comandi eseguiti al lancio della Bourne shell (p.es.
nuova finestra di terminale)
.ssh
• Directory con i settaggi dell'utility ssh
ls -a
• Listare i file nascosti
source ./.bash_profile
• Rieseguire la procedura .bash_profile dopo un
cambiamento
17
StarShell
Comandi utente - base
• Informazioni
– id, who, hostname, pwd, date, df, password
• Gestione directory
– cd, ls, mkdir, rmdir
• Gestione files
– cp, ln, rm, mv, chmod, cat
• Gestione processi
– ps, kill
• Manualistica
– man, whatis, apropos
18
StarShell
Architettura di Linux
19
StarShell
Componenti Linux
• Kernel
• Parte centrale del sistema
• Squadra di programmazione, rif. Linus Thorvalds
• Applicativi GNU
• Molte centinaia di progetti Open Source
• Idee originali di Richard Stallman
• X Window System
• Sistema grafico – non indispensabile
• X Consortium, quindi Xorg
20
StarShell
Concetti Fondamentali
• MultiUtenza
– Piu’ utenti utilizzano contemporaneamente le stesse
risorse di sistema
– Filosofia di Cooperazione e Amichevolezza
• MultiTasking
– La/le CPU sono impegnate in parallelo in più lavori
distinti
– Percezione umana di simultaneità dei Task
• MultiProcessing
– Più task appartenenti a più utenti o al sistema
– Time Sharing (condivisione della risorsa Tempo)
21
StarShell
Kernel Monolitico e Modulare
Monolitico
Modulare
Processi
del Kernel
Processi
del Kernel
Supporto a
system calls
Supporto a
system calls
Moduli
Device driver
Device driver
Device driver
Device drivers
Device driver
Device driver
Device driver
22
StarShell
Moduli del Kernel
lsmod
– lista dei moduli caricati
modprobe -a
– lista di tutti i moduli disponibili
cat /etc/modprobe.conf
– file di configurazione di alcuni moduli
modprobe modulo
– caricamento manuale modulo (privilegiato)
rmmod modulo
– eliminazione manuale modulo (privilegiato)
uname -a
– identificazione della versione del kernel
23
StarShell
Componenti Essenziali
– Due componenti del Sistema
• Processi
Esclusive ed esaustive
Sorta di fondamentalismo religioso
– Componente Dinamica
– Esecuzione di un programma (istanza)
– Possiede stato, risorse, permessi
Analogia con la
filosofia della
Programmazione
Orientata agli
Oggetti
• Files
– Componente Statica
– Rappresentazione, storaggio e transito dei dati
– Ciò che viene utilizzato tramite le System Calls dei files
Definizione Funzionale
Vi sono Files e File Systems anche molto esotici
24
StarShell
Proprietà di un Processo
–
–
–
–
–
–
–
PID - Process Identifier univoco
PPID - Identificativo del processo padre
Utente possessore
Terminale di controllo
Permessi effettivi
Vettore di lancio
Locazioni occupate in memoria
• Regioni, segmenti, librerie dinamiche, memoria condivisa, ...
– Stato di esecuzione
– Risorse
• Files, buffers, segnali, eventi, code, ...
25
StarShell
Gestione della Memoria
RAM
sys
Kernel
usr
Memoria Utente
Processi del kernel
Tabelle del kernel
Moduli
Processi utente
Buffer di I/O
Caches
interfaccia delle
i
system
call
n
t
– Gestione diversa
e separata
e
– Le due regioni
r di memoria non sono necessariamente
contigue
26
StarShell
Segmenti di un Processo
Indirizzi Virtuali
text
Indirizzi Reali
Memory
Mapping
Unit
Segmenti
data
Memoria
Reale
(RAM)
stack
u_area
StarShell
Memoria
Virtuale
27
Tabella dei Processi
text
data
Regioni
del
Processo
slot
Tabella dei Processi (Kernel)
PID
PPID
permessi
u_area
stack
u_area
28
StarShell
Il Comando 'ps'
ps
• Processi locali dell'utente
ps w
• Formato 'largo'
ps l
• Formato 'lungo' – informazioni architettoniche
ps a
• Tutti i processi – anche di altri utenti
ps ax
• Anche i processi senza terminale di controllo
ps wax
oppure
ps lax
• Rapporto completo
29
StarShell
Opzioni di 'ps'
30
StarShell
Esempio di ps lax
31
StarShell
Processi in Background
$ sleep 2000 &
[1] 7145
$
– manda il processo in background
– ritorna subito il pronto
– il processo continua a leggere e scrivere su terminale,
se ne ha bisogno
• --> redirezioni
– il processo ha
• Job ID (JID) – locale al terminale
• Process ID (PID) – globale di sistema
32
StarShell
Stato dei Processi
$ sleep 10000 &
$ sleep 20000 &
$ ps
Lancio in background
Solo processi dell’utente
$ ps w
$ ps l
Rapporto “wide”
$ ps wx
$ ps wax
$ ps lax
Tutti i processi dipendenti da terminale
Rapporto “long”
Anche i processi indipendenti da terminale
$ ps -l
Rapporto stile System V
precedenti: stile Berkeley
33
StarShell
Job Control
comando
comando &
fg %n
Foreground
Background
bg %n
susp
^z
intr
Stopped
kill %n
^c
kill %n
Terminated
Non con /bin/sh
jobs Lista job attivi
stty tostop Ferma processi
che producono
output
34
StarShell
Generare Core Dumps
ulimit -a
ulimit -c unlimited
Per esaminare i 'core dump' occorre un debugger appropriato, p.es. gdb
35
StarShell
Terminale di Controllo
$ sleep 1234 &
$ ps wax | grep 1234
notare PPID e terminale di controllo TTY
logout
login di nuovo
$ ps wax | grep 1234
Terminale dell’utente
Shell dell’utente
Non trovato: il processo
è morto al logout
$ nohup sleep 1234 &
$ ps wax | grep 1234
notare PPID e terminale di controllo TTY
logout
login di nuovo
$ ps wax | grep 1234
notare PPID e terminale di controllo TTY
Processo ‘init’
Disabilita ricezione del
segnale di HANGUP
Processo sopravvissuto
al logout:
demone
Non c’è
36
StarShell
Generazione di Processi
Comando:
$ ls
•La funzione fork() ritorna:
• al figlio il valore 0
• al padre il PID del figlio
sh
3510
Valore di
ritorno:
fork()
3517
sh
3510
La funzione wait() viene
• chiamata dai processi in foreground
• NON chiamata dai processi in background
0
sh'
3517
exec()
La funzione wait() sospende il processo
chiamante finchè il processo indicato non
termina
“Il padre attende la morte del figlio”
wait(3517)
.....
if ((p=fork())==0)
execve(....);
else
wait(p);
.....
ls
3517
37
StarShell
Schedulazione dei Processi
READY
+
risveglio
schedulazione
caricamento
run
queue
prelazione
context switch
CPU
return
RUN
usr
SLEEP
+
-
sys call
RUN
sys -
evento
esterno
ZOMBIE
Priorità
dinamica
38
StarShell
Temporizzazione comandi
time comando
Total (wall) time
CPU time in User mode
CPU time in System mode
39
StarShell
Priorità dei Processi
priorità
alta
Indice di Priorità
0
128
Non tutto il range è usato in ogni variante
di Unix
Componenti:
dinamica
statica
priorità
bassa
dipende dalla storia del processo
offset assegnato dall’utente
nice
Colonne PRI e NI
$ nice -10 sleep 2222 &
# nice --10 sleep 3333 &
$ ps l
-20
0
20
Solo superuser
Anche: renice
Valore algebrico
Indicatore di opzione
40
StarShell
Demand Paging
sys
usr
RAM
pagine (4 kb)
page stealing
daemon
(Least Recently
Used)
Demand
paging
Swap Area
File System
DISCO
41
StarShell
Uso dei Buffer
sys
usr
proc
buffers
operazioni
logiche
•Aggiornamento quando:
• i buffer sono pieni
• comando sync
• a intervalli regolari (~2 min)
RAM
write
behind
read
operazioni
ahead
fisiche
File
Per spegnere il sistema:
•comando shutdown
Disco
42
StarShell
vmstat
intervallo di campionamento (secondi)
numero di campionamenti
Processi
running
blocked
swap
Memoria
(pagine)
Attività di
Swap
swap-in
free
buffer cache
swap-out
Attività
di I/O
blocchi in
Attività
di sistema
interrupt
blocchi out
context
switches
Attività
di CPU
user mode
sys mode
waiting
idle
43
StarShell
top
44
StarShell
Il Filesystem
45
StarShell
Disco Fisso
Piatti
Testine
Settori
Cilindri
Schema Logico
Cilindro 0
boot
Linux root
Partizioni
Windows
Area di Swap
•vuota
•area di swap
•filesystem
46
StarShell
File Systems riconosciuti
•
•
•
•
•
•
•
•
•
•
•
Minix – antico FS Linux
Ext2 – FS standard
Ext3 – FS standard con journalling (Red Hat)
Reiser – nuovo FS con journalling (Slackware)
GFS – Global FS (Red Hat – per clusters)
ISO9660 – CD e DVD
FAT – vecchio Windows
NTFS – nuovo Windows
UFS – Unix FS (Solaris)
XFS – Silicon Graphics
JFS - IBM
47
StarShell
File System
Disco
Partizione
Una partizione può contenere:
• niente
• un'area di swap
• un file system
File System
I-Nodes
SuperBlocco
Blocchi Dati
(Unità di Allocazione)
Organizzazione logica a basso livello dello storaggio dati
48
StarShell
I-Node
I-Number
Dati
Informazioni generali:
possessore,
permessi,
dimensioni,
link,
date, ecc.
Dati
Dati
Dati
puntatori
Dati
Puntatori diretti
Dati
Primo punt. indiretto
puntatori
puntatori
Dati
Secondo punt. indiretto
Terzo punt.indiretto
Dati
puntatori
puntatori
puntatori
Dati
49
StarShell
Directory
I-Node
Nome File
8197
pippo
234
rapporto5
8997
sub1/
4712
file7.txt
3490
archivio.tar.gz
Directory Entry
I-Node
Blocchi
dati
commedia.txt
8678
Nel mezzo del
cammin di ...
50
StarShell
Comandi
– Devono avere il permesso di esecuzione per chi li invoca
– Può essere:
• un eseguibile binario
• una procedura interpretata
– Le procedure iniziano con, p.es.:
• #! /usr/bin/perl
hash bang
eseguibile binario che interpreta la procedura corrente
– Altrimenti vengono passate all'eseguibile indicato nella
variabile d'ambiente SHELL
51
StarShell
Percorsi
– Percorso assoluto inizia con / (slash)
• partendo dalla directory radice
• es: /usr/share/man/man1/zsh.1.gz
dirname
basename
– Percorso relativo non inizia con / (slash)
• partendo dalla directory corrente
• es: bin/try1.pl
dirname
–
–
–
–
basename
basename: nome del file dopo ultimo /
dirname: percorso prima dell'ultimo /
pathname = [dirname/]basename
pathname qualificato = dirname/basename
52
StarShell
PATH
– I comandi espressi da un pathname qualificato vengono
eseguiti direttamente
– I comandi espressi dal solo basename vengono sempre
ricercati nelle directories espresse dalle variabili
d'ambiente PATH
es. PATH=/bin:/usr/bin:/usr/local/bin;export PATH
– I comandi nella directory corrente non sono
automaticamente trovati
• Per sicurezza la directory corrente non è mai nel PATH
– Esecuzione di prova, nella directory corrente
./prova
– Ricerca di un eseguibile nel PATH
which eseguibile (trovato ma non eseguito)
53
StarShell
Gestione directories
mkdir newdir
rmdir dir
– Deve essere vuota
rm -r dir
• Rimozione ricorsiva della directory e di tutto il suo
contenuto (ATTENZIONE!)
cd dir
cd : torna alla directory di login – valore della variabile
d'ambiente HOME
cd - : torna alla directory precedente l'ultimo cd
ls dir
pwd
54
StarShell
cp (copy)
cp sorgente destinazione
cp sorg1 sorg2 sorg3 ... destinazione
• Copia singola
– sorgente deve essere un file
– destinazione può essere
• file nella stessa directory (nuovo nome)
• file in altra directory (stesso o nuovo nome)
• directory (stesso nome)
• Copia multipla
– destinazione deve essere directory (stesso nome)
File destinazione esiste: ricoperto
File destinazione non esiste: creato
55
StarShell
Il comando 'cp'
commedia.txt
Nuova.txt
8678
9784
Nel mezzo del
cammin di ...
Nel mezzo del
cammin di ...
cp commedia.txt nuova.txt
56
StarShell
ln (link)
ln vecchionome nuovonome
– Crea un nuovo nome file per lo stesso file riferito dal
nome vecchio
– Il nome vecchio deve esistere
– Il nome nuovo
• non deve esistere
• può essere directory: stesso nome del vecchio
– Il nuovo nome deve essere nello stesso file system del
vecchio nome
– Dopo il link non si sa più qual'era il file originale
(sitauazione simmetrica)
57
StarShell
Il comando 'ln'
commedia.txt
Nuova.txt
8678
riferimenti=
riferimenti+1
Nel mezzo del
cammin di ...
ln commedia.txt nuova.txt
58
StarShell
rm (remove)
rm file ...
– System call: unlink()
– Rimuove il nome che si riferisce al file
– Decrementa il numero di riferimenti
• Gli altri nomi e il file rimangono
– Se il numero riferimenti nuovo è zero il file è rimosso:
•
•
•
•
Blocchi del file ritornano alla lista dei blocchi liberi
Il contenuto dei blocchi non viene toccato
I puntatori sono azzerati
L'inode è riallocabile
– File non più recuperabile
• (procedimenti forensi, successo incompleto)
59
StarShell
Il comando 'rm'
commedia.txt
Nuova.txt
8678
riferimenti=
riferimenti-1
se >0 il file
continua ad
esistere
Nel mezzo del
cammin di ...
Se riferimenti=0:
(1) lo i-node viene deallocato
(2) i blocchi dati vengono ritornati
alla liasta dei blocchi liberi
rm commedia.txt
60
StarShell
mv (move)
mv sorgente destinazione
mv sorg1 sorg2 sorg3 ... destinazione
– Stessa sintassi di cp
– Operazione combinata di ln di un nome nuovo e rm del
nome vecchio
– La destinazione può avere lo stesso nome se è in una
directory differente
– Non si può avere la destinazione in un file system
diverso dalla sorgente
• Ma in tal caso molte distribuzioni eseguono un cp
seguito da un rm
61
StarShell
Link simbolico
ln -s vecchionome nuovonome
– Stessa sintassi di ln
– Crea un nuovo file destinazione
• di tipo “link”
• i blocchi dati contengono il vecchio nome
– Usare il nuovo file causa una redirezione interna al
vecchio file
– Si possono creare in altri file systems
– Situazione di “broken link” se
• il file originale è stato rimosso
• il file system originale è irraggiungibile
– Situazione asimmetrica
62
StarShell
Caratteri Jolly
63
StarShell
Caratteri Jolly
• ? sostituisce un singolo carattere nella posizione
corrente
• * sostituisce un numero qualsiasi di caratteri,
anche zero, nella posizione corrente
• [ ] racchiudono un numero di carartteri da cui ne
viene selezionato uno solo
– [12af] – un insieme di caratteri
– [a-m] – un range di caratteri, inclusi i capi
• [^ ] seleziona un carattere non presente tra le
parentesi quadre
• Non confondere i Caratteri Jolly con le
Espressioni Regolari
64
StarShell
Comandi e caratteri jolly
cp *.txt sub1
mv chapter??.doc backup
rm *.o
mv *.txt *.doc
Attenzione!!:
$ rm * .o
$ .o: not found
Non esiste il comando 'rename'
for i in *.txt
do
j=`basename $i .txt`
mv $i $j.doc
done
Procedura shell per
ottenere lo stesso
effetto
I caratteri jolly vengono espansi dalla shell PRIMA dell'esecuzione
del comando
65
StarShell
Redirezioni
File Descriptor
tastiera 0
stdin
comando
stdout
1
schermo
2
schermo
file1
file2
stderr
file3
Formalmente
Semplificazioni
comando 0< file1
comando < file1
comando 1> file2
comando > file2
comando 1> file2 2> file3
comando > file2 2> file3
comando > file2 2&>1
Merge
66
StarShell
cat
cat
– Scrive lo standard input su standard ouput
– Ammette redirezioni
cat file1 file2 ...
– Concatena (catenates) i file sullo standard output
cat mail??.elm > archivio
• Compie un 'join' di tutti i file nell'archivio
cat mail99.elm >> archivio
• Scrive il file in append
cat > log.txt
• Scrive al file quello che si digita da tastiera
• Terminare con ^D (fine file di input)
67
StarShell
echo
echo ”Ciao a tutta l'Europa”
– Invia i suoi argomenti a standard output, seguiti da un
newline
• Se gli argomenti contengono metacaratteri, nasconderli
tra apici
echo -n ”Scelta: ”
– Non invia il newline
echo ”Buongiorno” >> saluti
• In append al file
echo ”errore” 1>&2
• Redirezione su standard error
68
StarShell
Metacaratteri
– Caratteri del codice ASCII che vengono considerati
elemanti sintattici da un interprete di comandi o da
un'utility
• Caratteri jolly, espressioni regolari, parentesi, ecc.
–
–
–
–
La shell stessa ne ha molti
Interpreti e comandi diversi hanno metacaratteri diversi
Non sono metacaratteri A-Za-z0-9
Non sono metacaratteri shell . , - _ ( ) ma
. come primo carattere di un nome file rende il file
nascosto
- come primo carattere indica un'opzione
( come primo carattere della linea di comando lancia una
sottoshell
69
StarShell
Nascondere i metacaratteri
• Regole di quoting
” ” nascondono tutti i metacaratteri tranne $
' ' nascondono tutti i metacaratteri
\c nasconde il metacarattere c che segue
• Esempi: \”
\'
\\
\$
`comando` (apici singoli rovesci) esegue il comando e
ritorna nel contesto il suo standard output
d=`date` assegna alla variabile d l'output del comando
date
frutta=pesche
echo ”Il prezzo delle $frutta e' \$2”
70
StarShell
Pipes
comando1
stdin
stdout
pipe stdin
comando2
stderr
stdout
stderr
comando1 | comando2
• Lo standard ouput di comando1 diviene lo stanadard input di comando2
• Il Kernel sincronizza comando1 e comando2
• Sono possibili più pipes
comando1 | comando2 | comando3 | comando4
71
StarShell
Esempi di pipes
who | wc -l
• Quanti sono gli utenti collegati al sistema
who -l | -w | -c [file] conta le linee, le parole, i
caratteri in un file o nello standard input
cat /etc/passwd | sort
• Elenca gli account di sistema in ordine alfabetico
72
StarShell
I Files
73
StarShell
File
Struttura di controllo
(file table)
#include <stdio.h>
...
FILE *fp;
...
fp = fopen( “esempio.txt”, “w”);
Puntatore al byte
corrente
Sequenza di byte (0 a infiniti)
74
StarShell
Tipi di File
blocco di
controllo
numero
magico
bytes del file
• UNIX cerca
/usr/share/file/magic
– il numero magico – primi 2 o 4 byte
• tipo di file
– il blocco di controllo – n bytes a seguire
• dipende dal numero magico
• dettagli sul tipo di file
• Comando file
75
StarShell
Utilities per i file
• Compilare un file
– cc ciao.c -o ciao
• Tipo di file: file ciao
• Visualizzare un file: od -c ciao
numero magico
dei file eseguibili
76
StarShell
Utilities per i file
• Stringhe in un file:
strings ciao
• Tabella dei simboli: nm
ciao
• Togliere la tabella dei
simboli: strip ciao
77
StarShell
Utilities per i file
• Lista librerie dinamiche: ldd ciao
78
StarShell
Informazioni sul file
# ls -l ciao
-rwxr-x--x 1 root adm 2940 Apr
utente
possessore
permessi
standard
tipo
di file
2 09:18 ciao
numero di
riferimenti
(link)
nome file
gruppo
possessore
data ultimo
aggiornamento
dimensione
in bytes
79
StarShell
Nome e tipo file
– Nome file
• Caratteri A-Za-z0-9.-_ (altri: metacaratteri shell)
• Max 252 caratteri
– Limitare a 32 per portabilità su CD e in rete
• Non inizia con – (trattino: indicativo opzione)
• Se inizia con . (punto) è nascosto
– Tipo file (tutto ciò che non è un processo è un file)
- regolare
d directory
Speciali:
b device a blocchi
c device a caratteri
l link simbolico
s socket
80
StarShell
Date di un file
– MAC
• Modifica
• Accesso
• Modifica dell'inode (inizialmente: Creazione)
– Listare
• ls -l : modifica
• ls -lu : accesso
• ls -lc : creazione
– Cambiare
• touch file : data corrente a modifica e accesso
– se il file non c'è viene creato, oppure touch -c
• touch -t [[CC]YY]MMDDhhmm[.ss] file
• touch -a : solo accesso
• touch -m : solo modifica
81
StarShell
Files di Device
–
–
–
–
–
–
–
Nella directory /dev e sottodirectories
tty* - terminali di console
ptys/* - pseudo terminali, emulatori grafici
ttyS* - porte seriali
usbdev* - dispositivi USB
parport* - porte parallele
sd* - dischi SCSI o SATA
– I files esistono solo se è caricato il device driver
corrispondente – ambiente udev
– L'inserimento di un device supportato produce
• il caricamento del driver
• la comparsa in /dev di un nome di device
82
StarShell
Permessi sui File
83
StarShell
Permessi
-rwxr-x--x 1 root adm 2940 Apr
2 09:18 ciao
r read
w write
x execute
- permesso assente
rwxr-x--x
altri
(others - o)
gruppo possessore
(group owner - g)
utente possessore
(user owner - u)
84
StarShell
Cambio permessi
– Il possessore può cambiare i permessi dei propri file
u + r
g - w
x
o
chmod
zero
o più
– Permessi numerici
uno
o più
file
chmod ug+w file
uno
rwxr-x--x
111101001
7 5 1
chmod 751 file
85
StarShell
Permessi speciali
– Come può un utente cambiarsi la password, che si trova
nel file /etc/shadow?
ls -l /etc/shadow
-rw------- 1 root root 1997 Sep
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 1997 Sep
12 2008 /etc/shadow
12 2008 /usr/bin/passwd
• Permessi speciali
sstrwxrwxrwx
Set User ID Set Group ID
SUID
SGID
POSIX bit
(sticky bit)
86
StarShell
Permessi speciali
• Si indicano al posto di uno dei permessi di esecuzione
• Richiedono che tutti i permessi di esecuzione siano
settati
• Set User ID
– Da all'esecutore i permessi effettivi dell'utente
possessore dell'eseguibile
• Set Group ID
– Da all'esecutore i permessi effettivi del gruppo
possessore dell'eseguibile
• Impostare i permessi speciali
es: chmod 4755 file
rwsr-xr-x
s--rwxr-xr-x
100111101101
4 7 5 5
87
StarShell
Cambio possessore e gruppo
– Cambio possessore
chown nuovo_possessore file
– Cambio gruppo di appartenenza
chgrp nuovo_gruppo file
– Solo root può usare questi comandi
88
StarShell
Permessi di default
• Umask : maschera dei permessi di default
• Permessi di nuovo
– file : 666 – umask
– directory : 777 – umask
• Cambiare: umask maschera
–
–
–
–
umask
umask
umask
umask
022 : default
002: fiducia al gruppo
007 : nessuna fiducia agli altri
077 : massima diffidenza
89
StarShell
Permessi e comandi
• File
r leggere il file per visualizzarlo, copiarlo o muoverlo
w modificare il contenuto del file, ricoprire una
destinazione di cp o mv
x eseguire un file binario o una procedura interpretata
• Directory
r listare il contenuto
w creare o distruggere file nella directory
x eseguire cd nella directory
90
StarShell
Permessi e comandi
• cp sorgente destinazione
file esiste: w (file)
file non esiste: w (directory)
r (file)
• ln sorgente destinazione
w (directory)
r (file)
• rm file
w (directory)
• mv sorgente destinazione
r (file)
w (directory)
file esiste: w (file)
file non esiste: w (directory)
91
StarShell
Utenti e Gruppi
92
StarShell
Utenti e gruppi
utenti normali
pseudo-utenti
superuser
93
StarShell
Utenti
• Utenti = Account
–
–
–
–
Noti al sistema, possono possedere risorse
Identificativo primario: UID – User ID – numero intero
Identificativo aggiunto univoco: username – stringa
Tipi di utenti per permessi operativi
•
•
•
•
Superuser (UID=0) – da CLI può fare tutto
Aiuti (UID=1-499) – permessi amministrativi parziali
Normali (UID=500...)
Nobody (UID alto) – permessi minimi
– Tipi di utenti per accesso
• Normali – possono compiere login
• Pseudo-utenti – non possono compiere login
94
StarShell
Gruppi
• Un gruppo ha
– nome
– GID – Group ID – intero
– Lista membri
• Modalità d'utilizzo
– Tutti gli utenti appartengono ad un gruppo primario
– Gli utenti possono appartenere ad altri gruppi secondari
– Gli utenti hanno i permessi di gruppo di tutti i gruppi a
cui appartengono
– Solo root può configurare l'appartenenza a gruppi
– Alcune distribuzioni hanno il gruppo 0 (wheel) con
permessi speciali
– Alcuni utenti sono membri esclusivi del proprio gruppo
95
StarShell
Strategie per Utenti e Gruppi
• Tirannica
– Solo root può amministrare; pochissimi utenti (Red Hat)
• Aristocratica
– Pochi utenti possono diventare temporaneamente
amministratori tramite sudo; root non può accedere
direttamente (Ubuntu)
• Oligarchica
– Alcuni pseudo-utenti definiscono “ruoli” amministrativi;
fine determinazione dei poteri di ciascun ruolo. Gli utenti
assumono un ruolo alla bisogna (Solaris)
– Role Based Access Control
• Democratica – non esiste
96
StarShell
Importanza degli account
• Server di rete
• Infrastruttura: DHCP, DNS, NTP, Gateway, Tunnel, ...
• Servizio: Web, Posta, FTP, SSH, File Server, Stampa, ...
• Sicurezza: Firewall, IDS, Proxy, HoneyPot, ...
–
–
–
–
Solo root è importante
Pochi altri utenti: pseudo-utenti dei servizi
Macchina da autonoma a completamente automatica
Files di registrazione utenti sono locali
• Server di cooperazione
• Autonomo: IRC, Messaggistica, Calendari, Social, ...
• Condiviso: con Windows, UNIX, NetWare, ...
– Root è locale
– Molti utenti presenti e amministrati centralmente da
LDAP/Kerberos o Active Directory
– Single Sign On
97
StarShell
Amministrazione locale
• Files
/etc/passwd utenti, parte pubblica
/etc/shadow utenti, parte privata
/etc/group gruppi
– Files in formato dbm
•
•
•
•
ogni linea è un record
campi di lunghezza variabile
separatore di campo: due punti
primo campo univoco come eventuale indice
– Uso di comandi per la modifica
• Pongono lock e forzano l'accesso singolo
• Mantengono backup
• Eventualmente rigenerano l'indice
98
StarShell
/etc/passwd
– nome di login
– password
• non più utilizzata
– User ID
– Group ID del gruppo primario
– commento
• Campo “Gecos” - può avere una struttura
– home directory
– shell
•
•
•
•
eseguito in seguito a login di successo
quando termina: logout
prevista da /etc/shells
può essere /sbin/nologin
99
StarShell
/etc/shadow
–
–
–
–
–
–
–
–
nome di login
password crittografata
data ultimo cambiamento password
durata minima - giorni
durata massima – giorni
tempo di avvertimento - giorni
tempo di inattività – giorni
data scadenza finale
– Le date sono in giorni progressivi dalla data di
riferimento: 01/01/1970
100
StarShell
/etc/group
–
–
–
–
nome del gruppo
password (obsoleta)
Group ID
lista utenti
– Anticamente un utente apparteneva ad un gruppo solo
per volta. Per cambiare gruppo occorreva dare un
comando che chiedeva una password – secondo campo
di group
– Ora un utente ha tutti i permessi di tutti i gruppi a cui
appartiene
101
StarShell
Manualistica
102
StarShell
Manuale standard di Unix
– /usr/share/man
• Sezioni standard
1
2
3
4
5
6
7
8
– comandi utente
– system calls
– altre librerie
– files di configurazione
– altri files di configurazione
- giochi
– device drivers
– comandi di amministrazione e di rete
• Possono esistere altre sezioni e sottosezioni
103
StarShell
Comandi di manualistica
man passwd
• Pagina del comando passwd (sezione 1)
man 5 passwd
• Pagina del file /etc/passwd (sezione 5)
whatis passwd
• In quali sezioni si trovano pagine col titolo passwd
apropos password
• Quali pagine esistono che contengano la stringa
password nel titolo o nella descrizione breve
• Database whatis
– Ricreare con makewhatis
• Scandisce le directory di manualistica standard o quelle
della variabile d'ambiente MANPATH se esiste
104
StarShell
Manualistica
– Le pagine di manuale sono compresse
– Scritte in linguaggio troff (GNU groff)
• Linguaggio descrizione pagine (antenato di HTML)
– Il comando man
• decomprime la pagina
• compie la resa a video, interpretando il troff
• compiono la paginazione a video con less o col
paginatore indicato dalla variabile d'ambiente PAGER
troff
pagina
sorgente
tbl
testo
formattato
postscript
troff
driver di
resa
paginatore
macro man
terminfo
PAGER
pic
eqn
video
105
StarShell
terminfo
• Database di proprietà dei terminali
– Riferimento a terminfo entry tramite variabile
d'ambiente TERM
– Proprietà (capabilities)
• numeriche: cols#80
• booleane: xon
• stringhe di controllo terminale (sequenze di escape):
clear=\E[H\E[J$<50>
capability
– Query della entry
escape sequence
infocmp vt100
– Aggiunta di nuova entry al database
tic file_descrittore
terminfo compiler
106
StarShell
Il Sistema Grafico X
107
StarShell
Sviluppo di X Window
(W)
The ‘X’ Window System
Massachussetts
Institute of
Technology
X10
X11
X11R2
X11R6
XFree
Xorg
108
StarShell
X Window System
DISPLAY=nodorete:display.schermo
schermo 1
Client
•Display Server: nome X
• >= 1 schermi
• 1 tastiera
• 1 puntatore
schermo
0
1
2
display 0
nodo di rete
DISPLAY=lara:0.0
Semplificato lara:0
Applicativo distribuito Client-Server
(l'umano interagisce col Server, non
col Client)
Localmente :0.0
oppure :0
109
StarShell
Architettura di X Window
ISO
OSI Applicazione
7
Presentazione
Display
Server
Client
6
Xlib
Sessione
X Protocol
5
Protocolli
4 di Rete
ChaosNet
DECNet
TCP/IP
Porta 6000
3
Interfacce
2 Fisiche
IEEE
1
110
StarShell
File di configurazione grafica
ServerLayout
Screen
Device
Videocard
InputDevice
Keyboard
InputDevice
Mouse
• /etc/X11/xorg.conf
– Sezioni
• identificativo
• attributi
111
StarShell
/etc/X11/xorg.conf
Generazione manuale:
X -configure
112
StarShell
Test del server
/usr/bin/X
Solo il server
/usr/bin/xinit
Il server e il client xterm
113
StarShell
Lancio del Server X
– A Run Level 5 parte automaticamente il Server X e il
Display Manager, che gestisce il login all'ambiente
grafico
– A Run Levels 2 o 3 lanciare startx
• Front end a xinit
– Files di configurazione di lancio
• .xinitrc nella directory di login dell'utente
• /etc/X11/xinit/xinitrc
– Mappa di modifica tasti e mouse
• $HOME/.Xmodmap oppure /etc/X11/Xmodmap
– Mappa di modifica tastiera
• $HOME/.Xkbmap oppure /etc/X11/Xkbmap
– Files di risorse
• $HOME/.Xresources oppure /etc/X11/Xresources
114
StarShell
Toolkit
Applicativi Client
Toolkit: Widget Set
Toolkit: Intrinsics
Xlib
X Protocol
115
StarShell
Toolkits
– Athena - MIT
– Open Look - Sun
– Motif – OSF
– gtk - Gnome
– Qt – KDE – Troll Tech
– Intrinsics: utilities comuni
• connessione al server, gestione errori
– Widget Set: elementi grafici
• scrollbar, bottoni, menù, pannelli, ...
• Determinano il Look and Feel del toolkit
– Insieme di opzioni supportate da tutti i toolkit
116
StarShell
Geometria delle Finestre
+0,+0
-0,+0
y
Finestra
Applicativo
x
Finestra
Radice
height
width
depth
(bytes per pixel)
+0,-0
-0,-0
Angoli di Riferimento
xclock -geom 300x400-10+120 &
117
StarShell
Rappresentazione del testo
schermo
glyph
codice dei simboli
font
file
x
keysym
0x0078
keycode
15
keymap
tastiera
118
StarShell
Mappa di tastiera
• Se il server X usa l'estensione XKEYBOARD
(default)
• E' settata nel file di configurazione /etc/X11/xorg.conf
• E' gestita da strutture nella directory
/usr/share/X11/xkb
• Se il server non usa l'estensione XKEYBOARD
– Lanciato con l'opzione -kb
– Carica la mappa di tastiera $HOME/.Xkbmap oppure
/etc/X11/Xkbmap (default US)
– Caricare un'altra tastiera col comando xmodmap file
xmodmap -pk > file
vi file
xmodmap file
– Modificare alcuni tasti col comando xmodmap
– Il comando xmodmap funziona anche se l'estensione
XKEYBOARD è attiva
119
StarShell
xmodmap -pk
– Mostra la mappa di tastiera corrente
120
StarShell
Metodo di input
– Ad ogni keycode della keymap sono associati più simboli
– Singolo tasto : carattere primario associato
– Altri tasti con modificatori
• Più tasti simultaneamente
• Più tasti in sequenza
• Esempio: mappa italiana MacIntosh
– Simultanei
•
•
•
•
Normale
Shift + tasto : secondo carattere
Modificatore1 (alt) + tasto : terzo carattere
Modificatore2 (shift+alt) + tasto : quarto carattere
x
X
†
‡
– Sequenziali
• alt+u,u -> ü
alt+n,n -> ñ
• alt+9,aeiou -> accentata grave
• alt+8,aeiou -> accentata acuta
121
StarShell
xmodmap -pm
– Mappa dei modificatori
122
StarShell
xlsfonts
– Lista di tutti i font disponibili
123
StarShell
xfontsel
– Per selezionare interattivamente un font
• Selezionare le varie proprietà del font
• Viene indicato quanti font corrispondo alla selezione
effettuata finora
• Viene mostrato un esempio grafico del font
• Il bottone 'select' copia la scelta effettuata nel clipboard
124
StarShell
xev
– Per testare i keycode e i keysym
125
StarShell
Window Manager
– Operazioni sulle finestre:
•
•
•
•
•
Ridimensionamento
Spostamento
Iconizzazione
Stacking
Attivazione (fuoco di input)
– Comunicazione tra finestre (applicativi)
• Cut & Paste
• Drag & Drop
Inter Client Communication Convention Manual (ICCCM)
– Non ha una finestra sua (ha la finestra radice)
– Fornisce
• Decorazioni alle finestre (bordi, bottoni, barra)
• Look & Feel dell'interazione utente
126
StarShell
Decorazioni
Decorazioni del Window Manager (BlueCurve)
Barra del Titolo (movimento)
Bottone
Menù
Bottone Iconizzazione
Bottone
Massima
Espansione
Bottone
Chiusura
Bordo di
Espansione
Angolo di
Espansione
127
StarShell
Window Managers
• Basati su un toolkit
– twm (Tom's Window Manager): Athena
– mwm (Motif Window Manager) : Motif
– enlightenment: gtk
• Indipendenti da toolkit
– BlueCurve : Red Hat
128
StarShell
Desktop Environment
• Sistema grafico integrato
– Window Manager
– Session Manager
• Mantiene stato tra sessioni di lavoro diverse
– Librerie di icone
– Utilities dall'aspetto e comportamento integrato
– Utilities di gestione e personalizzazione
–
–
–
–
Gnome – GNU
KDE – Troll Tech - Norvegia
CDE – Common Desktop Environment – UNIX
JDS – Java Desktop System - Sun
129
StarShell
JDS
130
StarShell
Common Desktop Environment
131
StarShell
twm
132
StarShell
gnome
133
StarShell
KDE
134
StarShell
XDMCP
Clients (diversi sistemi operativi)
Server
X Display Manager Communication Protocol
– Client-Server tradizionale (non come X)
– Collegamento da più stazioni di lavoro
– Singolo stile di login
• ottenere Cookie di Xauth
– Equivalente di Terminal Server
135
StarShell
XDMCP – Attivazione Server
System ->
Administration ->
Login Screen ->
Remote
Eventualmente
configurare XDMCP
(tuning – non
necessario)
136
StarShell
XDMCP - Client
X -query 192.168.3.198
– collegamento diretto al server specificato
X -broadcast
– collegamento al primo server che risponde
X -indirect 192.168.3.198
– richiesta di intermediazione
– il server specificato compila una lista di tutti i server
disponibili e la presenta in una finestra detta “Chooser”
– selezionando un server della lista viene aperto un
collegamento diretto
137
StarShell
xlogin
Finestra di
login
Opzioni di
sessione
Opzioni di lingua
138
StarShell
XDMCP
Finestra di
Chooser
139
StarShell
VNC Architettura
VNC Client
VNC Server
Rete
VNC Client
updates del framebuffer
VNC Client
comandi mouse e tastiera
– Virtual Netwwork Computing
• Xvnc è il server di X Window System (vncserver)
• Vari client per vari sistemi operativi (vncviewer)
140
StarShell
vncserver - CLI
vncserver :1 -name remote -geometry 800x600
Display number : corrisponde a porta 5901
Directory di configurazione : .vnc
passwd : file con la password di accesso
• settare con vncpasswd
xstartup : comandi di inizializzazione
141
StarShell
vncserver - GUI
System -> Preferences
-> Remote Desktop
142
StarShell
Client VNC
vncviewer
(Linux)
Chicken of the VNC
(MacIntosh)
143
StarShell
Utilities Avanzate
144
StarShell
grep
grep [opzioni] espress_regolare [file]
– Seleziona le linee del file che contengono l'espressione
regolare indicata (slice orizzontale)
– Se il file non è indicato, tratta lo standard input
• egrep – più espressioni, meno velocità
• fgrep – meno espressioni, più velocità
• grep – medio espressioni e velocità
Opzioni principali
-v – inverte ricerca: linee non contenenti espress.
-c – conta solo le linee trovate
-f file – legge le espressioni dal file
-n – mostra i numeri di linea
-i – ignora se maiuscole o minuscole
145
StarShell
cut
– Seleziona dal file sezioni indicate (slice verticale)
cut -c lista [file] – lista di caratteri
cut -dc -f lista [file] – lista di campi, delimitati
dal carattere c (default: tab)
– lista
• numeri separati da virgole
• range separato da – (trattino)
– Se il file non è indicato legge da standard input
146
StarShell
bc
– Calcolatrice da linea di comando
– Versione intera
– Uscire con ^D (control-D)
147
StarShell
bc con Redirezione di input
148
StarShell
tr
– Copia l'input all'output con sostituzioni o cancellazioni di
singoli caratteri
• Esempi
cat file1 | tr ”a” ”b”
• cambia le a in b
tr ”[:lower:]” ”[:upper:]” < file1
• cambia tutte le minuscole in maiuscole
tr -cd ”[:print:]” < file 1
• rimuove tutti i caratteri non stampabili dal file
-c complementa l'azione ai caratteri non specificati
-d rimuovi (delete)
• Per le classi di caratteri vedere Espressioni Regolari
149
StarShell
split
split -b100k achivio.tar
• Spezza il file archivio.tar in files da 100kB ciascuno e
chiama i pezzi xaa, xab, xac, ...
split -b99m archivio.tar archivio.
• Spezza il file archivio.tar in files da 99MB ciascuno e
chiama i pezzi archivio.aa, archivio.ab, ...
split -l50 testo.txt
• Spezza il file testo.txt ogni 50 linee
split -l30 • Spezza lo standard input ogni 30 linee
150
StarShell
Editors di Linux
151
StarShell
Editors di Linux
vi
sed
ed
emacs
ex
vim
ed: editor
sed: stream editor
ex: extended editor
vi: visual editor
vim: vi improved
nano
152
StarShell
nano
153
StarShell
vi
• “visual”
– Editor destinato ai programmatori
– Non è un word processor
• linea e carattere corrente, non paragrafo
– Spesso implementato da Vim – Vi Improved
• vi [opzioni] [file]
– Il nome file può essere deciso in seguito
view file – apri in modo read-only
vi -r file – recupera un file dopo un crash
154
StarShell
vi: Modi di Lavoro
vi file
Comando
A a
I i
O o
Esc
Esc
Editazione
155
StarShell
vi: Terminologia
colonna zero
cursore
Nel mezzo del cammin di nostra vita
mi ritrovai per una selva oscura
che la diritta via era smarrita
linea corrente
carattere corrente
primo carattere significativo
bordo sinistro
156
StarShell
vi: Comandi di inserimento
a
A
Nel mezzo del cammin di nostra vita
mi ritrovai per una selva oscura
O
che la diritta via era smarrita
o
i
I
157
StarShell
vi: Comandi di movimento
Inizio file
1G
Movimento unitario:
k
0
$
^
+
Nel mezzo del cammin di nostra vita
mi ritrovai per una selva oscura
che la diritta via era smarrita
b
h
l
j
e
w
Linea 55
Fine file
55G
G
Possibili ripetizioni:
3w
5+
2b
8e
......
158
StarShell
vi: Movimento Avanzato
Comando
Azione
W avanti a inizio prossima parola delimitata da spazi
E
avanti a fine parola delimitata da spazi
B
indietro a inizio parola delimitata da spazi
Solo su riga corrente:
fx cursore sul seguente carattere x
Fx cursore sul precedente carattere x
tx cursore prima del seguente carattere x
Tx cursore prima del precedente carattere x
;
ripeti ultima ricerca f F t T in avanti
,
ripeti ultima ricerca f F t T all’indietro
Posizionamento su schermo:
H prima riga
M riga di mezzo
L
ultima riga
Orientati a frasi:
]] sezione successiva
[[ sezione precedente
(
inizio frase corrente
)
fine frase corrente
{
inizio paragrafo
}
fine paragrafo
159
StarShell
vi: Comandi di salvataggio
Comando
:w
:w altro
:q
:q!
:wq
:wq!
:e
:e!
:e! file
Azione
Altri comandi
salva
salva con altro nome
esci (testo non modificato)
esci senza salvare
salva ed esci
:x ZZ
override protezioni di scrittura
riedita (testo non modificato)
riedita e elimina cambiamenti correnti
esci senza salvare e edita altro file
Il file corrente non cambia nome
Sempre efficace solo se si è ‘root’
Cambia la data
di aggiornamento
solo se il file
è cambiato
Da ultimo salvataggio effettuato
160
StarShell
vi: Operazioni sul file
File vero
File temporaneo
vi file
:w
Schermo
Finestra di
editazione
Scrolling
^F forward 1 schermo
^B backward 1 schermo
^U up 1/2 schermo
^D down 1/2 schermo
:w altro
directory temporanea
nome univoco
Altro file
(copia)
161
StarShell
vi: Ricerche nel file
Comando Azione
/stringa
cerca stringa in avanti (wrap a fine file)
?stringa
cerca stringa all’indietro (wrap a inizio file)
/
ripeti ultima ricerca in avanti
?
ripeti ultima ricerca all’indietro
n
ripeti ultima ricerca nello stesso senso di prima
In generale:
/espressione/ cerca espressione regolare in avanti
?espressione? cerca espressione regolare all’indietro
Semplici Espressioni Regolari
/stringa$/
stringa a fine riga
/^stringa/
stringa a inizio riga
/^ *stringa/ stringa preceduta da spazi a inizio riga
/^$/
riga vuota
162
StarShell
vi: Segnalini (markers)
Da a fino a z
Marcano linee
Non è visibile se e quali linee siano marcate
ma marca linea corrente con a
’a vai a linea marcata con a
’ ’ vai a linea prima dell’ultimo movimento
ma
’’
’a
163
StarShell
vi: Salvataggio avanzato
:w file
:1,5w file
:1,.w file
:.,+5w file
:.,’aw file
:r file
salva tutto il file corrente con altro nome
salva da riga 1 a 5
salva da riga 1 a riga corrente
salva da riga corrente fino a 5 righe dopo
salva da riga corrente a riga marcata con a
inserisci file esterno dopo riga corrente
164
StarShell
vi: Comandi di cut (delete)
d + comando di movimento
Esempi:
dw cancella fino a inizio parola successiva
de cancella fino a fine parola
d^ cancella fino a inizio riga
d$ cancella fino a fine riga
File
d’a cancella fino a riga marcata con a
d3+
cancella fino a tre righe dopo
dG cancella fino a fine file
dd cancella intera riga
viene
Ammettono ripetitori:
cancellato
10dw 10 volte dw (come d10w)
5dd5 volte dd (anche d5d)
3dd
u
buffer
(senza nome)
Undo
In vi: singolo livello di undo
u undo/redo
In vim: multiplo livello di undo
u undo (più volte)
:redo redo (più volte)
165
StarShell
vi: Comandi di paste (put)
p
P
dal buffer a dopo il carattere
o la linea corrente
dal buffer a prima del carattere
o della linea corrente
File
3dd
viene
cancellato
p
P
linea
corrente
buffer
(senza nome)
viene
inserito
viene
inserito
166
StarShell
vi: Comandi di copia (yank)
y + comando di movimento
Esempi:
yw copia fino a inizio parola successiva
ye copia fino a fine parola
y^ copia fino a inizio riga
y$ copia fino a fine riga
y’a copia fino a riga marcata con a
y3+
copia fino a tre righe dopo
yG copia fino a fine file
yy copia intera riga
Ammettono ripetitori:
10yw 10 volte yw (come y10w)
5yy 5 volte yy (anche y5y)
File
3yy
rimane
buffer
(senza nome)
167
StarShell
vi: Comandi di modifica (change)
c + comando di movimento + versione nuova + Escape
Nel mezzo della via di nostra vita prima
Nel mezzo della vi$ di nostra vita c2w
Nel mezzo del cami$ di nostra vita c2w del cam
Nel mezzo del cammin di nostra vita c2w del cammin
Nel mezzo del cammin di nostra vita dopo Escape
Comando
. (punto)
Azione
ripeti ultimo
cambiamento
o cancellazione
File
c2w
vecchia
versione
viene
cambiato
buffer
(senza nome)
168
StarShell
vi: Cancellazione o modifica avanzate
Comando Azione
x
cancella singolo carattere corrente
D
cancella fino a fine riga (= d$ )
C
cambia fino a fine riga (= c$ )
Y
copia fino a fine riga (= y$ )
rc
rimpiazza carattere corrente con c
R
entra in modalità “replace”:
ogni carattere successivo sostituisce
il carattere corrente.
Terminare con Escape
~
Cambia carattere corrente da maiuscolo
a minuscolo o viceversa e avanza a carattere
successivo
169
StarShell
vi: Formule magiche
this is hte time
xp this is the time
deep
dopo
A very Christmas Happy
A very Happy Christmas
int i,a,j;
for (i=0;i<NUM;i++){
a=2;
j=j*a;
}
prima
prima
ddp
prima
dopo
int i,a,j;
a=2;
for (i=0;i<NUM;i++){
j=j*a;
}
dopo
170
StarShell
vi: Buffer con nome
Nomi da a alla z
Preceduti da ” (doppio apice)
Prima di comandi delete, yank, change, put
Esempi
”adw cancella parola a buffer a
”zy’c
copia da qui a linea marcata
con c e poni nel buffer z
”zp
paste dal buffer z
”a
”b
”c
”d
”z
”c3dd
”cp
171
StarShell
ed
– Editor orienato alla linea
– Pochi comandi
• singola lettera
• contesto di applicazione
– Ideale per l'inserimento in procedure shell
172
StarShell
ed - simboli di indirizzamento
. - linea corrente
$ - ultima linea del buffer
n – la linea n
- o ^ - linea precedente
-n o ^n – n linee prima della corrente
+ - linea seguente
+n – n linee dopo la corrente
, o % - tutto il buffer ( come 1,$ )
; - da linea corrente a fine buffer ( come .,$ )
/re/ - avanti a linea con espressione regolare re
?re? - indietro alla linea con re
'm – alla linea precedentemente marcata con m
173
StarShell
ed – comandi principali
– Singola lettera con modificatori, poi Enter
– Molti ammettono un range di linee a cui applicare il
comando, poste prima e senza spazi
• default tra parentesi
(.)a – append dopo linea corrente
(.)i – insert prima di linea corrente
. - termina insert o append
(.,.)d – elimina linea
(.,.)c – elimina linea e inserisci (cambia linea)
(.,.+1)j – unisce linea seguente a corrente
(.,.)m(.) - muove a linea indicata
(.,.)t(.) - copia a linea indicata
174
StarShell
ed – comandi con file
(1,$)w – salva il file corrente
(1,$)w file – scrive il buffer al file (rimpiazza)
il file corrente non cambia nome
(1,$)W file – append del buffer al file
q – quit; se il file è modificato, la ripetizione del q
abbandona senza salvare
Q – quit senza salvare
(1,$)wq file – salva ed esce
(1,$)w !comando – scrive il buffer allo standard input
del comando
($)r file – inserisce nel buffer il file
($)r !comando – inserisce nel buffer lo standard output
del comando
175
StarShell
ed – comandi con file
e file – edita il file; dopo il salvataggio
E file – quit senza salvare ed edita il file
e !comando – edita lo standard input del comando
f file – cambia nome al file corrente
(.,.)p – lista (stampa a video) le linee indicate
(.,.)l – lista le linee (--More-- se più schermi)
(.,.)n – lista con numeri di linea
176
StarShell
ed – comandi di sostituzione
– (.,.)s/re/nuova_stringa/ - rimpiazza
l'espressione regolare con la nuova stringa (prima
occorrenza sulla linea trovata)
– (.,.)s/re/nuova_stringa/n – nesima occorrenza
sulla linea trovata
– (.,.)s/re/nuova_stringa/g – tutte le occorrenze
sulla linea trovata
– (.,.)s – ripete l'ultima sostituzione
– u – undo dell'ultimo comando di modifica (singolo)
– (.,.)g/re/comando_ed – applica il comando alle
linee contenenti l'espressione regolare indicata
– (.,.)v/re/comando_ed - applica il comando alle
linee non contenenti re
177
StarShell
Espressioni Regolari - simboli
stringa – la stringa indicata
• non contiene caratteri riservati
c – ogni singolo carattere c non riservato
. - ogni singolo carattere
[xyz] – singolo carattere tra quelli indicati
[x-y] – singolo carattere nel range (Locale 'C')
[:classe:] - carattere della classe indicata
[:alnum:] [:alpha:] [:blank:] [:cntrl:]
[:digit:] [:graph:] [:lower:] [:print:]
[:punct:] [:space:] [:upper:] [:xdigit:]
[^:classe:] - carattere non nella classe indicata
^ - inizio linea
$ - fine linea
178
StarShell
Espressioni regolari - ripetitori
• Ripetitori, seguono il carattere
? - zero o una ripetizione
+ - una o più ripetizioni
* - zero o più ripetizioni
{n} – esattamente n ripetizioni
{n,} - n o più ripetizioni
{m,n} – tra m ed n ripetizioni
• Sottoespressioni
\(re\)
\n – numero della sottoespressione sulla linea
• p.es.: \([xy]\)\1 – xx oppure yy
179
StarShell
StarShell
180
StarShell

Documenti analoghi

Lord Shinva DiGiTAL::ALLiANCE C : 0 . N : F . E : D . E

Lord Shinva DiGiTAL::ALLiANCE C : 0 . N : F . E : D . E Se usate Netscape lo troverete nella directory del browser con l'innocuo nome di "cookies.txt". Non è altro che un semplice file di testo, come questo che state leggendo. Basterà eliminarlo dopo og...

Dettagli

Amministrazione di un Sistema UNIX in Rete

Amministrazione di un Sistema UNIX in Rete I sistemi UNIX.............................................................................................. 7

Dettagli