Gen 03 2008
Manule su Linux Capitolo 17 Esercitazione

Possediamo ormai tutti i fondamenti per fare qualche esercizio interessante, e di sicuro molto pratico.
Esercizio 1: Dalla shell, il comando
touch nomefile
crea un file di nome nomefile nella directory in cui ci si trova. Dopo aver creato all’interno della directory /tmp una nuova directory di nome ‘corso’, creare all’interno di quest’ultima i files con i seguenti
nomi:
• uno
• due
• tre
• trentatre
• trecentotrentatre
e le directory chiamate:
• quattrotto
• quarantotto
con il comando ls ed il pattern matching, visualizzate:
1. tutti i files nel cui nome compaia la lettera ‘r’ in qualsiasi posizione
2. tutti i files il cui nome cominci per ‘tre’
3. tutti i files che contengono la parola ‘tre’ almeno due volte volte nel nome
Esercizio 2: Essendo il comando da shell per copiare files il seguente:
cp files_da_copiare_separati_da_spazio directory_destinazione
ed essendo il comando per spostare files:
mv files_da_spostare_separati_da_spazio directory_destinazione
tra tutti i files creati nel precedente esercizio copiate all’interno della directory ‘quattrotto’ tutti i files che contengono almeno una lettera ‘u’ nel nome, e spostate nella directory ‘quarantotto’ tutti i files il cui nome contiene esattamente tre lettere.
Esercizio 3: Il comando ‘ls –R’ restituisce il listato dei file in una directory, comprendendo anche i files contenuti nelle sottodirectory.
Riempire il file ‘tre’ che avete creato nel primo esercizio (e spostato nel secondo) con il listato ricorsivo (a questo si riferisce la R del comando) della directory ‘/usr/share’ (ignorando eventuali messaggi d’errore restituiti).
Esercizio 4: Il comando ‘more nomefile’ per leggere il contenuto di un file, e ‘grep stringa_da_cercare’ per trovare un pattern all’interno di un testo, trovare tutti i nomi di file, contenuti nel file ‘tre’ che contengono la sottostringa ‘jo’.
Esercizio 5: Ricordando che il comando ‘sort’ mette in ordine dei testi ricevuti in input, ripetete l’esercizio precedente facendovi restituire la lista dei files il cui nome contenga ‘jo’ in ordine alfabetico.
Esercizio 6: Da ambiente grafico, aprite il file ‘tre’ che avete manipolato da shell negli scorsi esercizi, con emacs (ovviamente senza usare la shell).
Esercizio 7: Dopo aver configurato il cliente di posta elettronica Evolution in modo da poter ricevere e spedire emails, create una cartella di nome “prova” all’interno della cartella “Posta in arrivo” (dopo averla trovata!). Create quindi un filtro che vi ridiriga tutte le lettere che contengono nel campo “oggetto” la parola “linux”. Provate il filtro inviando a voi stessi un’email con oggetto “Corso linux”, quindi cancellate sia il filtro che la cartella “prova”.
Alessandro
Soluzioni
Esercizio 1: Per quanto detto nelle lezioni riguardanti la shell, è possibile creare i files e le directory in due modi: con nome relativo o assoluto. Nel primo caso ci spostiamo in /tmp con il comando:
cd /tmp
e quindi creiamo la directory ‘corso’ ed i files nel seguente modo:
mkdir corso
cd corso
touch uno
touch due
touch tre
touch trentatre
touch trecentotrentatre
e le directory con:
mkdir quattrotto
mkdir quarantotto
Con il secondo metodo, senza digitare il commando cd, avremmo potuto creare i file e la directory con i comandi:
mkdir /tmp/corso
touch /tmp/corso/uno
touch /tmp/corso/due
…..
D’ora in avanti assumerò che vengano usati nomi relativi, in quanto normalmente è più comodo scrivere nomi più brevi. Tutto però può essere fatto nell’altro modo precedendo il nome dei files con “/tmp/corso/”.
Per trovare i nomi di file contenenti una ‘r’, è sufficiente digitare:
ls *r*
cioè cercare i files il cui nome inizi con una sequenza (eventualmente vuota) di caratteri qualsiasi, contenga una ‘r’ e finisca con una sequenza (eventualmente vuota) di altri caratteri.
Il comando vi dovrebbe restituire:
tre trentatre trecentotrentatre
quarantotto
quattrotto
perché effettivamente uno e due (gli unici esclusi) non contengono nessuna ‘r’.
Trovare i files il cui nome inizi per ‘tre’ è altrettanto facile:
ls tre*
che restituisce
tre trecentotrentatre trentatre
e si trovano i nomi che contengono almeno due parole ‘tre’ nel nome con:
ls *tre*tre*
Gli asterischi iniziali e finali servono per considerare anche i files i cui nomi non iniziano e terminano per tre (immaginatevi qualcosa tipo uno.tre.due.tre.quattro).
Esercizio 2: La copia si fa con il comando
cp *u* quattrotto
che restituisce due messaggi di avvertimento, in quanto le directory non vengono copiate se non si specifica il parametro –r.
A questo punto, muovere i files richiesti è molto simile:
mv ??? quarantotto
Facendo un listato della directory quattrotto, dovrebbe apparirvi:
ls quattrotto
due uno
cioè i files con una ‘u’ nel nome, e guardando in quarantotto:
ls quarantotto
due tre uno
cioè i nomi con tre lettere. I files uno e due sono ora presenti in due directory, perché la prima volta sono stati copiati, e non spostati!
Esercizio 3: Il file ‘tre’ è ora contenuto nella directory ‘quarantotto’. E’ possibile portarci in tale directory e riempire il file nel seguente modo:
cd quarantotto
ls –R /usr/share > tre
oppure, alternativamente, fare tutto senza spostarsi nel seguente modo:
ls –R /usr/share > quarantotto/tre
Ci sono ovviamente altri modi possibili, ma questi sono i più comodi.
Spero che nella scrittura dei comandi da shell vi stiate aiutando con il tasto [Tab], altrimenti scrivere questi lunghi nomi interamente più volte potrebbe essere davvero noioso!
Esercizio 4: E’ sufficiente usare una pipe per combinare due programmi:
more tre | grep jo
per avere la lista desiderata.
Esercizio 5: Basta unire un ulteriore comando alla catena:
more tre | grep jo | sort
Esercizio 6: Questo esercizio è per capire che in fondo l’ambiente grafico ci permette di fare quasi le stesse cose della shell (per un utente esperto questo è falso, vista la flessibilità della shell).
Da GNOME (ma da KDE è pressoché lo stesso procedimento), fate un doppio click sull’icona raffigurante la casetta, aprendo la vostra home directory (Figura 1), quindi portatevi sulla directory / premendo sul tasto “freccina verso l’alto” (corrispondente al comando cd ..), due volte, essendo la directory da cui partite /home/nomeutente.
Figura

