From 6bf26133f7282c0c513457d76136cb20109c07a0 Mon Sep 17 00:00:00 2001 From: Riccardo Marchesini Date: Thu, 27 Nov 2025 17:30:37 +0100 Subject: [PATCH 1/7] =?UTF-8?q?add:=20inpi=C3=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "inpi\303\271" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "inpi\303\271" diff --git "a/inpi\303\271" "b/inpi\303\271" new file mode 100644 index 0000000..74ecf54 --- /dev/null +++ "b/inpi\303\271" @@ -0,0 +1 @@ +inpiù From ebdf7a25ea291db4184367bf6b2ce73aa0a0e080 Mon Sep 17 00:00:00 2001 From: Pitots Date: Thu, 27 Nov 2025 18:03:42 +0100 Subject: [PATCH 2/7] add: print_cheatshit --- print_cheatshit.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 print_cheatshit.sh diff --git a/print_cheatshit.sh b/print_cheatshit.sh new file mode 100755 index 0000000..1d4bb91 --- /dev/null +++ b/print_cheatshit.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Nome dello script: stampa_file_predefiniti.sh +# Descrizione: Stampa il contenuto di due file predefiniti che si trovano +# nella stessa cartella dello script. + +# --- 1. DEFINIZIONE DEI NOMI DEI FILE --- +# Definisci qui i nomi esatti dei file che vuoi stampare. +FILE1="primo_file.txt" +FILE2="secondo_file.log" +# ---------------------------------------- + +echo "Esecuzione dello script nella cartella: $(pwd)" +echo "---" + +echo "--- 📝 Contenuto di $FILE1 ---" +if [ -f "$FILE1" ]; then + # Stampa il contenuto del primo file + cat "$FILE1" +else + echo "Errore: Il file '$FILE1' non esiste in questa cartella." +fi + +echo "" # Aggiunge una riga vuota per separazione + +echo "--- 📝 Contenuto di $FILE2 ---" +if [ -f "$FILE2" ]; then + # Stampa il contenuto del secondo file + cat "$FILE2" +else + echo "Errore: Il file '$FILE2' non esiste in questa cartella." +fi + +echo "--- Fine dello script ---" From 66e748b7ba1b64bd65fa79658fd1ff85d960eb4a Mon Sep 17 00:00:00 2001 From: Riccardo Marchesini Date: Thu, 27 Nov 2025 18:02:07 +0100 Subject: [PATCH 3/7] add: cheatsheets corso di Terminale --- TerminaleIssue/cheatsheetTerm1.md | 138 ++++++++++++++++++++++++++++++ TerminaleIssue/cheatsheetTerm2.md | 105 +++++++++++++++++++++++ 2 files changed, 243 insertions(+) create mode 100644 TerminaleIssue/cheatsheetTerm1.md create mode 100644 TerminaleIssue/cheatsheetTerm2.md diff --git a/TerminaleIssue/cheatsheetTerm1.md b/TerminaleIssue/cheatsheetTerm1.md new file mode 100644 index 0000000..6ac1b98 --- /dev/null +++ b/TerminaleIssue/cheatsheetTerm1.md @@ -0,0 +1,138 @@ +### Elenca i file + +```sh +ls +``` + +### Entrare in una cartella + +```sh +cd +``` + +### Uscire da una cartella + +```sh +cd .. +``` + +### Creare una cartella + +```sh +mkdir +``` + +### Creare file + +```sh +touch +``` + +### Controllare di che tipo è un file + +```sh +file +``` + +### Copiare file + +```sh +cp +``` + +### Spostare file + +```sh +mv +``` + +### Rinominare file + +```sh +mv +``` + +### Eliminare file + +```sh +rm +``` + +### Copiare una cartella + +```sh +cp -r +``` + +### Manuale di un comando + +```sh +man +``` + +### Leggere un file di testo + +```sh +less +``` + +### Nano e Vim + +```sh +nano +vim +``` + +### Contare caratteri + +```sh +wc +``` + +### Ricerca di una stringa + +```sh +grep +``` + +### Concatenazione o lettura + +```sh +cat +``` + +### Testa e coda + +```sh +head +tail +``` + +### Wildcard + +```sh +cp _ /scripts +ls -d ca** +cat _ +cat * +``` + +### Cambiare owner e group + +```sh +chmod +chown +chgrp +``` + +### Pipe + +```sh +ls /bin | less +``` + +### Ridezione su file + +```sh +comando > file +``` diff --git a/TerminaleIssue/cheatsheetTerm2.md b/TerminaleIssue/cheatsheetTerm2.md new file mode 100644 index 0000000..9a57002 --- /dev/null +++ b/TerminaleIssue/cheatsheetTerm2.md @@ -0,0 +1,105 @@ +### Slide della scorsa volta + +[main.pdf](https://risorse.vercel.app/lab/2025/terminale-1/main.pdf) + +# STDIO e ridirezioni + +## Output + +Normale output di un comando, può essere visto come un file e usato su pipe e ridirezione. > distruttiva, >> appende in fondo al file. + +```bash +ls > file1 > file2 +``` + +## Error + +```bash +ls ifnrigor > mangusta +``` + +Il file mangusta viene creato (l’esecuzione non si ferma all’errore) ma mangusta non conterrà l’errore del comando perché non è `stdout`. + +```bash +ls ifnrigor > mangusta 2>&1 +``` + +Ridirezionare lo `stderr` sullo stdout: `2>&1` . Non mostra messaggio di errore e ora mangusta contiene l’errore di ls. + +```bash +ls ifnrigor > mangusta 2>1 +``` + +Crea un file di nome 1 e mangusta è vuoto. Ha preso `2>1` come: prendi lo `stderr` e mettilo nel file 1. + +```bash +ls ifnrigor > mangusta 2>/dev/null +``` + +Butta tutti gli errori dentro /dev/null e non saranno più recuperabili. + +## Echo + +```bash +echo */lontra +``` + +Stampa tutti i percorsi relativi delle sottocartelle (o cartelle) chiamate lontra. + +```bash +echo {1..1} +echo {a..z} +``` + +Stampa tutti i numeri e caratteri in mezzo ai valori definiti. + +```bash + file $(ls -d /bin/* | grep zip) +``` + +Permette di stampare tutti i file che hanno dentro zip e sono locati dentro `/bin/*`. Questa sintassi è necessaria per rispettare la sintassi di `file` . + +# Variabili + +```bash +$ set src castoro +$ set dest capybara +$ echo $dest +capybara +$ echo $src +castoro +$ cp -r $src $dest +$ ls +1 capybara castoro file1 file2 mangusta +``` + +set copia le cartelle nelle variabili locali, e cp copia le cartelle ricorsivamente l’una dentro l’altra. + +```bash +bash -c [comando] +``` + +Lancia un comando in una nuova shell. + +Le variabili custom vengono eliminate al riavvio del computer. + +# Shell scripting + +Per specificare che interprete usare: + +```bash + #!/bin/bash +``` + +Specifica l’interprete da usare nella prima riga del file. Dice al terminale che stiamo creando un file di scripting. Non è necessario chiamare i file di scripting \*.sh e definire le variabili maiuscole. + +```bash +#!/bin/bash +echo "Reading programs" +PROG=$(ls -d /bin/*) +NUM=$(echo "$PROG" | grep "ca" | wc -l) +``` + +`NUM=$(echo "$PROG" | grep "ca" | wc -l)` stampa il contenuto di $NUM, che conterrà il numero di programmi che iniziano con ca. La variabile $NUM rimane locale all’esecuzione dello script, non posso neanche usare export perché viene trasposta ai processi figli di quel nuovo terminale creato all’inizio dello script. + +`chmod +100` permesso di esecuzione a user e 0 agli altri. From 13b6a34644b8ba62e2d5fc4a2d22a1f7562ec58e Mon Sep 17 00:00:00 2001 From: Pitots Date: Thu, 27 Nov 2025 18:06:59 +0100 Subject: [PATCH 4/7] fixed file name in print_cheatshit --- print_cheatshit.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/print_cheatshit.sh b/print_cheatshit.sh index 1d4bb91..72a32b2 100755 --- a/print_cheatshit.sh +++ b/print_cheatshit.sh @@ -6,8 +6,8 @@ # --- 1. DEFINIZIONE DEI NOMI DEI FILE --- # Definisci qui i nomi esatti dei file che vuoi stampare. -FILE1="primo_file.txt" -FILE2="secondo_file.log" +FILE1="cheatsheetTerm1.md" +FILE2="cheatsheetTerm2.md" # ---------------------------------------- echo "Esecuzione dello script nella cartella: $(pwd)" From 2d010c80566c46bb65b7c2547890545701bd99e5 Mon Sep 17 00:00:00 2001 From: Pitots Date: Thu, 27 Nov 2025 18:17:09 +0100 Subject: [PATCH 5/7] add: readme && mv: print_cheatshit --- TerminaleIssue/README.md | 1 + TerminaleIssue/print_cheatshit.sh | 34 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 TerminaleIssue/README.md create mode 100755 TerminaleIssue/print_cheatshit.sh diff --git a/TerminaleIssue/README.md b/TerminaleIssue/README.md new file mode 100644 index 0000000..f7e5c31 --- /dev/null +++ b/TerminaleIssue/README.md @@ -0,0 +1 @@ +Per consultare l'elenco dei comandi del terminale basta entrare nella cartella "TerminaleIssue" ed eseguire il file "print_cheatshit.sh" diff --git a/TerminaleIssue/print_cheatshit.sh b/TerminaleIssue/print_cheatshit.sh new file mode 100755 index 0000000..72a32b2 --- /dev/null +++ b/TerminaleIssue/print_cheatshit.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Nome dello script: stampa_file_predefiniti.sh +# Descrizione: Stampa il contenuto di due file predefiniti che si trovano +# nella stessa cartella dello script. + +# --- 1. DEFINIZIONE DEI NOMI DEI FILE --- +# Definisci qui i nomi esatti dei file che vuoi stampare. +FILE1="cheatsheetTerm1.md" +FILE2="cheatsheetTerm2.md" +# ---------------------------------------- + +echo "Esecuzione dello script nella cartella: $(pwd)" +echo "---" + +echo "--- 📝 Contenuto di $FILE1 ---" +if [ -f "$FILE1" ]; then + # Stampa il contenuto del primo file + cat "$FILE1" +else + echo "Errore: Il file '$FILE1' non esiste in questa cartella." +fi + +echo "" # Aggiunge una riga vuota per separazione + +echo "--- 📝 Contenuto di $FILE2 ---" +if [ -f "$FILE2" ]; then + # Stampa il contenuto del secondo file + cat "$FILE2" +else + echo "Errore: Il file '$FILE2' non esiste in questa cartella." +fi + +echo "--- Fine dello script ---" From df7326740349a1abdd72ba24be5a8d459b956e3a Mon Sep 17 00:00:00 2001 From: Pitots Date: Thu, 27 Nov 2025 18:18:09 +0100 Subject: [PATCH 6/7] rm: print_cheatshit --- print_cheatshit.sh | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100755 print_cheatshit.sh diff --git a/print_cheatshit.sh b/print_cheatshit.sh deleted file mode 100755 index 72a32b2..0000000 --- a/print_cheatshit.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# Nome dello script: stampa_file_predefiniti.sh -# Descrizione: Stampa il contenuto di due file predefiniti che si trovano -# nella stessa cartella dello script. - -# --- 1. DEFINIZIONE DEI NOMI DEI FILE --- -# Definisci qui i nomi esatti dei file che vuoi stampare. -FILE1="cheatsheetTerm1.md" -FILE2="cheatsheetTerm2.md" -# ---------------------------------------- - -echo "Esecuzione dello script nella cartella: $(pwd)" -echo "---" - -echo "--- 📝 Contenuto di $FILE1 ---" -if [ -f "$FILE1" ]; then - # Stampa il contenuto del primo file - cat "$FILE1" -else - echo "Errore: Il file '$FILE1' non esiste in questa cartella." -fi - -echo "" # Aggiunge una riga vuota per separazione - -echo "--- 📝 Contenuto di $FILE2 ---" -if [ -f "$FILE2" ]; then - # Stampa il contenuto del secondo file - cat "$FILE2" -else - echo "Errore: Il file '$FILE2' non esiste in questa cartella." -fi - -echo "--- Fine dello script ---" From 2b35f51d13d198d43c5b2546b80cea252aaa205f Mon Sep 17 00:00:00 2001 From: Riccardo Marchesini Date: Thu, 27 Nov 2025 18:32:26 +0100 Subject: [PATCH 7/7] edit: aggiunti i percorsi base ai comandi dei cheatsheets --- TerminaleIssue/cheatsheetTerm1.md | 54 ++++++++++++++-------------- TerminaleIssue/cheatsheetTerm2.md | 59 +++++++++++++++---------------- 2 files changed, 56 insertions(+), 57 deletions(-) diff --git a/TerminaleIssue/cheatsheetTerm1.md b/TerminaleIssue/cheatsheetTerm1.md index 6ac1b98..f087854 100644 --- a/TerminaleIssue/cheatsheetTerm1.md +++ b/TerminaleIssue/cheatsheetTerm1.md @@ -1,13 +1,13 @@ ### Elenca i file ```sh -ls +ls /path/to/directory ``` ### Entrare in una cartella ```sh -cd +cd /path/to/directory ``` ### Uscire da una cartella @@ -19,110 +19,110 @@ cd .. ### Creare una cartella ```sh -mkdir +mkdir /path/to/new_directory ``` ### Creare file ```sh -touch +touch /path/to/new_file.txt ``` ### Controllare di che tipo è un file ```sh -file +file /path/to/executable ``` ### Copiare file ```sh -cp +cp /path/to/source_file.txt /path/to/destination_directory/ ``` ### Spostare file ```sh -mv +mv /path/to/source_file.txt /path/to/destination_directory/ ``` ### Rinominare file ```sh -mv +mv /path/to/old_name.txt /path/to/new_name.txt ``` ### Eliminare file ```sh -rm +rm /path/to/file_to_delete.txt ``` ### Copiare una cartella ```sh -cp -r +cp -r /path/to/source_folder /path/to/destination_folder/ ``` ### Manuale di un comando ```sh -man +man ls ``` ### Leggere un file di testo ```sh -less +less /path/to/text_file.txt ``` ### Nano e Vim ```sh -nano -vim +nano /path/to/file.txt +vim /path/to/another_file.txt ``` ### Contare caratteri ```sh -wc +wc -l /path/to/file.txt ``` ### Ricerca di una stringa ```sh -grep +grep "string" /path/to/file.txt ``` ### Concatenazione o lettura ```sh -cat +cat /path/to/file.txt ``` ### Testa e coda ```sh -head -tail +head /path/to/log_file.txt +tail -f /path/to/another_log.log ``` ### Wildcard ```sh -cp _ /scripts -ls -d ca** -cat _ -cat * +cp *.txt /path/to/destination/ +ls -d dir* +cat file?.txt +cat *.log ``` ### Cambiare owner e group ```sh -chmod -chown -chgrp +chmod 755 /path/to/script.sh +chown user:group /path/to/file.txt +chgrp group /path/to/file.txt ``` ### Pipe @@ -134,5 +134,5 @@ ls /bin | less ### Ridezione su file ```sh -comando > file +comando > /path/to/output_file.txt ``` diff --git a/TerminaleIssue/cheatsheetTerm2.md b/TerminaleIssue/cheatsheetTerm2.md index 9a57002..851a2ae 100644 --- a/TerminaleIssue/cheatsheetTerm2.md +++ b/TerminaleIssue/cheatsheetTerm2.md @@ -6,77 +6,75 @@ ## Output -Normale output di un comando, può essere visto come un file e usato su pipe e ridirezione. > distruttiva, >> appende in fondo al file. +Normale output di un comando, può essere visto come un file e usato su pipe e ridirezione. `>` distruttiva, `>>` appende in fondo al file. ```bash -ls > file1 > file2 +comando > /path/to/output_file.txt ``` ## Error ```bash -ls ifnrigor > mangusta +comando_che_genera_errore > /path/to/output.txt ``` -Il file mangusta viene creato (l’esecuzione non si ferma all’errore) ma mangusta non conterrà l’errore del comando perché non è `stdout`. +Il file `output.txt` viene creato (l’esecuzione non si ferma all’errore) ma `output.txt` non conterrà l’errore del comando perché non è `stdout`. ```bash -ls ifnrigor > mangusta 2>&1 +comando_che_genera_errore > /path/to/output_and_error.txt 2>&1 ``` -Ridirezionare lo `stderr` sullo stdout: `2>&1` . Non mostra messaggio di errore e ora mangusta contiene l’errore di ls. +Ridirezionare lo `stderr` sullo stdout: `2>&1` . Non mostra messaggio di errore e ora `output_and_error.txt` contiene l’errore del comando. ```bash -ls ifnrigor > mangusta 2>1 +comando_che_genera_errore > /path/to/output.txt 2> /path/to/error_file.txt ``` -Crea un file di nome 1 e mangusta è vuoto. Ha preso `2>1` come: prendi lo `stderr` e mettilo nel file 1. +Crea un file di nome `error_file.txt` e `output.txt` è vuoto. Ha preso `2> /path/to/error_file.txt` come: prendi lo `stderr` e mettilo nel file specificato. ```bash -ls ifnrigor > mangusta 2>/dev/null +comando_che_genera_errore > /path/to/output.txt 2>/dev/null ``` -Butta tutti gli errori dentro /dev/null e non saranno più recuperabili. +Butta tutti gli errori dentro `/dev/null` e non saranno più recuperabili. ## Echo ```bash -echo */lontra +echo /path/to/*/pattern ``` -Stampa tutti i percorsi relativi delle sottocartelle (o cartelle) chiamate lontra. +Stampa tutti i percorsi relativi delle sottocartelle (o cartelle) che corrispondono a `pattern` all'interno di `/path/to/`. ```bash -echo {1..1} +echo {1..10} echo {a..z} ``` Stampa tutti i numeri e caratteri in mezzo ai valori definiti. ```bash - file $(ls -d /bin/* | grep zip) +file $(ls -d /bin/* | grep utility_name) +file $(find /path/to/binaries -name "program_name" -print) ``` -Permette di stampare tutti i file che hanno dentro zip e sono locati dentro `/bin/*`. Questa sintassi è necessaria per rispettare la sintassi di `file` . +Il primo esempio stampa informazioni sui file che corrispondono a `utility_name` tra gli eseguibili in `/bin/`. Il secondo esempio trova il percorso di un `program_name` in `/path/to/binaries` e stampa il tipo di file. Questa sintassi è necessaria per rispettare la sintassi di `file`. # Variabili ```bash -$ set src castoro -$ set dest capybara -$ echo $dest -capybara -$ echo $src -castoro -$ cp -r $src $dest -$ ls -1 capybara castoro file1 file2 mangusta +set src "/path/to/source_folder" +set dest "/path/to/destination_folder" +echo "$dest" +echo "$src" +cp -r "$src" "$dest" +ls /path/to/directory ``` -set copia le cartelle nelle variabili locali, e cp copia le cartelle ricorsivamente l’una dentro l’altra. +`set` copia i valori nelle variabili locali, e `cp` copia le cartelle ricorsivamente l’una dentro l’altra. ```bash -bash -c [comando] +bash -c "comando con argomenti" ``` Lancia un comando in una nuova shell. @@ -88,18 +86,19 @@ Le variabili custom vengono eliminate al riavvio del computer. Per specificare che interprete usare: ```bash - #!/bin/bash +#!/bin/bash ``` -Specifica l’interprete da usare nella prima riga del file. Dice al terminale che stiamo creando un file di scripting. Non è necessario chiamare i file di scripting \*.sh e definire le variabili maiuscole. +Specifica l’interprete da usare nella prima riga del file. Dice al terminale che stiamo creando un file di scripting. Non è necessario chiamare i file di scripting `*.sh` e definire le variabili maiuscole. ```bash #!/bin/bash echo "Reading programs" PROG=$(ls -d /bin/*) NUM=$(echo "$PROG" | grep "ca" | wc -l) +echo "Number of programs containing 'ca': $NUM" ``` -`NUM=$(echo "$PROG" | grep "ca" | wc -l)` stampa il contenuto di $NUM, che conterrà il numero di programmi che iniziano con ca. La variabile $NUM rimane locale all’esecuzione dello script, non posso neanche usare export perché viene trasposta ai processi figli di quel nuovo terminale creato all’inizio dello script. +`NUM=$(echo "$PROG" | grep "ca" | wc -l)` stampa il contenuto di `$NUM`, che conterrà il numero di programmi che iniziano con `ca`. La variabile `$NUM` rimane locale all’esecuzione dello script, non posso neanche usare `export` perché viene trasposta ai processi figli di quel nuovo terminale creato all’inizio dello script. -`chmod +100` permesso di esecuzione a user e 0 agli altri. +`chmod +x /path/to/my_script.sh` permesso di esecuzione a user.