Sei sulla pagina 1di 4

Lezione 5b.

Esercizi pratici
Questa lezione raccoglie alcuni esercizi pratici che dovrebbero essere svolti da chi non ha esperienze con
i sistemi operativi Unix e simili. Sono pensati per essere svolti su un elaboratore isolato, nel senso che
non vengono trattate le funzionalit di rete.
Gli esempi sono mostrati in modo da essere abbastanza vicini all'interazione che avviene effettivamente
tra l'utente e il sistema operativo.

5b.1. Directory, percorsi e contenuti


Prima di poter gestire i file occorre saper amministrare i loro contenitori: le directory. Questo paragrafo
descrive i programmi attraverso i quali si possono gestire le directory e analizzare il loro contenuto. La
tabella 5b.1 elenca i programmi a cui si accenna in questo paragrafo.
Programma Descrizione Mkdir Crea una directory. Rmdir Elimina una directory vuota. Pwd Emette il
percorso della directory corrente. ls Elenca il contenuto di una o pi directory. Dir Elenca il contenuto di
una o pi directory.File Determina il tipo di file. DfCalcola lo spazio.Du Calcola lo spazio utilizzato da una
serie di directory e sottodirectory. Which Determina quale eseguibile venga messo in esecuzione in modo
predeterminato. Whereis Cerca di determinare la collocazione di un programma. Tabella 5b.1. Riepilogo
dei programmi per la gestione delle directory, dei percorsi e del loro contenuto

5b.2 Propriet, permessi, attributi, utenti


Le informazioni amministrative su file e directory sono conservate nel file system che si utilizza. In questo
senso, le informazioni gestite e gestibili dipendono dalle possibilit del sistema operativo e dal tipo di file
system a disposizione.
La tabella 5b.2 elenca i programmi e i comandi a cui si accenna in questo paragrafo.
Nome Descrizione Chown Cambia la propriet (appartenenza) di file e directory. Chgrp Cambia il gruppo
proprietario di file e directory. Umask Comando di shell per cambiare la modalit predefinita di creazione
dei file. Chmod Cambia la modalit di file e directory. UserdelCancella un utenteUseraddAggiunge un
utentePasswdCambia la password di un utenteSuCambia lutente correnteWhoamiEmette lutente
corrente WhoEmette la lista degli untenti attualmente connessiTouch Cambia la data e l'orario di accesso
o di modifica. Tabella 5b.2 Riepilogo dei programmi e dei comandi per la gestione delle propriet, dei
permessi, degli attributi di file e directory e della gestione utenti.

5b.3 Copia, collegamento, spostamento e


cancellazione
Quelle indicate nel titolo sono fasi fondamentali dell'amministrazione dei dati. Nello stesso modo sono
anche operazioni molto delicate. La tabella 5b.3 elenca i programmi a cui si accenna in questo paragrafo.
Programma Descrizione Cp Copia. Ln Crea dei collegamenti. Mv Sposta o rinomina i file. Rm Cancella.
Tabella 5b.3. Riepilogo dei programmi per la copia, la creazione di collegamenti, lo spostamento e la
cancellazione di file e directory.

5b.4 Archiviazione e compressione


L'archiviazione e la compressione sono le fasi attraverso le quali si realizzano delle copie di sicurezza,
oppure si preparano i dati prima di una trasmissione. La tabella 5b.4 elenca i programmi a cui si accenna
in questo paragrafo.
Programma Descrizione Cpio Archivia e recupera. Tar Archivia e recupera. Gzip Comprime e

decomprime. Bzip2 Comprime e decomprime. Tabella 5b.4. Riepilogo dei programmi per l'archiviazione e
la compressione di file e directory.

5b.5 Comandi vari


La tabella 5b.5 elenca i programmi a cui si accenna in questo paragrafo.
Programma Descrizione ShutdownSpegne il sistema InitInizializzazione del sistemaExit Esce dalla
shellMan Manuale di un comandoCatEmette il contenuto di un fileHeadVisualizza la testa di un
fileTailVisualizza la coda di un fileLessPermette le paginazioniPs Visualizza lo stato dei
processiTopVisualizza lo stato dei processiKillInvia un segnale a un processoPidofPid di un
processoFgForegroundBgBackgroundJobsElenca i jobs attiviMount Monta un file systemUmount Smonta
un file systemEchoVisualizza un litteral o una variabile ExportEsporta una variabileMc Midnight
commanderTabella 5b.5. Riepilogo dei programmi per l'archiviazione e la compressione di file e directory.

5b.6 Ricerche
Esistono due tipi di ricerche possibili: quelle all'interno dei file per identificare delle stringhe che
corrispondono a un modello e quelle fatte all'interno di un file system alla ricerca di file o directory in base
alle loro caratteristiche (nome, date e altri attributi).
Per questo si utilizzano due programmi di servizio fondamentali: grep per le ricerche di stringhe e find per
la ricerca dei file.

5b.6.1 Grep GNU


