220 views
## Esercizi lezione 1 (2020/10/08) - a cura di Francesca Ragusa ### Elenco comandi utili In generale la struttura di un comando è la seguente: ```bash <comando> <opzione> <parametro1> <parametro2> <...> ``` --- ##### pwd Il comando ```pwd``` stampa la directory corrente: ```bash ~$ pwd /home/user #è la directory corrente ``` --- ##### cd Il comando ```cd <directory>``` cambia la directory corrente. Ad esempio, supponiamo che la directory corrente sia ```/home/user``` e che in essa vi sia contenuta una sola cartella, chiamata "musica". Tale cartella contiene a sua volta tre sotto cartelle, "jazz", "pop" e "rock", che sappiamo contenere alcuni file ```mp3```. Riassumendo: ```bash /home/user/ ├──musica ├── jazz │ └── inTheMood.mp3 ├── pop │ └── getLucky.mp3 └── rock ├── backInBlack.mp3 └── smokeOnTheWater.mp3 ``` Se volessimo spostarci da ```/home/user``` in ```musica```, dovremmo utilizzare il seguente comando: ```bash ~$ cd musica ~/musica$ #nota che a sx di $ c'è la dir. corrente ``` Se ora volessimo spostarci in "pop": ```bash ~/musica$ cd pop ~/musica/pop$ ``` Se ora da "pop" volessimo tornare in "musica" (e quindi tornare nella directory padre): ```bash ~/musica/pop$ cd .. ~/musica$ ``` In generale, per ritornare alla home da una qualsiasi cartella, si usa ```cd``` senza alcun parametro: ```bash ~/musica/pop$ cd ~$ ``` --- ##### ls Il comando ```ls``` stampa il contenuto della directory corrente. ```bash ~$ ls #in /home/user è contenuta solo musica musica ~$ cd musica #mi sposto in musica ~/musica$ ls jazz pop rock #contenuto di musica ``` --- ##### mkdir Il comando ```mkdir <nome_directory>``` crea una nuova directory. Ad esempio, proviamo a creare una directory chiamata "metal" all'interno della directory "musica": ```bash ~/musica$ mkdir metal ``` **Nota [valida per tutti i comandi]**: se la directory corrente non fosse stata "musica" ma la home, il comando si sarebbe potuto modificare nel seguente modo: ```bash ~$ mkdir musica/metal ``` Questo perché si può fornire un percorso (in inglese, *path*) da seguire anziché doverci spostare e poi eseguire il comando. --- ##### tree Il comando ```tree <percorso opzionale, defalut: directory corrente>``` stampa una specie di "albero" che mostra tutto quello che è contenuto all'interno della directory corrente: ```bash ~$ tree #ci troviamo in /home/user /home/user/ ├──musica ├── jazz │ └── inTheMood.mp3 ├── metal ├── pop │ └── getLucky.mp3 └── rock ├── backInBlack.mp3 └── smokeOnTheWater.mp3 ``` --- ##### touch Il comando ```touch <nome_file>``` crea un file nel path specificato. Ad esempio, se volessimo creare il file ```theTrooper.mp3``` all'interno di "metal": ```bash ~$ touch musica/metal/theTrooper.mp3 ``` --- ##### mv Il comando ```mv <origine> <destinazione>``` sposta un file in una directory differente e/o rinomina il file. Questo comando sposta "backInBlack" in "metal": ```bash ~/musica$ mv rock/backInBlack.mp3 metal/ ``` --- ##### cp Il comando ```cp <origine> <destinazione>``` copia un file in una directory differente. --- ##### rm Il comando ```rm <file>``` serve a cancellare il file specificato. **DA USARE CON CAUTELA** perché cancella il file definitivamente, non lo sposta in un cestino, e non chiede conferma. --- ##### rmdir Il comando ```rmdir <nome_directory>``` cancella la directory specificata. **Nota** la directory deve essere vuota, altrimenti non sarà possibile eliminarla. **DA USARE CON CAUTELA** ```rm -rf <nomeDirectory>``` cancella la directory specificata e tutto il suo contenuto. Attenzione a non cancellare tutto dalla home, non si torna indietro con questo comando. --- ##### file Il comando ```file <nome_file>``` fornisce il tipo del file specificato. --- ##### echo Il comando ```echo <stringa>``` stampa a schermo la stringa fornita dopo il comando. ```bash ~$ echo Ciao! Ciao! ``` **Nota** E' possibile ridirezionare l'output dei comandi utilizzando gli operatori ```>``` e ```>>``` (il primo sovrascrive, il secondo appende il contenuto in coda). Ad esempio, creiamo un file "canzoni_preferite" all'interno di musica e utilizziamo ```echo``` per scriverci all'interno il titolo di una canzone a noi cara: ```bash ~$ touch musica/canzoni_preferite ~$ echo "Broken Machine" >> musica/canzoni_preferite ``` --- ##### cat Il comando ```cat <nome_file>``` serve a visualizzare il contenuto di un file: ```bash ~$ cat musica/canzoni_preferite Broken Machine ``` Molte volte, quando i file sono molto grossi, conviene scorrerli volta per volta. In tal caso, si utilizza il comando ```more```. Se invece si è interessati solo alle prime righe del file, si può usare il comando ```head``` (analogamente esiste anche il comando ```tail``` per la fine del file). --- ##### man Il comando ```man``` è il manuale. Potete utlizzarlo per leggere le specifiche e la descrizioni dei vari comandi. ```bash ~$ man <nome comando> ``` # Esercizi ### Esercizio 1 Stampare la directory corrente ```bash ~$ pwd home/user ``` ### Esercizio 2 Creare 3 nuove directory, chiamandole A, B e C ```bash ~$ mkdir A ~$ mkdir B ~$ mkdir C ``` Oppure ```bash ~$ mkdir A B C ``` ### Esercizio 3 Creare un file in ciacuna directory, chiamandoli a, b, c ```bash ~$ touch A/a ~$ touch B/b ~$ touch C/c ``` ### Esercizio 4 Controllare il formato dei file creati ```bash ~$ file A/a A/a:empty ``` ### Esercizio 5 Controllare il contenuto di ogni cartella ```bash ~$ ls A a ~$ ls B b ~$ ls C c ``` ### Esercizio 6 Stampare l'albero partendo dalla directory iniziale ```bash ~$ tree . ├── A │ └── a ├── B │ └── b └── C └── c ``` ### Esercizio 7 Spostare b in A ```bash ~$ mv B/b A ``` ### Esercizio 8 Cancellare a ```bash ~$ rm A/a ``` ### Esercizio 9 Copiare c in A ```bash ~$ cp C/c A ``` A questo punto dovreste avere una situazione di questo tipo (controllate con ```tree```): ```bash . ├── A │ ├── b │ └── c ├── B └── C └── c ``` ### Esercizio 10 Cancellare A e B ```bash ~$ rm -rf A ~$ rmdir B ``` Situazione finale: ```bash . └── C └── c ``` ## Per approfondire Per chi volesse approfondire, al seguente link https://labprog.mapio.it/linux.html è presente una guida con un pò di comandi utili.