sistemare formattazione
(unix base - utente - “avanzato” shell programming)
macchina virtuale (qemu) boot
login master, nopasswd
Argomenti che toccheremo:
- shell e prompt - comandi piu' utilizzati - filtri - shell programming - vi - info architetturale (filesystem, processi, etc.)
Il prompt questo sconosciuto
- sostituzione - tokenizzazione - esecuzione: prendo il primo token e lo tratto come comando
"lo tratto come comando" = lo so fare io o c'e' un file... se e' un file: deve essere eseguibile, e "trovabile" (elenco dir = variabile PATH)
Filesystem gerarchico, single root (”/”), mounted info su un file? !!!inode!!! inum, link
Permessi:
User Group Other
- rwx rwx rwx … Pippo
421 421 421
esempi: - r– r– r– … Pippo
4 4 4
- rw- r– r– … Pippo
42 4 4 6 4 4
- r-x rwx rw- minnie fattoria … Pippo
4 1 421 42 5 7 6
'chmod'
due forme: numerica e simbolica
777 = rwxrwxrwx 644 = rw-r--r-- 755 = rwxr-xr-x 555 = r-xr-xr-x 222 = -w--w--w- 600 = rw-------
u+x,g+r,o=r a+r go=r ugo=r a=r g=x,o-r
umask
777 = 022 ”+” 644
022 ⇒ 755 (ma la “x” viene ignorata) 022 ⇒ 755 ”-” 111
Tab inode: (1)[nlink=2, data, data, dim, owner, etc…] (2)[nlink=0, data, data, dim, owner, etc…] (3)[nlink=1, data, data, dim, owner, etc…] (…)[data, data, dim, owner, etc…]
Directory: Pippo, 1 Pluto, 3 Paperino, 1
Comandi per file e directory
visualizzare - ls - less/more
creazione - vi - touch (ma come si fa a farlo saltar fuori dal man!?) - mkdir - link
distruzione - rm
spostamento - mv
ridenominazione - mv
“zippare” - tar - gzip - bzip2
copiare - cp - (dd)
modificare attributi - chmod - chown
13 giugno
metacaratteri (Substitution, Expansion) |!"£$%&/()=?^ *[] # <>;:_-,.
File expansion
? un singolo carattere
~ home directory []range/set caratteri
p* o???txt ~/*txt [A-Z]*txt [abcd]???.doc *o .*o
Variable Expansion
$
${}
comando 'let'
comando 'bc'
variabile=valore echo $variabile
ma e' una copia!!!
Quoting (comunicare alla shell di ignorare) " " (quoting parziale) ' ' (quoting totale) \
Redirezione
stdout > 1> (distruttivo) >> 1>> (append) stderr 2> (distruttivo) 2>> (append) stdin < << HERE document
cmd 2>&1 > file
Concatenazione (piping)
cmd1 | cmd2 | cmd3 | ...
condizioni: - che cmdX (con X>=2) lavori da stdin - che i dati passati siano "coerenti"
Intro filtri
cat, more, less tee head, tail cut, grep
tr col rev tac
sort uniq
paste
xargs (filtro sghembo)
cmd1 | xargs du
ESEMPIO
spazio occupato da un utente specifico
find / -user atrent -type f -exec du -b {} \; 2>/dev/null | grep -v /proc/ | cut -f1 | xargs -L 1 echo -n + |cut -c2- |bc
Parentesi su find!!!
serve a cercare file nel filesystem
output: elenco di nomi di file (con pathname)
find PATHPARTENZA CRITERI...
find / -name 'p*'
esegue comando:
find PATHPARTENZA CRITERI... -exec CMD
find / -name 'p*' -exec du {} \;