Il programma Grep esegue una ricerca all'interno dei file in base a un modello espresso normalmente in
forma di espressione regolare.
Storicamente sono esistite tre versioni di questo programma: grep, egrep e fgrep, ognuna specializzata in
un tipo di ricerca. Attualmente, Grep GNU, corrispondente a quello che si utilizza normalmente nei sistemi
GNU, comprende tutte queste funzionalit. In alcuni casi, per mantenere la compatibilit con il passato,
possono trovarsi distribuzioni che mettono a disposizione anche i programmi egrep e fgrep in forma
originale.

5b.6.1.3 egrep
Alcune distribuzioni GNU forniscono un programma egrep alternativo, invece di utilizzare il solito
collegamento allo stesso grep. In tal caso, per quanto riguarda l'interpretazione delle espressioni regolari
(estese), la parentesi graffa aperta che inizia la delimitazione di un contenitore per rappresentare un
operatore di ripetizione, viene indicata come \{.

5b.6.1.4 Esempi
$ grep -F -e ciao -i -n *
Cerca all'interno di tutti i file contenuti nella directory corrente la corrispondenza della parola ciao senza
considerare la differenza tra le lettere maiuscole e quelle minuscole. Visualizza il numero e il contenuto
delle righe che contengono la parola cercata.
$ grep -E -e "scal[oa]" elenco
Cerca all'interno del file elenco le righe contenenti la parola scalo o scala.
$ grep -E -e \`.*\' elenco
Questo un caso di ricerca particolare in cui si vogliono cercare le righe in cui appare qualcosa racchiuso
tra apici singoli, nel modo `...'. Si immagina per di utilizzare la shell Bash con la quale necessario
proteggere gli apici da un altro tipo di interpretazione. In questo caso la shell fornisce a grep solo la
stringa `.*'.
$ grep -E -e "\`.*\'" elenco
Questo esempio deriva dal precedente. Anche in questo caso si suppone di utilizzare la shell Bash, ma
questa volta viene fornita a grep la stringa `.*\' che fortunatamente viene interpretata ugualmente da grep
nel modo corretto.

5b.6.1.5 zgrep
zgrep [opzioni ] modello [file ...]
zgrep un programma aggiuntivo che permette di eseguire delle ricerche all'interno di file compressi (con
compress, oppure con gzip). zgrep si occupa semplicemente di decomprimere i file, se necessario, prima
di passarli a grep. In questo senso, considerato anche che le opzioni e il modello sono passati tali e quali
a grep, la sintassi la stessa di quel programma.
Ricapitolando, zgrep pu essere usato indifferentemente con file normali o compressi, senza che l'utente
debba preoccuparsi di questo.

5b.6.2 find
Il programma find esegue una ricerca, all'interno di uno o pi percorsi, per i file che soddisfano delle
condizioni determinate, legate alla loro apparenza esterna e non al loro contenuto. Per ogni file o directory
trovati, pu essere eseguito un comando (programma, script o altro) che a sua volta pu svolgere delle
operazioni su di essi.
Questa sezione non descrive tutte le funzionalit di find. Una volta appresi i rudimenti del suo
funzionamento, conviene consultare find.info oppure find (1).
Esempi
$ find . -xdev -print
Elenca tutti i file e le directory a partire dalla posizione corrente restando nell'ambito del file system di
partenza.
$ find / -name "lib*" print

5b.7 Scansione di parole


Capita spesso la necessit di scandire un elenco di parole allo scopo di eseguire uno o pi comandi
nell'ambito di tale scansione, utilizzando le parole stesse come argomenti dei comandi. Per fare un
esempio di cosa si intende con questo, si pensi a un elenco di nomi di file, a partire dal quale si vuole
ottenere l'esecuzione di un comando, una volta per ognuno di questi nomi. Questo tipo di scansione si
esegue facilmente realizzando dei piccoli programmi, in forma di script, oppure si utilizza il programma
xargs quando ci che si intende fare non troppo complesso.

5b.7.1 Il ciclo for di una shell Bourne


Il comando for di una shell Bourne (tipicamente Bash) scandisce una serie di elementi, in corrispondenza
dei quali esegue una lista di comandi.
for variabile in valore ...
do
lista_di_comandi
done
L'elenco di parole che segue in viene espanso, generando una lista di elementi. La variabile indicata dopo
for viene posta ogni volta al valore di ciascun elemento di questa lista e la lista di comandi che segue do
viene eseguita ogni volta di conseguenza.
Per esempio, il comando seguente aggiunge a ogni file l'estensione .txt, senza nemmeno bisogno di
realizzare uno script:
$ for a in * ; do mv $a $a.txt ; done
Volendo vedere meglio questo esempio in uno script, basta trasformarlo nel modo seguente:
#!/bin/sh
for a in *
do
mv $a $a.txt
done
L'elenco di parole che segue in, pu anche essere contenuto in una variabile di ambiente. Per esempio, si
osservi lo script seguente, che in pratica svolge la stessa operazione gi descritta, ma raccogliendo prima
l'elenco dei nomi attraverso il comando ls:

#!/bin/sh
elenco=`ls`
for a in $elenco
do
mv $a $a.txt
done

Potrebbero piacerti anche