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