Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio18:esercitazionib:esercitazione4

Esercitazione 4

Discussione su un 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 usare il comando find, per trovare i file modificati meno di N minuti fa utilizzare l'opzione -mmin di find – vedi man 1 find).

Esercizio 3

Scrivere uno script Bash che genera N numeri casuali compresi tra 0 ed M. N ed M sono due argomenti dello script (M è minore di 32767). Per generare numeri casuali, utilizzare la funzione $RANDOM:
$RANDOM è una funzione interna di Bash che restituisce un intero pseudocasuale nell'intervallo 0 - 32767.

Esercizio 4

Scrivere uno script bash che prende in input un nome di file testuale e stampa sullo standard output il numero di parole contenute nel file (Suggerimento, usare l'opzione -a del builtin read. Per accedere al manuale: man bash, quindi cercare – si cerca dando il comando / – “SHELL BUILTIN COMMANDS” quindi scorrere fino a trovare il builtin read).

informatica/sol/laboratorio18/esercitazionib/esercitazione4.txt · Ultima modifica: 13/03/2018 alle 07:41 (6 anni fa) da Massimo Torquati