Transcript Slide - Politecnico di Torino
Comandi avanzati
Salvatore Campagna Email: [email protected]
Politecnico di Torino Dipartimento di Automatica e Informatica
Il comando find
Il comando find cerca file in una gerarchia di directory Sintassi: find
Il comando find
Le opzioni più importanti sono: ◦ -name
Il comando find
-links
Il comando find
◦ ◦ ◦ ◦ ◦ Esempi: ◦ find find –ls find /home –name ‘’test’’ find . –size +10k find /usr/bin –perm 444 –u alice find –type d ◦ find –maxdepth 1 –mindepth 1
Il comando find
L’opzione –exec permette di eseguire una certa azione su tutti i file selezionati da find ◦ ◦ Sintassi: find
comando argomenti
comando è un comando eseguito su ciascun file sono gli argomenti da passare al ◦ ‘{}’ viene sostituito da file selezionati in modo che il comando operi su di essi ◦ ; segnala la fine dei parametri per l’opzione exec
Il comando find
◦ ◦ Esempi ◦ find . -type f -exec file {} \; find . –perm 664 –exec chmod u+x ‘{ }’ \; find . –type f –name “*.bak” –exec mv ‘{ }’ backup/ \;
Gestione dei processi
Quando viene impartito un comando la shell lancia il processo che lo esegue e attende la sua terminazione E’ possibile avviare o fermare l’esecuzione di un processo e in più sospendere e riprendere Si possono eseguire più processi concorrenti lanciandoli in background Sintassi:
comando &
Gestione dei processi
I processi si possono sospendere con la combinazione CTRL-Z (sospendere non vuol dire terminare) Il comando il comando rendendolo il comando corrente fg [jobid] porta in foreground Il comando con ‘&’ bg [jobid] mette il comando in background come se fosse stato avviato
Gestione dei processi
shell comando comando & RUN foreground ctrl-z fg fg STOPPED bg RUN background
Gestione dei processi
jobs : elenca i job bg %
Makefile
Obiettivo : dato un insieme di file sorgente determinare se e quali file devono essere ricompilati per generare un file oggetto/exeguibile I makefile descrivono i legami tra file ( dipendenze ) e riportano i comandi da eseguire per aggiornare gli eseguibili Utilizza la data di ultima modifica per decidere se ricompilare un eseguibile
Makefile
Esempio: 1.
main.o: main.c main.h
gcc –c main.c –o main.o
2.
main.exe: main.o
gcc main.o –o main.exe
3.
clean:
rm –rf *.o $(EXEC)
Makefile
E’possibile dichiarare variabili ◦ ◦ Esempi: ◦ CC=gcc ◦ CFLAGS=-Wall SRCS=main.c mylib.c
HEADERS=main.h mylib.h
E scrivere poi: main.exe: $(SRCS) $(HEADERS)
$(CC) $(CFLAGS) $(SRCS) –o main.exe
Makefile
Se il file si chiama GNUMakefile o makefile oppure Makefile basta invocare make Altriemnti make –f
Occupazione di spazio su disco
I comandi df e spazio su disco du permettono di ottenere informazioni riguardo l’occupazione di Spazio libero: df [-k] [disco] ◦ -k: spazio in Kbyte ◦ ◦ Spazio occupato: du [-aks]
Cut
Cut divide ogni riga di un file in più campi cut [opzioni] [file] Opzioni utili ◦ -f num : specifica il numero di campo da scrivere su standard output ◦ -d delim : usa il delimitatore specificato per separare i vari campi Esempio: cut –f2 –d:
Uniq
◦ ◦ ◦ ◦ Elimina occorrenze adiacenti e ripetute di una riga di file Senza opzioni le righe ripetute vengono «collassate» in una sola riga uniq [opzioni] [file] Opzioni utili: ◦ -c: precede ogni riga col numero di occorrenze -d: visualizza solo righe ripetute -f num: evita il confronto dei primi num campi -i: ignora maiuscole e minuscole -u: visualizza solo righe uniche
Sort
Visualizza il risultato dell’ordinamento dei file passati come argomento sort [opzioni] [file] ◦ ◦ ◦ ◦ ◦ ◦ Opzioni utili: ◦ -d : ordinamento ‘dizionario’ (considera solo spazi e caratteri alfanumerici) -f : ignora maiuscole e minuscole -M : ordinamento mensile -n : ordinamento numerico -R : ordinamento random -r : inverte l’ordinamento -kPOS1,POS2 : ordina in base al campo individuato da POS1 e POS2 ◦ -d delim : specifica il separatore di campo
Sort
Esempio: ◦ sort –k3 –d: -r –M testfile.txt
◦ divide ogni riga del file testfile.txt in campi separati da ‘:’ e opera un ordinamento menisle (-M) invertito (-r) sul campo numero 3 (-k=3)
Espressioni regolari
Utilizzate per individuare testo con un certo criterio Esempio: tutte le righe che comniciano con un certo carattere o che contengono una certa parola Utilizzano dei caratteri speciali per individuare il testo
Espressioni regolari
◦ ◦ ◦ Caratteri speciali ◦ ‘^’ match dell’inizio di una riga di testo ‘$’ match dellla fine di una riga di testo ‘.’ match di un singolo carattere (qualsiasi) ‘*’ match zero o più occorrenze del carattere precedente ◦ ‘[]’ match di tutti i caratteri al suo interno
Espressioni regolari
Si specificano tra // ◦ ◦ Esempi: ◦ /./: match righe con almeno un carattere ◦ /a.*b/: match di ‘ab’, ‘acb’, ‘abdfb’, ecc...
◦ /^#/: match righe che cominciano con ‘#’ ◦ /} *$/: match delle righe che terminano con una parentesi seguita da zero o più spazi ◦ /[a-z]*/: match di una parola con caratteri minuscoli /[Ss]istemi/: match di ‘Sistemi’ oppure ‘sistemi’ /[1-9][0-9]*/: match di un numero decimale
Grep
Grep visualizza le righe di un file che rispettano (match) un certo formato (pattern) grep [opzioni] pattern [file] Il pattern può essere una espressione regolare
Grep
Opzioni utili ◦ -c : stampa il numero di righe con un match ◦ -f file : legge il pattern da cercare da file ◦ -h : elimina il nome del file in cui si ha il match ◦ -H : visualizza il nome del file per ogni match ◦ -i : ignora maiuscole/minuscole ◦ -n : precedi ogni linea di output con il numero di riga in cui si ha il match ◦ -v : seleziona le righe che NON soddisfano al ricerca ◦ -r : opera ricorsivamente su tutti i file
Scripting
Uno script è costituito da un file contenente un insieme di comandi La prima riga ha un formato particolare e istruisce la shell sull’interprete da utilizzare per eseguire i comandi ◦ #!/bin/bash ◦ #!/bin/csh ◦ ecc...
Si deve impostare il permesso di esecuzione
Scripting – If e test
Il costrutto if/then/else test l’exit status di un comando Formato If [ condizione-vera ] then
Scripting – If e test
Le parentesi [ ] (sinonimo del comando test) considerano il comando un confronto o un test su file Esempio If [ $var = ‘’user’’] then echo ‘’Alice è un utente del sistema’’ fi
Scripting – If e test
If [ -e file ]: testa l’esistenza di un file If [ -s file ]: testa se un file ha dimensione maggiore di zero If [ -d directory ]: testa l’esistenza di una directory If [ -h link ]: testa se link è un link
Scripting – If e test
◦ ◦ ◦ ◦ ◦ ◦ ◦ Per confrontare variabili con valori interi si usano speciali operatori: ◦ If [ $var –eq 0 ]: test var == 0 If [ $var –lt 0 ]: test var < 0 If [ $var –gt 0 ]: test var > 0 If [ $var –le ]: test var <= 0 If [ $var –ge ]: test var >= 0 If [ $user == If [ $user != ‘’alice’’ ]: test uguaglianza tra stringhe ‘’alice’’ ]: test disuguaglianza If [ ‘’a’’ > alfabetica ‘’b’’ ] oppure [ ‘’a’’ < ‘’b’’ ]: test precedenza ◦ If [ -n $user ]: test user non è null
Scripting – If e test
Si possono concatenare i test con operatori logici per eseguire più test -a: and -o: or If [ -e file –a –s file ] then ...
fi Esempio: il file esiste e ha dimensione maggiore di zero
Scripting – Ciclo for
Ciclo for for
arg
in
list do
Esempio: for name do in ‘’alice’’ ‘’bob’’ ‘’mike’’ echo $name done
Scripting – Ciclo while
while [ condizione ] do Il ciclo while
Scripting
Esempio 1 directory : si realizzi uno script che dati in input una o più directory verifichi l’esistenza di link orfani in ciascuna delle Esempio 2 : si realizzi uno script che visualizzi su standard output l’elenco di tutti gli utenti esistenti sul sistema
Sed
Sed è un filtro (stream editor) Opera trasformazioni sul testo letto da stdin riga per riga e scrive l’output su stdout Sintassi: sed [opzioni] ‘[comandi]’ [file] Opzioni utili: ◦ -f