Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio19:esercitazionib:esercitazione5

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.

informatica/sol/laboratorio19/esercitazionib/esercitazione5.txt · Ultima modifica: 18/03/2019 alle 11:30 (5 anni fa) da Massimo Torquati