Lavorare in ambiente UNIX Prompt dei comandi (shell) Pipe e filtri (I/O) Tips and tricks
Prompt <cmd> <opzioni> <parametri> ' ' (spazio) è il separatore standard Comando interno/esterno file eseguibile (PATH, 'which') Parametri: oggetto della funzione del programma Opzioni: modalità di funzionamento del programma si distinguono tramite il prefisso '-'
Attributi dei file Tipo Chi puo' fare cosa Quanti link esistono? Di chi e' Dimensione Quando e' stato creato/modificato Nome (anche piu' di uno)
Tipo? (comando 'file') Identificare il tipo di un file Info dal filesystem (vuoto, eseguibile, directory, etc.) Ad es. primo carattere dell'output di 'll' magic number, formati di file particolari che contengono info 'dichiarative', ad esempio eseguibili binari, etc. language, ricerca di parole chiave all'interno del file, ad esempio '#!/bin/bash' per gli script
Operazioni Quali operazioni possibili su un file/directory? - rwx r-- r-- - rw- r-- r-- - r-x r-- r-- Read Write Execute Suid, cambio ID durante l'esecuzione Sticky, il pgm resta in memoria
Chmod Cambiare l amaschera degli attributi 'ugoa +=- rwx' 'chmod a+r file' 'chmod go-rw file'
Chmod e numeri... 755!?!?!? r w x 4 2 1 755 = rwxr-xr-x
Quale inode? 'ls -i' Link 'ln' Link simbolici 'ln -s'
Touch Modifica i 'timestamp' dei file Usato anche per creare i file 'umask' maschera dei bit di default
Possesso 'chown user file' 'chgrp group file 'chown user:group file'
Info sul filesystem 'stat' 'df' 'du' Tutte le info sui file... Spazio libero Allocazione spazio
Redirezione L'output (stdout) di un comando può essere catturato (rediretto) su file 'll >elencofiles.txt' Anche i messaggi di errore (stderr) possono essere catturati a parte 'll >elencofiles.txt 2>errori.txt' Un comando può lavorare su un input (stdin) preconfezionato 'mail -s subject indirizzo < messaggiopreparato.txt'
Redirezione (log) Molti programmi scrivono i cosiddetti log, spesso vuol semplicemente dire che viene rediretto il loro output+errori su vari file (/var/log/*) Un trucco per tenere d'occhio continuativamente anche più file (es. di log) contemporaneamente è quello di usare 'tail -f' 'tail -f /var/log/mail*' Il comando tail, con quell'opzione, rimane in attesa di aggiornamenti del/i file
Pipe ' ' Uno dei punti forti di Unix Permette di combinare più programmi tra loro (in cascata) in modo da ottenere funzionalità complesse
More/less/cat I classici 'pagers' Visualizzano un file 'a video' (a parte 'cat') si fermano pagina per pagina (a parte 'cat') permettono ricerche, con '/'
Tac 'cat' al contrario Parte dal fondo
Rev Ribalta le righe di un file Ogni singola riga viene scritta al contrario
Head e tail Le prime 'n' righe di un file Le ultime 'n' righe di un file Combinandoli, la 'n'-esima riga di un file
Tr Traduce un carattere (o una classe) in un altro Riduce le sequenze di caratteri uguali (es. gli spazi) Elimina caratteri
Grep Filtra le righe secondo criteri -v -i (esempi, slide succ. per le regexp)
Regexp Espressioni regolari Servono a descrivere insiemi di stringhe Esempi: 't*' tutte le stringhe che iniziano per 't' '[!t]*' tutte le stringhe che NON iniziano per 't' '[a-z]???' tutte le stringhe che iniziano per un carattere minuscolo e che sono lunghe 4 caratteri
Cut Taglia campi/caratteri -f -c
Paste 'mescola' assieme due file Riga per riga da ognuno (una da uno e una dall'altro)
Wc Conta righe/parole/caratteri
Diff Confronta due file (o due directory) Elenca le differenze
Split Divide un (grosso) file in molti (piccoli) file
Sort Ordina Alfabeticamente Numericamente (-n) ascending/descending (-r) -k, scelgo il campo
Uniq Elimina righe duplicate in un file (ordinato)
Basename/dirname Utili negli script basename estrae il nome del file dirname Via path Via estensione (se richiesto, ma va specificata per esteso) estrae il pathname
Tee Duplica output Metafora del tubo a 'T' Si inserisce in una catena di pipe per avere anche un risultato intermedio cmd1 cmd2 tee intermedio1.txt cmd3 cmd4 cmd5 tee intermedio2.txt cmd6 > finale.txt
Find/locate Trova file all'interno del filesystem Find, sul filesystem reale Locate, in un db creato appositamente Piu' veloce, ma il db deve essere aggiornato ('updatedb') Find vuole: path di partenza criteri di 'find' azione da eseguire (dal semplice print all'esecuzione di un comando) (esempi!)
Sed Stream editor Effettua operazioni su uno stream che gli viene fornito in ingresso Ad esempio sostituzioni di parole vedere 'oneliners' # substitute (find & replace) "foo" with "bar" on each line sed 's/foo/bar/' # replaces only 1st instance in a line sed 's/foo/bar/4' # replaces only 4th instance in a line sed 's/foo/bar/g' # replaces ALL instances in a line
Awk (cenni) Vero e proprio linguaggio di creazione di filtri Si basa sul meccanismo pattern-action Gli script di awk contengono espressioni regolari che, quando riconosciute all'interno del testo, attivano azioni programmabili pattern { action statements } /disk/ { print $2, $1 } (stampa, al contrario, i primi due campi delle righe che contengono 'disk')