Slide - Politecnico di Torino

Download Report

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 ◦ è un insieme di opzioni , test azioni e ◦ Le opzioni hanno effetto su tutti i file globalmente ◦ I test e le azioni sono eseguiti file per file

Il comando find

 Le opzioni più importanti sono: ◦ -name : seleziona i file con nome che soddisfa il pattern specificato ◦ -perm : seleziona i file con determinati permessi (rappresentazione ottale) ◦ -size <[+|-]n[ckM]> : selziona i file di dimensione n ◦ -type : seleziona i file in base al tipo. type=d directory, type=f file, type=l link ◦ -user : seleziona i file dell’utente specificato

Il comando find

    -links : seleziona i file con n link -ls : produce un formato simile al formato esteso di ls -maxdepth : scende ricorsivamente nelle directory al massimo fino al livello n (rispetto al corrente livello) -mindepth : scende ricorsivamente nelle directory almeno fino al livello n (rispetto al corrente)

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

-exec comando argomenti ‘{ }’ \;

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 % : porta in background il job identificato da jobid fg % : porta in foreground il job identificato da jobid kill -9 : invia un segnale che termina il processo con pid specificato ps : elenca i processi con i relativi dettagli

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 Si può specificare un target lanciando make ◦ Esempio: make main.o per eseguire solamente il comando associato al target main.o

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] ◦ -a : occupazione per file -s : solo occupazione totale -k : occupazione in Kbyte

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 else fi

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 done

Esempio: for name do in ‘’alice’’ ‘’bob’’ ‘’mike’’ echo $name done

Scripting – Ciclo while

 while [ condizione ] do Il ciclo while done  do Esempio var=0 while [ $var –lt 10 ] echo $var done

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