Figura 1: home directory
Qui entrate prima in ‘tmp’, quindi in ‘corso’ ed infine in ‘quarantotto’ (Figura 2).
E’ sufficiente premere con il tasto destro del mouse sul file ‘tre’, per avere un menù, dal quale si deve scegliere “Apri con” -> “GNU Emacs”.
Ed il gioco è fatto.

Figura 2: Nella directory giusta!
Esercizio 7: Prima di tutto bisogna trovare la struttura delle cartelle che contengono la posta. Se capitate sul sommario (la finestra con le previsioni del tempo e cose simili), premete sul bottone “Posta in arrivo” per arrivare ad una situazione simile a quella di Figura 3.
Sotto il menù con le icone “Nuovo messaggio”, “Invia/Ricevi”, etc, c’è una barra grigia con la dicitura “Posta in arrivo” ed accanto un triangolino con la punta rivolta verso il basso. Premete su questa dicitura, e dovrebbe apparire la struttura delle directory (Figura 4). Per fissarla, è sufficiente premere sul cacciavitino rappresentato accanto alla dicitura “Cartelle”.
Premendo con il tasto destro del mouse sopra la cartella “Posta in arrivo”, bisogna scegliere “Crea nuova cartella” dal menù che appare. Date il nome “prova” alla nuova cartella, ed avete completato la prima parte dell’esercizio.
Per creare un filtro, è sufficiente andare nel menù “strumenti” -> “Filtri”, e premere sul tasto “Aggiungi”. Nella finestra che appare (Figura 5), bisogna decidere il criterio nella parte alta (Oggetto Contiene linux), e la destinazione nella parte bassa (prova).
Mandatevi un’email per vedere che tutto sia giusto: se lo è, al lettera dovrebbe entrare direttamente nella cartella prova!

Figura 3: Evolution alla partenza

Figura 4: Cartelle in vista

Figura 5: Creazione di un filtro
- Manuale su Linux Capitolo 23 Esercitazione
- Apache Web Server - Lezione 6 Gestione dei file index
- Manuale su Linux Capitolo 11 La shell (1)
- Apache Web Server - Lezione 5 Creazione del nostro primo sito
- Manuale su Linux Capitolo 23 Esercitazione
- Manuale su Linux Capitolo 12 La shell (2)
- FExplorer 1.16
- Manuale su Linux Capitolo 22 Voglio passare ad una versione di Linux più recente
- Manuale su Linux Capitolo 25 Internet
- Apache Web Server - Lezione 4 Configurazione di base del file config
- Manuali su Linux Capitolo 28 Peer to Peer (eredi di Napster)
- Apache Web Server - Lezione 7 Gestione di file index virtuali
- Manuale su Licnux Capitolo 18 Manca un programma importante
- Manuale su Linux Capitolo 21 Come fare a leggere questi dati generati da un programma windows?
- Manuale su Linux Capitolo 14 Programmi di sistema

