restore repo
This commit is contained in:
parent
7e78b56b16
commit
30a95ed468
4 changed files with 324 additions and 1 deletions
|
|
@ -1,3 +1,3 @@
|
|||
# Domande_LINUXDAY
|
||||
|
||||
Easy domande linux day
|
||||
Domande quiz
|
||||
210
domande.json
Normal file
210
domande.json
Normal 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
112
quiz_grafico.sh
Executable 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
1
risultati_quiz.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Michele_sandrino_pinelli:2/6:2:6
|
||||
Loading…
Add table
Add a link
Reference in a new issue