Esercitazione 5
Discussione su Makefile
Vogliamo scrivere un Makefile in grado di compilare tutti i sorgenti .c
che si trovano nella directory dove si trova il Makefile, personalizzando la compilazione dei file eseguibili:
CC = gcc -std=c99 # quale compilatore usare per compilare il codice CFLAGS = -g -Wall # flags passati al compilatore per debugging e warning etc.. OPTFLAGS= -O3 # flags passati al compilatore per ottimizzazione del codice INCLUDES= -I. # path dove si trovano gli include (non di sistema) LDFLAGS = -L. # path dove so trovano le librerie LIBS = # vanno messe qui le librerie da linkare SOURCES=$(wildcard *.c) # considera tutti i file .c nella directory BINS=$(SOURCES:.c=) # rimuove il suffisso .c dalla lista SOURCES .PHONY: all clean cleanall # personalizziamo la generazione dell'eseguibile da un .c utilizzando una Pattern Rule # Pattern Rules documentation: # https://www.gnu.org/software/make/manual/html_node/Pattern-Rules.html %: %.c $(CC) $(CFLAGS) $(INCLUDES) $(OPTFLAGS) -o $@ $< $(LDFLAGS) $(LIBS) # prima regola contenente il target all: $(BINS) clean: \rm -f *~ cleanall: clean \rm -f $(BINS)
Bash scripting
Esercizio 1
Estrarre dal file /etc/passwd
la lista di tutti gli utenti della macchina utilizzando il comando cut
(vedere slide su introduzione bash e manuale di cut
). Ordinare alfabeticamente la lista ottenuta utilizzando il comando sort
(vedere man 1 sort).
NB: fare attenzione al seguente messaggio di warning contenuto nel manuale del comando sort:
“The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.”
Esercizio 2
Scrivere uno script bash che dati come argomenti un nome di directory una parola ed un numero N
, stampa la lista di tutti i nomi di file contenuti nella directory che sono stati modificati negli ultimi N
minuti e che contengono la parola passata come secondo argomento.
Per cercare nella directory passata come argomento usare il comando find
, per trovare i file modificati meno di N minuti fa utilizzare l'opzione '-mmin' di find – leggere il manuale man 1 find
.
Esercizio 3
Scrivere uno script bash che prende come argomento un nome di directory, esegue il controllo che la directory esista e sia leggibile (opzione '-d' e '-r' del comando 'if') e restituisce un file in formato 'nodedirectory.tar.gz' contenente l'archivio compresso della directory passata come argomento.