====== Esercitazione 1 ====== Dove si inizia ad interagire con la shell. ===== Esercizio 1 ===== * A partire dalla vostra home directory, creare una cartella ''temp''; * Entrare nella cartella appena creata (ovvero rendere la cartella appena creata la vostra //directory corrente//); * Creare due sottocartelle ''sorgente'' e, come sottolivello, ''destinazione'' (destinazione sarà una sottodirectory di ''sorgente''); * Creare nella cartella sorgente un file di nome ''esempio.txt''. * - Su Linux utilizzate l'editore gedit, col comando gedit esempio.txt * - Su altri sistemi (WSL, MacOS) utilizzate il vostro editor preferito, oppure nano col comando nano esempio.txt e scrivere all’interno del file la riga contenuto_1 * Controllare da shell il percorso assoluto (path assoluto) della cartella corrente (sorgente) e scriverlo (con ridirezione append ''>>'') nel file appena creato ===== Esercizio 2 ===== * Posizionatevi (se non ci siete già) all’interno della cartella ''sorgente'' (ovvero rendete la cartella ''sorgente'' la vostra //directory corrente//) * Cancellate il file ''esempio.txt'' creato durante l’esercizio 1 precedente * Create un nuovo file di testo ''lista1.txt'' (sempre usando gedit) ed inserite all’interno 5 nomi di amici; * Create un nuovo file di test ''lista2.txt'' ed inserite all’interno 5 nomi di amici; * Spostate (mv) il file ''lista1.tx''t dalla cartella sorgente alla cartella destinazione; * Copiate (cp) il file ''lista2.txt'' dalla cartella sorgente alla cartella destinazione. ===== Esercizio 3 ===== * Posizionatevi all’interno della cartella ''destinazione''; * Visualizzate tutti i file contenuti nella //directory corrente//; * Concatenare il contenuto dei due file contenuti nella directory corrente nel nuovo file ''lista3.txt'' e visualizzate il risultato. Il file ''lista3.txt'' dovrà contenere tutto il contenuto del primo file seguito da tutto il contenuto del secondo file. ===== Esercizio 4 ===== * Posizionandovi nella vostra home directory; * Create una nuova sottodirectory chiamata ''num_utili'' * Posizionatevi in ''num_utili'' e copiateci il file {{:fisica:informatica:201415:esercitazioni:rubrica.tar|rubrica.tar}} * scompattate il file ''rubrica.tar'' con il comando tar xvf rubrica.tar il comando estrae un file di testo chiamato "rubrica.txt" * Editate il file ''rubrica.txt'' con gedit in modo da cancellare tutte le righe che non contengono informazioni utili (es. righe vuote, righe di asterischi,...); * Stampate a video il contenuto del file "rubrica.txt" risultante (Provate ad usare i vari comandi indicati nei lucidi per questo scopo: ad esempio ''cat'', ''more'' e ''less'') * Create un nuovo archivio compresso che contenga il file modificato "rubrica.txt" con il comando tar cvf rubrica.tar rubrica.txt * Controllate che l'archivio contenga correttamente il file con tar tvf rubrica.tar * Utilizzate il comando man per esplorare la pagina di manuali online per il comando tar man tar ===== Esercizio 5 ===== * Utilizzate i manuali online per capire come funziona il comando ''sort'' * Utilizzate il comando ''sort'' per ordinare lessicograficamente il file ''rubrica.txt'' dell’esercizio precedente salvando il suo contenuto nel file ''rubricaOrd.txt'' * Visualizzate le prime 5 linee del file appena creato usando il comando ''head'' (controllate sul manuale come si fa ...) * Create un nuovo file ''rubrica1.txt'' che contiene le prime 5 linee di ''rubricaOrd.txt'' seguite dalle ultime 5 linee dello stesso file usando i comandi head e tail e la ridirezione ===== Esercizio 6 ===== * Comprimete il file ''rubrica1.txt'' dell’esercizio precedente usando il comando ''gzip'' Controllate se il comando ha creato un nuovo file. Dov’è il file originale? * Visualizzate le informazioni del file compresso usando il comando ''file'' * e' possibile visualizzare il contenuto del file compresso ? * Decomprimete il file compresso usando il comando ''gunzip'' * Che cosa fa il comando: grep perino rubricaOrd.txt e grep perino rubricaOrd.txt | wc -l ? ===== Esercizio 7 ===== * Leggete la pagina del manuale relativa ai comandi ''whoami'', ''du'' e ''df'': Cosa fanno questi comandi? * Andate nella vostra home e lanciate du -hd 1 Cosa significano le opzioni ''-h'' e ''-d''? Cosa è ''1'' in questo caso? * Leggete la pagina del manuale relativa al comando ''cal''. Cosa fa questo comando? A cosa serve l'opzione ''-m'' ? * Usando il comando ''tar'' utilizzato nell'esercizio 4 * create l'archivio compresso ''rrr.tar.gz'' contenente i file ''rubrica.txt'', ''rubrica1.txt'' e ''rubricaOrd.txt'' dell’esercizio 5. ===== Esercizio 8 ===== Eseguire il comando (for((i==0;i<1000;i++)) do echo "Fermami se ci riesci" ; sleep 1; done) questo stampera' per 1000 volte la frase //Fermami se ci riesci// senza restituire il prompt. * Interrompere l'esecuzione del comando in modo da riottenere il prompt dopo due stampe. * Riattivare il comando e bloccarlo temporaneamente (CTRL-Z). Cosa è successo ? * Usare il comando ''fg'' per riattivare il comando. Terminarlo di nuovo con CTRL-C * Riattivare e bloccare di nuovo il comando con CTRL-Z * Dare adesso il comando ''bg''. Questo vi permette di riattivare l'esecuzione riottenedo il prompt della shell per inviare contemporaneamente altri comandi. L'esecuzione del comando in questo caso è detta esecuzione in background attivandone poi l'//esecuzione in background//. ===== Esercizio 9 ===== Utilizzare l'esecuzione in background per attivare contemporaneamente stessa shell la finestra dell'editore gedit e il prompt per inviare nuovi comando con gedit & questo sarà utile per non chiudere la finestra di editing del programma fra una compilazione e l'altra