====== Esercitazione 4 ======
Dove si sperimentano alcuni comandi di base bash.
===== Esercizio -1: Basics interazione utente =====
Seguire i lucidi della prima parte bash e provare i comandi negli esempi mostrati a lezione. Carcare di diminuire i tempi di battitura dei comandi sfruttando il meccanismo di history, il completamento (TAB) e l'editing di linea.
===== Esercizio 0: man, cat, grep, sort =====
Utilizzare ''cat'' per creare un file di nome ''lyrics'' che contiene la canzone del non compleanno di Alice nel Paese delle meraviglie:
Statistics prove, prove that you've one birthday,
one birthday ev'ry year.
But there are three hundred and sixty four
unbirthdays.
That is why we're gathered here to cheer.
A very merry unbirthday to you, to you.
A very merry unbirthday to you,
It's great to drink to someone and I guess that you will do.
A very merry unbirthday to you
con ''grep'' e ''sort'' selezionare tutte le linee che contengono esattamente la parola ''one'' (non come sottostringa di una parola data), ordinarle lessicograficamente e farle sampare sullo standard output (usare ''sort'').
Utilizzare le opzioni di ''grep'' (vedi ''man grep'') per stampare il numero di linea in cui e' stata trovata un'occorrenza come in:
1:Statistics prove, prove that you've one birthday
2:one birthday ev'ry year.
e poi sempre con ''grep'' stampare tutte le linee che non contengono la parola ''merry'' in ordine lessicografico case-unsensitive, cioe' :
But there are three hundred and sixty four
It's great to drink to someone and I guess that you will do.
one birthday ev'ry year.
Statistics prove, prove that you've one birthday,
That is why we're gathered here to cheer.
unbirthdays.
Approfondimenti:
* Usare ''fgrep'' invece di ''grep'' e confrontare il tempo impiegato dai due comandi in modalita' utente e kernel usando la ''time''.
* Controllare le chiamate di sistema effettuate dai vari comandi con ''strace''
===== Esercizio 1: Trasformismo =====
Trasformare il file ''lyrics'' dell'esercizio precedente nel file ''LYRICS'' in cui tutte le lettere minuscole sono state trasformate in lettere maiuscole.
===== Esercizio 2: Trovare i file non acceduti negli ultimi 30 giorni =====
Scrivere un pipeline di comandi che lista tutti i file che non sono stati acceduti negli ultimi 30 giorni nella gerarchia di directory radicata nella directory corrente. (Suggerimento: usare ''find'')
===== Esercizio 3: prettyPATH =====
Stampare su standard output tutte le directory in ''$PATH'' separate da newline.
===== Esercizio 4: Personalizzare il prompt =====
Personalizzare il prompt della shell in modo da stampare utente, tipi di shell, working directory etc.. (man bash, cercare PROMPTING)
===== Esercizio 5: Aliasing =====
Definire i seguenti alias per la propria shell:
* ''cp'' come alias di ''cp -i''
* ''mv'' come alias di ''mv -i''
* ''rm'' come alias di ''rm -i''
* ''cercaErimuovi'' che effettua la rimozione di tutti i file che terminano per ~ nella gerarchia di directory radicata nella directory corrente
* ''bye'' che effettua l'uscita dalla shell
Fare in modo che gli alias vengano registrati automaticamente ogni volta che una shell viene attivata.(Suggerimento: ''man bash'' cercare ''bashrc'')
===== Esercizio 6: ???? =====
Sapete interpretare il risultato del seguente comando?
ls -l /proc/$$/fd
===== Esercizio 7: Magic files and numbers =====
Utilizzare ''file'' per stabilire il tipo dei file che si trovano nella vostra home.
''file'' lavora controllando i magic numbers in ''/usr/share/file/magic'', esplorando questo file riuscite a ritrovare il tipo dei file visitati?
Approfondimenti: Come si potrebbe aggiungere un nuovo tipo riconoscibile da ''file''?