\documentclass[10pt,aspectratio=169]{beamer}

% --- Thème ---
\usetheme[language=french]{Celestia}

% Avec [allowframebreaks] sur les frames de questions, Beamer ajoute
% par défaut « (1) », « (2) », « (3) »... sur chaque sous-slide. On
% supprime entièrement cette annotation : un template vide pour
% « frametitle continuation ». L'enseignant identifie visuellement la
% continuation par le contenu de la slide. (Les variantes [from second]
% et [roman] interagissent mal avec un titre contenant \textemdash{}
% sous Celestia : elles déclenchent une erreur « Missing $ inserted ».)
\setbeamertemplate{frametitle continuation}{}

\subject{Numérique et sciences informatiques}
\title{Shell Unix et commandes}
\subtitle{QCM}
\author{Première}
\date{\today}

\begin{document}

\begin{frame}
    \titlepage
\end{frame}

% Q1 - Réponse en B
\begin{frame}[fragile]{Question 1 \textemdash{} Dossier courant}
    Quelle commande affiche le \textbf{chemin du dossier
courant} ?\medskip
    \begin{itemize}
        \item[A.] \texttt{where}
        \item[\alert<2>{B.}] \alert<2>{\texttt{pwd}}
        \item[C.] \texttt{cd}
        \item[D.] \texttt{ls}
    \end{itemize}
\end{frame}

% Q2 - Réponse en B
\begin{frame}[fragile]{Question 2 \textemdash{} Lister}
    Quelle commande affiche la \textbf{liste des fichiers}
d'un dossier ?\medskip
    \begin{itemize}
        \item[A.] \texttt{dir}
        \item[\alert<2>{B.}] \alert<2>{\texttt{ls}}
        \item[C.] \texttt{show}
        \item[D.] \texttt{list}
    \end{itemize}
\end{frame}

% Q3 - Réponse en C
\begin{frame}[fragile]{Question 3 \textemdash{} Changer de dossier}
    Quelle commande \textbf{change} de dossier ?\medskip
    \begin{itemize}
        \item[A.] \texttt{open}
        \item[B.] \texttt{enter}
        \item[\alert<2>{C.}] \alert<2>{\texttt{cd}}
        \item[D.] \texttt{go}
    \end{itemize}
\end{frame}

% Q4 - Réponse en D
\begin{frame}[fragile]{Question 4 \textemdash{} Créer un dossier}
    Quelle commande \textbf{crée un dossier} ?\medskip
    \begin{itemize}
        \item[A.] \texttt{md}
        \item[B.] \texttt{new}
        \item[C.] \texttt{createdir}
        \item[\alert<2>{D.}] \alert<2>{\texttt{mkdir}}
    \end{itemize}
\end{frame}

% Q5 - Réponse en C
\begin{frame}[fragile]{Question 5 \textemdash{} Copier}
    Quelle commande \textbf{copie} un fichier ?\medskip
    \begin{itemize}
        \item[A.] \texttt{copy}
        \item[B.] \texttt{mv}
        \item[\alert<2>{C.}] \alert<2>{\texttt{cp}}
        \item[D.] \texttt{duplicate}
    \end{itemize}
\end{frame}

% Q6 - Réponse en C
\begin{frame}[fragile]{Question 6 \textemdash{} Déplacer / renommer}
    Quelle commande \textbf{déplace ou renomme} un
fichier ?\medskip
    \begin{itemize}
        \item[A.] \texttt{rename}
        \item[B.] \texttt{move}
        \item[\alert<2>{C.}] \alert<2>{\texttt{mv}}
        \item[D.] \texttt{change}
    \end{itemize}
\end{frame}

% Q7 - Réponse en B
\begin{frame}[fragile]{Question 7 \textemdash{} Supprimer}
    Quelle commande \textbf{supprime} un fichier ?\medskip
    \begin{itemize}
        \item[A.] \texttt{delete}
        \item[\alert<2>{B.}] \alert<2>{\texttt{rm}}
        \item[C.] \texttt{erase}
        \item[D.] \texttt{del}
    \end{itemize}
\end{frame}

% Q8 - Réponse en B
\begin{frame}[fragile]{Question 8 \textemdash{} Afficher un fichier}
    Quelle commande \textbf{affiche le contenu} d'un
