restore repo

This commit is contained in:
PanSi21 2024-11-19 02:06:51 +01:00
parent 7e78b56b16
commit 30a95ed468
Signed by untrusted user who does not match committer: PanSi21
GPG key ID: 755F8874C65EF462
4 changed files with 324 additions and 1 deletions

View file

@ -1,3 +1,3 @@
# Domande_LINUXDAY # Domande_LINUXDAY
Easy domande linux day Domande quiz

210
domande.json Normal file
View file

@ -0,0 +1,210 @@
{
"domande": {
"facile": [
{
"domanda": "Qual è il comando per visualizzare la directory corrente in Linux?",
"risposte": [
"pwd",
"ls",
"cd",
"dir"
],
"corretta": "pwd"
},
{
"domanda": "In che anno è nato Linux?",
"risposte": [
"1995",
"1987",
"1991",
"1979"
],
"corretta": "1991"
},
{
"domanda": "Qual è il comando per elencare i file in una directory?",
"risposte": [
"pwd",
"ls",
"cd",
"mkdir"
],
"corretta": "ls"
},
{
"domanda": "Quale comando viene utilizzato per creare una nuova directory?",
"risposte": [
"mkdir",
"cd",
"touch",
"rmdir"
],
"corretta": "mkdir"
},
{
"domanda": "Che comando viene utilizzato per cambiare directory?",
"risposte": [
"cd",
"pwd",
"ls",
"mv"
],
"corretta": "cd"
},
{
"domanda": "Come si chiama il file di configurazione della shell Bash?",
"risposte": [
".bashrc",
".bash_profile",
".profile",
".config"
],
"corretta": ".bashrc"
}
],
"medio": [
{
"domanda": "Qual è il comando per modificare i permessi di un file?",
"risposte": [
"chmod",
"chown",
"ls",
"ps"
],
"corretta": "chmod"
},
{
"domanda": "Qual è il comando per visualizzare le informazioni di rete del sistema?",
"risposte": [
"ip",
"ping",
"netstat",
"lsmod"
],
"corretta": "ip"
},
{
"domanda": "Quale è la mascotte di Linux?",
"risposte": [
"Foxit",
"Gnu",
"Tux",
"Rex"
],
"corretta": "Tux"
},
{
"domanda": "Quale tra queste non è una distro GNU/Linux?",
"risposte": [
"VOID",
"Alma",
"KDE neon",
"Knoppix"
],
"corretta": "VOID"
},
{
"domanda": "Come si crea un link simbolico in Linux?",
"risposte": [
"ln -s",
"symlink",
"link -s",
"ln"
],
"corretta": "ln -s"
},
{
"domanda": "Qual è il comando per visualizzare lo spazio disponibile su disco?",
"risposte": [
"df",
"du",
"free",
"ls"
],
"corretta": "df"
},
{
"domanda": "Quale comando serve per terminare un processo in esecuzione utilizzando il suo PID?",
"risposte": [
"kill",
"exit",
"stop",
"terminate"
],
"corretta": "kill"
}
],
"difficile": [
{
"domanda": "Qual è il comando per cambiare il proprietario di un file?",
"risposte": [
"chown",
"chmod",
"touch",
"ps"
],
"corretta": "chown"
},
{
"domanda": "Quale è il codename di Debian 8?",
"risposte": [
"DuffyDcuk",
"Bookworm",
"Jessie",
"Buster"
],
"corretta": "Jessie"
},
{
"domanda": "Quale tra questi non è un DE?",
"risposte": [
"Gnome",
"Plasma",
"Cosmic",
"XNU"
],
"corretta": "XNU"
},
{
"domanda": "Quale comando viene utilizzato per visualizzare le variabili di ambiente?",
"risposte": [
"env",
"set",
"printenv",
"export"
],
"corretta": "printenv"
},
{
"domanda": "Come si monta un filesystem in Linux?",
"risposte": [
"trmount",
"umount",
"mkdir",
"mount"
],
"corretta": "mount"
},
{
"domanda": "Che tipo di file è indicato da una 'd' nella prima colonna dell'output del comando 'ls -l'?",
"risposte": [
"directory",
"file normale",
"link simbolico",
"pipe"
],
"corretta": "directory"
},
{
"domanda": "Quale comando permette di visualizzare i processi attualmente in esecuzione?",
"risposte": [
"ps",
"top",
"jobs",
"pstree"
],
"corretta": "ps"
}
]
}
}

