Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio17:esercitazionib:esercitazione4

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio17:esercitazionib:esercitazione4 [13/03/2017 alle 07:42 (8 anni fa)] Massimo Torquatiinformatica:sol:laboratorio17:esercitazionib:esercitazione4 [15/03/2017 alle 11:22 (8 anni fa)] (versione attuale) Massimo Torquati
Linea 1: Linea 1:
 ====== Esercitazione 4 ====== ====== Esercitazione 4 ======
  
-===== Esercizio 1: script1 ==========+====== Discussione su un Makefile ======
  
-Estrarre dal file ''/etc/passwd'' la lista di tutti gli utenti della macchina utilizzando il comando ''cut'' (vedere man 1 cut). Ordinare alfabeticamente la lista ottenuta utilizzando il comando ''sort'' (vedere man 1 sort).\\+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: 
 + 
 +<code> 
 +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) 
 +</code> 
 + 
 +====== 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:\\ 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." "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: script2 ==========+===== Esercizio 2 ==========
  
 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'':\\ 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'':\\
Linea 14: Linea 49:
 ===== Esercizio 3 ===== ===== Esercizio 3 =====
  
-Utilizzando il comando ''find'' stampare sullo standard output la lista di tutti i file contenuti nella directory corrente che hanno estensione ".sh"che sono stati modificati negli ultimi 30 minuti (Usare l'opzione -mmin di find -- vedi ''man 1 find'').+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 4 ===== ===== Esercizio 4 =====
  
-Scrivere uno script bash che dati come argomenti un nome di directory ed una parola da cercare, stampa la lista di tutti i nomi di file che contengono la parola data nella directory passata come argomento. +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). 
- +
-===== Esercizio 5 ===== +
- +
-Scrivere uno script bash che prende "k>=2" nomi di file di ingresso e appende i primi "k-1" files nel file passato come ultimo argomento (k-esimo).    +
- +
-===== Esercizio 6 ===== +
- +
-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''). +
  
  
informatica/sol/laboratorio17/esercitazionib/esercitazione4.1489390963.txt.gz · Ultima modifica: 13/03/2017 alle 07:42 (8 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki