====== Esercitazione 4 ====== Dove si sperimentano alcuni comandi di base bash. ===== Esercizio -1: Basics interazione utente ===== Seguire i lucidi {{:lcs:lcs08:esercitazioni:asolab_bash1.0.pdf| bash (parte1)}} 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''?