Indice
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).