112
quiz_grafico.sh Executable file
View file

@ -0,0 +1,112 @@
#!/bin/bash
# Path al file JSON
FILE_JSON="domande.json"
# Path al file dei risultati
FILE_RISULTATI="risultati_quiz.txt"
# Verifica se jq è installato
if ! command -v jq &> /dev/null
then
echo "Il comando jq non è installato. Installa jq per proseguire."
exit 1
fi
# Verifica se Zenity è installato
if ! command -v zenity &> /dev/null
then
echo "Il comando zenity non è installato. Installa zenity per proseguire."
exit 1
fi
# Imposta quanti quesiti selezionare per ciascun livello
NUM_FACILI=3
NUM_MEDIE=2
NUM_DIFFICILI=1
# Inizializza il punteggio e il numero di domande totali
punteggio=0
totale_domande=0
# Funzione per selezionare domande casuali da una categoria
seleziona_domande() {
local livello=$1
local numero=$2
jq -c ".domande.$livello | .[]" "$FILE_JSON" | shuf -n "$numero"
}
# Funzione per presentare una domanda e raccogliere la risposta con Zenity
presenta_domanda() {
local domanda=$1
local risposte=("${!2}")
local corretta=$3
# Mostra la domanda con Zenity
risposta=$(zenity --list --radiolist \
--title="Quiz Linux by PCOfficina" \
--text="$domanda" \
--column="Scelta" --column="Risposta" \
FALSE "${risposte[0]}" FALSE "${risposte[1]}" FALSE "${risposte[2]}" FALSE "${risposte[3]}" \
2> /dev/null)
# Controlla se la risposta è corretta
if [ "$risposta" == "$corretta" ]; then
((punteggio++))
fi
# Incrementa il numero totale di domande
((totale_domande++))
}
# Gestire le domande senza usare il subshell per mantenere i punteggi
# Seleziona domande facili
domande_facili=$(seleziona_domande "facile" "$NUM_FACILI")
while read -r riga; do
domanda=$(echo "$riga" | jq -r '.domanda')
risposte=($(echo "$riga" | jq -r '.risposte[]'))
corretta=$(echo "$riga" | jq -r '.corretta')
presenta_domanda "$domanda" risposte[@] "$corretta"
done <<< "$domande_facili"
# Seleziona domande medie
domande_medie=$(seleziona_domande "medio" "$NUM_MEDIE")
while read -r riga; do
domanda=$(echo "$riga" | jq -r '.domanda')
risposte=($(echo "$riga" | jq -r '.risposte[]'))
corretta=$(echo "$riga" | jq -r '.corretta')
presenta_domanda "$domanda" risposte[@] "$corretta"
done <<< "$domande_medie"
# Seleziona domande difficili
domande_difficili=$(seleziona_domande "difficile" "$NUM_DIFFICILI")
while read -r riga; do
domanda=$(echo "$riga" | jq -r '.domanda')
risposte=($(echo "$riga" | jq -r '.risposte[]'))
corretta=$(echo "$riga" | jq -r '.corretta')
presenta_domanda "$domanda" risposte[@] "$corretta"
done <<< "$domande_difficili"
# Calcola il punteggio massimo possibile (totale_domande * 1 punto per ogni risposta corretta)
punteggio_massimo=$totale_domande
# Richiedi il nome dell'utente
nome_utente=$(zenity --entry --title="Inserisci il tuo nome" --text="Inserisci il tuo nome utente:" 2> /dev/null)
# Verifica che il nome sia stato inserito
if [ -z "$nome_utente" ]; then
zenity --error --text="Nome utente non inserito. Il quiz non può essere completato senza nome."
exit 1
fi
# Mostra il riepilogo finale con il punteggio e le domande corrette
zenity --info --title="Risultato del Quiz" --text="Domande corrette: $punteggio/$totale_domande\nPunteggio ottenuto: $punteggio\nPunteggio massimo possibile: $punteggio_massimo"
# Salva il risultato nel file dei risultati
echo "$nome_utente:$punteggio/$totale_domande:$punteggio:$punteggio_massimo" >> "$FILE_RISULTATI"
# Conferma il salvataggio
zenity --info --title="Risultato Salvato" --text="Il risultato è stato salvato con successo nel file $FILE_RISULTATI!"

1
risultati_quiz.txt Normal file
View file

@ -0,0 +1 @@
Michele_sandrino_pinelli:2/6:2:6