fichier texte ?\medskip
    \begin{itemize}
        \item[A.] \texttt{read}
        \item[\alert<2>{B.}] \alert<2>{\texttt{cat}}
        \item[C.] \texttt{show}
        \item[D.] \texttt{open}
    \end{itemize}
\end{frame}

% Q9 - Réponse en B
\begin{frame}[fragile]{Question 9 \textemdash{} Chemins}
    Que désignent \texttt{.} et \texttt{..} dans un chemin ?\medskip
    \begin{itemize}
        \item[A.] Des messages d'erreur
        \item[\alert<2>{B.}] \alert<2>{\texttt{.} = dossier courant ; \texttt{..} = dossier parent}
        \item[C.] Des fichiers cachés du système
        \item[D.] Des séparateurs de chemin
    \end{itemize}
\end{frame}

% Q10 - Réponse en D
\begin{frame}[fragile]{Question 10 \textemdash{} Aide d'une commande}
    Comment \textbf{afficher l'aide} d'une commande
Unix ?\medskip
    \begin{itemize}
        \item[A.] \texttt{info commande}
        \item[B.] \texttt{commande --aide}
        \item[C.] \texttt{help commande}
        \item[\alert<2>{D.}] \alert<2>{\texttt{man commande} (par exemple \texttt{man ls})}
    \end{itemize}
\end{frame}

% Q11 - Réponse en B
\begin{frame}[fragile]{Question 11 \textemdash{} Redirection sortie}
    Que fait \texttt{ls > liste.txt} ?\medskip
    \begin{itemize}
        \item[A.] Elle affiche le contenu de \texttt{liste.txt}
        \item[\alert<2>{B.}] \alert<2>{Redirige la sortie de \texttt{ls} vers le fichier \texttt{liste.txt} au lieu de l'afficher (création/écrasement)}
        \item[C.] Elle compare la sortie de \texttt{ls} au contenu de \texttt{liste.txt}
        \item[D.] Elle renomme la commande \texttt{ls} en \texttt{liste.txt}
    \end{itemize}
\end{frame}

% Q12 - Réponse en A
\begin{frame}[fragile]{Question 12 \textemdash{} Pipe}
    Que fait le caractère \texttt{|} (pipe) en shell ?\medskip
    \begin{itemize}
        \item[\alert<2>{A.}] \alert<2>{Il redirige la sortie d'une commande vers l'entrée de la suivante (chaînage)}
        \item[B.] Une instruction de boucle
        \item[C.] Un caractère introduisant un commentaire
        \item[D.] Une simple barre verticale
    \end{itemize}
\end{frame}

% Q13 - Réponse en A
\begin{frame}[fragile]{Question 13 \textemdash{} Recherche dans un fichier}
    Quelle commande \textbf{cherche un motif} dans un
ou plusieurs fichiers ?\medskip
    \begin{itemize}
        \item[\alert<2>{A.}] \alert<2>{\texttt{grep}}
        \item[B.] \texttt{look}
        \item[C.] \texttt{find}
        \item[D.] \texttt{search}
    \end{itemize}
\end{frame}

% Q14 - Réponse en A
\begin{frame}[fragile]{Question 14 \textemdash{} find}
    Quelle commande \textbf{trouve des fichiers} dans
l'arborescence selon des critères (nom,
taille, date) ?\medskip
    \begin{itemize}
        \item[\alert<2>{A.}] \alert<2>{\texttt{find}}
        \item[B.] \texttt{locate}
        \item[C.] \texttt{grep}
        \item[D.] \texttt{look}
    \end{itemize}
\end{frame}

% Q15 - Réponse en B
\begin{frame}[fragile]{Question 15 \textemdash{} chmod}
    Que fait \texttt{chmod +x script.sh} ?\medskip
    \begin{itemize}
        \item[A.] Renomme le fichier
        \item[\alert<2>{B.}] \alert<2>{Ajoute la permission exécutable au fichier (pour pouvoir le lancer)}
        \item[C.] Cache le fichier
        \item[D.] Supprime le fichier
    \end{itemize}
\end{frame}

% Q16 - Réponse en C
\begin{frame}[fragile]{Question 16 \textemdash{} Variables d'environnement}
    Comment accéder à la valeur d'une \textbf{variable
d'environnement} dans Bash ?\medskip
    \begin{itemize}
        \item[A.] \texttt{@PATH}
        \item[B.] \texttt{PATH}
        \item[\alert<2>{C.}] \alert<2>{\texttt{\$PATH} (avec un dollar)}
        \item[D.] \texttt{\%PATH\%}
    \end{itemize}
\end{frame}

% Q17 - Réponse en D
\begin{frame}[fragile]{Question 17 \textemdash{} Compter}
    Quelle commande \textbf{compte} les lignes, mots et
caractères d'un fichier ?\medskip
    \begin{itemize}
        \item[A.] \texttt{length}
        \item[B.] \texttt{cnt}
        \item[C.] \texttt{count}
        \item[\alert<2>{D.}] \alert<2>{\texttt{wc}}
    \end{itemize}
\end{frame}

% Q18 - Réponse en B
\begin{frame}[fragile]{Question 18 \textemdash{} sudo}
    Que signifie \textbf{\texttt{sudo}} ?\medskip
    \begin{itemize}
        \item[A.] Sudden User Operation
        \item[\alert<2>{B.}] \alert<2>{Substitute User Do}
        \item[C.] Système Unix Démarrage Optimisé
        \item[D.] Super User Demo
    \end{itemize}
\end{frame}

% Q19 - Réponse en C
\begin{frame}[fragile]{Question 19 \textemdash{} Chemin absolu vs relatif}
    Quelle est la différence entre un chemin
\textbf{absolu} et un chemin \textbf{relatif} ?\medskip
    \begin{itemize}
        \item[A.] L'un fonctionne uniquement sur Windows
        \item[B.] L'un est plus rapide
        \item[\alert<2>{C.}] \alert<2>{Un chemin absolu commence par \texttt{/} (racine) et donne le chemin complet (\texttt{/home/alice/doc.txt}). Un chemin relatif dépend du dossier courant (\texttt{doc.txt}, \texttt{../doc.txt}).}
        \item[D.] Aucune
    \end{itemize}
\end{frame}

% Q20 - Réponse en A
\begin{frame}[fragile]{Question 20 \textemdash{} Entrée/sortie standards}
    Que sont \textbf{stdin}, \textbf{stdout}, \textbf{stderr} ?\medskip
    \begin{itemize}
        \item[\alert<2>{A.}] \alert<2>{Trois flux standards d'un programme : entrée standard (clavier), sortie standard (écran), sortie d'erreur (écran, séparée)}
        \item[B.] Trois variables d'environnement
        \item[C.] Trois systèmes d'exploitation
        \item[D.] Trois commandes Unix
    \end{itemize}
\end{frame}

% Q21 - Réponse en D
\begin{frame}[fragile]{Question 21 \textemdash{} Pipeline avancé}
    Que fait
\texttt{cat fichier.log | grep "error" | wc -l} ?\medskip
    \begin{itemize}
        \item[A.] Vide le fichier
        \item[B.] Supprime les erreurs
        \item[C.] Affiche les erreurs du fichier
        \item[\alert<2>{D.}] \alert<2>{Compte le nombre de lignes contenant « error » dans \texttt{fichier.log}}
    \end{itemize}
\end{frame}

% Q22 - Réponse en A
\begin{frame}[fragile]{Question 22 \textemdash{} Permissions octales}
    Que représente \texttt{chmod 755 script.sh} ?\medskip
    \begin{itemize}
        \item[\alert<2>{A.}] \alert<2>{Permissions : propriétaire \texttt{rwx} (= 4+2+1=7), groupe \texttt{r-x} (= 4+0+1=5), autres \texttt{r-x} (= 5)}
        \item[B.] Un identifiant de processus
        \item[C.] Une erreur de syntaxe
        \item[D.] Une nouvelle taille de fichier
    \end{itemize}
\end{frame}

% Q23 - Réponse en D
\begin{frame}[fragile]{Question 23 \textemdash{} Shebang}
    À quoi sert la première ligne \texttt{\#!/bin/bash}
d'un script shell ?\medskip
    \begin{itemize}
        \item[A.] C'est obligatoire en HTML
        \item[B.] Cela charge un module
        \item[C.] C'est un commentaire ignoré
        \item[\alert<2>{D.}] \alert<2>{C'est le shebang (ou hashbang) : indique au noyau quel interpréteur utiliser pour exécuter le script}
    \end{itemize}
\end{frame}

% Q24 - Réponse en B
\begin{frame}[fragile]{Question 24 \textemdash{} Drame du rm -rf}
    Pourquoi la commande \texttt{rm -rf /} est-elle
\textbf{dangereuse} au point d'être célèbre ?\medskip
    \begin{itemize}
        \item[A.] Elle est lente
        \item[\alert<2>{B.}] \alert<2>{Elle supprime récursivement (\texttt{-r}) et sans confirmation (\texttt{-f}) à partir de la racine (\texttt{/}), donc tout le système}
        \item[C.] Elle est interdite par la loi
        \item[D.] Elle redémarre l'ordinateur
    \end{itemize}
\end{frame}

% Q25 - Réponse en B
\begin{frame}[fragile]{Question 25 \textemdash{} Synthèse}
    Parmi les affirmations suivantes sur le shell
Unix, laquelle est \textbf{fausse} ?\medskip
    \begin{itemize}
        \item[A.] \texttt{grep} cherche un motif dans le contenu de fichiers
        \item[\alert<2>{B.}] \alert<2>{\texttt{rm} met les fichiers dans une corbeille récupérable par défaut}
        \item[C.] \texttt{pwd} affiche le chemin du dossier courant
        \item[D.] \texttt{|} permet de chaîner des commandes en redirigeant la sortie de l'une vers l'entrée de l'autre
    \end{itemize}
\end{frame}

% Q26 - Réponse en D
\begin{frame}[fragile]{Question 26 \textemdash{} Le caractère « tilde »}
    Dans un terminal Unix, à quoi correspond le caractère
\texttt{\textasciitilde{}} (tilde) en début de chemin ?\medskip
    \begin{itemize}
        \item[A.] Au répertoire parent
        \item[B.] Au répertoire courant
        \item[C.] Au répertoire racine du système
        \item[\alert<2>{D.}] \alert<2>{Au répertoire personnel de l'utilisateur courant}
    \end{itemize}
\end{frame}

% Q27 - Réponse en A
\begin{frame}[fragile,allowframebreaks]{Question 27 \textemdash{} Caractère joker}
    Dans un terminal, on saisit la commande suivante :

\begin{lstlisting}
ls *.txt
\end{lstlisting}

Quel est l'effet du caractère \texttt{*} ?\medskip
    \begin{itemize}
        \item[A.] Il représente n'importe quelle suite de caractères, y compris vide, dans un nom de fichier
        \item[B.] Il multiplie le résultat par lui-même
        \item[C.] Il sert à commenter la ligne
        \item[D.] Il bloque l'exécution de la commande
    \end{itemize}
\end{frame}

% Q27 - Réponse en A
\begin{frame}[fragile,allowframebreaks]{Question 27 \textemdash{} Caractère joker}
    Dans un terminal, on saisit la commande suivante :

\begin{lstlisting}
ls *.txt
\end{lstlisting}

Quel est l'effet du caractère \texttt{*} ?\medskip
    \begin{itemize}
        \item[\alert{A.}] \alert{Il représente n'importe quelle suite de caractères, y compris vide, dans un nom de fichier}
        \item[B.] Il multiplie le résultat par lui-même
        \item[C.] Il sert à commenter la ligne
        \item[D.] Il bloque l'exécution de la commande
    \end{itemize}
\end{frame}

% Q28 - Réponse en C
\begin{frame}[fragile]{Question 28 \textemdash{} Fichiers cachés}
    Sous Unix, à quoi reconnaît-on un fichier ou un
dossier dit \textbf{caché} ?\medskip
    \begin{itemize}
        \item[A.] À un attribut spécial dans le système de fichiers
        \item[B.] À son extension \texttt{.hidden}
        \item[\alert<2>{C.}] \alert<2>{À son nom qui commence par un point (par exemple \texttt{.bashrc})}
        \item[D.] À son emplacement dans le dossier \texttt{/hidden}
    \end{itemize}
\end{frame}

% Q29 - Réponse en C
\begin{frame}[fragile]{Question 29 \textemdash{} Arborescence standard Unix}
    Dans l'arborescence standard d'un système Unix, à
quoi sert le répertoire \texttt{/etc} ?\medskip
    \begin{itemize}
        \item[A.] À placer les fichiers exécutables des programmes
        \item[B.] À héberger les répertoires personnels des utilisateurs
        \item[\alert<2>{C.}] \alert<2>{À conserver les fichiers de configuration du système et des services installés}
        \item[D.] À stocker les fichiers temporaires des programmes
    \end{itemize}
\end{frame}

\begin{frame}[standout]{}
    Fin de l'évaluation
\end{frame}

\end{document}
