<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/Première/Shell Unix et commandes</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Ligne de commande Unix : navigation dans<br/>
l'arborescence (ls, cd, pwd), manipulation des<br/>
fichiers (cp, mv, rm, mkdir), affichage<br/>
(cat, less), recherche (grep, find),<br/>
redirections et tubes, droits d'accès.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q01 : Dossier courant</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande affiche le <strong>chemin du dossier<br/>
courant</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Réflexe utile : pwd quand on est perdu<br/>
dans l'arborescence. La plupart des shells<br/>
l'affichent dans l'invite (« prompt »).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>where</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande where<br/>
n'existe dans le standard<br/>
Unix pour cet usage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>pwd</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pwd (print working<br/>
directory) affiche le chemin absolu du<br/>
dossier où l'on se trouve.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>cd</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande cd permet de<br/>
changer de dossier, mais<br/>
n'affiche pas le chemin<br/>
courant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>ls</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande ls liste le<br/>
contenu d'un dossier, mais<br/>
n'affiche pas son chemin<br/>
d'accès.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q02 : Lister</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande affiche la <strong>liste des fichiers</strong><br/>
d'un dossier ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec des options : ls -lh<br/>
donne un affichage détaillé,<br/>
avec des tailles lisibles.<br/>
Pour révéler les fichiers<br/>
cachés (dont le nom commence<br/>
par un point), on utilise<br/>
l'option -a. L'idiome<br/>
ls -la est l'un des plus<br/>
utiles à connaître.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>dir</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur Windows (DOS), parfois sur<br/>
Linux comme alias, mais le standard<br/>
Unix est ls.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>ls</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : ls (list) affiche le<br/>
contenu du dossier courant. Options :<br/>
-l (détaillé), -a (cachés), -h<br/>
(tailles lisibles).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>show</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette commande n'est pas<br/>
standard sur les systèmes<br/>
Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>list</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette commande n'est pas<br/>
standard sur les systèmes<br/>
Unix. La commande<br/>
consacrée est ls.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q03 : Changer de dossier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>change</strong> de dossier ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Astuces : cd - revient au dossier<br/>
précédent ; cd ~ va au dossier<br/>
personnel ; cd / à la racine du système<br/>
de fichiers.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>open</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sur macOS, open lance une application,<br/>
pas un changement de dossier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>enter</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande enter<br/>
standard n'existe sous<br/>
Unix pour cet usage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>cd</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : cd (change directory)<br/>
suivi du chemin. Sans paramètre :<br/>
revient au dossier personnel<br/>
(/home/user). cd .. : remonte d'un<br/>
niveau.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>go</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande go<br/>
standard ne permet de<br/>
changer de dossier sous<br/>
Unix.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q04 : Créer un dossier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>crée un dossier</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour créer une arborescence en une fois :<br/>
mkdir -p projet/src/utils. Crée tous les<br/>
dossiers nécessaires.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>md</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sur Windows, oui. Sur Unix, c'est<br/>
mkdir.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>new</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande new<br/>
standard ne crée un<br/>
dossier sous Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>createdir</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette commande n'est pas<br/>
standard sous Unix. La<br/>
commande consacrée est<br/>
mkdir.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>mkdir</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : mkdir (make<br/>
directory) suivi du nom du dossier.<br/>
Option -p : crée les dossiers<br/>
intermédiaires si nécessaire.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q05 : Copier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>copie</strong> un fichier ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Très utilisé : cp -r dossier1 dossier2<br/>
copie tout l'arbre. cp -i demande<br/>
confirmation avant d'écraser.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>copy</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur Windows. Sur Unix, c'est<br/>
cp.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>mv</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande mv permet de<br/>
<strong>déplacer</strong> ou de<br/>
<strong>renommer</strong> un fichier,<br/>
mais pas de le copier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>cp</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : cp source destination.<br/>
Pour copier un dossier : cp -r (récursif).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>duplicate</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande duplicate<br/>
standard n'existe sous<br/>
Unix.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q06 : Déplacer / renommer</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>déplace ou renomme</strong> un<br/>
fichier ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Renommer : mv ancien.txt nouveau.txt.<br/>
Déplacer : mv fichier.txt /home/alice/.<br/>
Sur les FS, déplacer dans le même volume<br/>
est instantané (juste mise à jour de<br/>
l'inode).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>rename</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe (par exemple en Perl), mais le<br/>
standard Unix est mv.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>move</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur Windows. Sur Unix, mv.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>mv</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : mv source destination.<br/>
Si la destination est dans le même<br/>
dossier avec un nom différent, c'est<br/>
un renommage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>change</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande change<br/>
standard ne déplace ou ne<br/>
renomme un fichier sous<br/>
Unix.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q07 : Supprimer</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>supprime</strong> un fichier ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>rm -r dossier supprime un dossier (et<br/>
tout son contenu). rm -rf / est la<br/>
commande la plus dangereuse possible :<br/>
détruit tout le système.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>delete</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande delete<br/>
standard ne supprime un<br/>
fichier sous Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>rm</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : rm fichier.txt.<br/>
<strong>Attention</strong> : pas de corbeille en<br/>
ligne de commande, suppression<br/>
<strong>définitive</strong>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>erase</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande erase<br/>
standard ne supprime un<br/>
fichier sous Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>del</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur Windows. Sur Unix, c'est<br/>
rm.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q08 : Afficher un fichier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>affiche le contenu</strong> d'un<br/>
fichier texte ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>cat (concatenate) : affiche <strong>et</strong><br/>
concatène plusieurs fichiers<br/>
(cat a.txt b.txt). Variantes : head<br/>
(début), tail (fin), tac (à l'envers).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>read</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe mais lit l'entrée standard,<br/>
pas un fichier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>cat</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : cat fichier.txt<br/>
affiche tout le contenu d'un coup.<br/>
Pour les gros fichiers, préférer<br/>
less (page par page).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>show</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande show<br/>
standard n'affiche le<br/>
contenu d'un fichier sous<br/>
Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>open</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sur macOS, open lance l'application<br/>
associée, pas le shell.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q09 : Chemins</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que désignent . et .. dans un chemin ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tous les dossiers (sauf la racine) ont<br/>
ces deux entrées spéciales. cd ..<br/>
remonte ; ./ est utile pour exécuter<br/>
un script local dans le PATH.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Des messages d'erreur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Au contraire, ce sont des<br/>
entrées normales et<br/>
parfaitement valides du<br/>
système de fichiers.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>. = dossier courant ; .. = dossier parent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : permettent les chemins<br/>
relatifs. ./script.sh exécute le<br/>
script du dossier courant.<br/>
../fichier désigne le fichier dans le<br/>
dossier parent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Des fichiers cachés du système</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette interprétation est<br/>
imprécise : les notations<br/>
. et .. ne désignent<br/>
pas des fichiers cachés<br/>
au sens classique du<br/>
terme, mais des<br/>
références particulières<br/>
dans l'arborescence.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Des séparateurs de chemin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le caractère qui sépare<br/>
les éléments d'un chemin<br/>
est /, et non le point.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q10 : Aide d'une commande</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment <strong>afficher l'aide</strong> d'une commande<br/>
Unix ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>man ls ou ls --help : selon le<br/>
contexte. Pour rechercher : man -k mot.<br/>
Apprendre à lire le man est essentiel<br/>
pour devenir autonome.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>info commande</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur certains systèmes (GNU<br/>
info), plus complet que man mais<br/>
moins universel.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>commande --aide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe avec --help (en anglais), mais<br/>
ce n'est qu'un résumé court.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>help commande</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe pour les commandes intégrées au<br/>
shell (Bash), mais le standard est<br/>
man.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>man commande (par exemple man ls)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : man (manual) ouvre<br/>
la page de manuel. Navigation : flèches,<br/>
/ pour rechercher, q pour quitter.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q11 : Redirection sortie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait ls &gt; liste.txt ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Redirections : &gt; (sortie),<br/>
&gt;&gt; (sortie ajoutée), &lt; (entrée),<br/>
2&gt; (erreur). Ex. : ls &gt; out.txt<br/>
2&gt; err.txt sépare sortie et erreurs.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle affiche le contenu de liste.txt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est précisément<br/>
l'inverse : on écrit<br/>
dans liste.txt, on n'en<br/>
lit pas le contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Redirige la sortie de ls vers le fichier liste.txt au lieu de l'afficher (création/écrasement)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : &gt; redirige la sortie<br/>
standard. Pour <strong>ajouter</strong> sans<br/>
écraser : &gt;&gt;.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle compare la sortie de ls au contenu de liste.txt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune comparaison n'est<br/>
réalisée. L'opérateur &gt;<br/>
sert à rediriger une<br/>
sortie, et non à<br/>
comparer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle renomme la commande ls en liste.txt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucun renommage n'a lieu.<br/>
La commande ls reste<br/>
inchangée ; seul son<br/>
résultat est redirigé<br/>
vers le fichier.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q12 : Pipe</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait le caractère | (pipe) en shell ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Philosophie Unix : « petites commandes<br/>
qui font une seule chose, combinables<br/>
par pipes ». Exemple :<br/>
cat fichier.log | grep "error" | wc -l<br/>
compte les lignes contenant « error ».</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il redirige la sortie d'une commande vers l'entrée de la suivante (chaînage)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : ls | grep .txt<br/>
filtre la sortie de ls pour ne<br/>
garder que ce qui contient « .txt ».<br/>
Très puissant pour combiner des<br/>
commandes simples.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une instruction de boucle</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune notion de boucle<br/>
n'est associée à ce<br/>
symbole dans<br/>
l'interpréteur de<br/>
commandes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un caractère introduisant un commentaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le caractère qui introduit<br/>
un commentaire dans<br/>
l'interpréteur de<br/>
commandes est #, et<br/>
non |.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une simple barre verticale</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sans rapport : c'est un opérateur<br/>
spécial.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q13 : Recherche dans un fichier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>cherche un motif</strong> dans un<br/>
ou plusieurs fichiers ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>grep (Global Regular Expression Print)<br/>
utilise des <strong>expressions régulières</strong> pour<br/>
rechercher un motif efficacement dans un<br/>
ensemble de fichiers.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>grep</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : grep motif fichier.<br/>
grep -r motif dossier/ (récursif).<br/>
grep -i (insensible à la casse).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>look</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe mais limité aux fichiers triés.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>find</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : find cherche des <strong>fichiers</strong><br/>
dans l'arborescence.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>search</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas standard.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q14 : find</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>trouve des fichiers</strong> dans<br/>
l'arborescence selon des critères (nom,<br/>
taille, date) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>find parcourt récursivement et applique<br/>
des actions : afficher, supprimer,<br/>
exécuter une commande sur chaque résultat.<br/>
Très puissant.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>find</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : find . -name "*.txt"<br/>
trouve tous les .txt à partir du<br/>
dossier courant. Très puissant et<br/>
flexible.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>locate</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe (utilise une base indexée), mais<br/>
la commande standard est find.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>grep</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : grep cherche dans le contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>look</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas pour ça.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q15 : chmod</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait chmod +x script.sh ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sans +x, on ne peut pas faire<br/>
./script.sh. Trois bits par catégorie<br/>
(utilisateur, groupe, autres) : r (lecture),<br/>
w (écriture), x (exécution).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Renomme le fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est mv.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Ajoute la permission exécutable au fichier (pour pouvoir le lancer)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chmod change les<br/>
permissions. +x ajoute le bit<br/>
d'exécution. Indispensable pour les<br/>
scripts.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Cache le fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sous Unix, masquer un<br/>
fichier consiste à<br/>
préfixer son nom par<br/>
un point (par exemple<br/>
.fichier). La commande<br/>
chmod ne touche pas<br/>
au nom, elle modifie<br/>
les droits d'accès.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Supprime le fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est rm.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q16 : Variables d'environnement</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment accéder à la valeur d'une <strong>variable<br/>
d'environnement</strong> dans Bash ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Variables courantes : HOME (dossier personnel), USER (nom utilisateur),<br/>
PATH (où chercher les exécutables), PWD (dossier courant).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>@PATH</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le caractère @ n'a<br/>
aucune signification<br/>
particulière dans la<br/>
syntaxe Bash pour<br/>
l'expansion de variables.<br/>
Le shell utilise toujours<br/>
le préfixe $.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>PATH</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est le <strong>nom</strong>, pas une expansion.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$PATH (avec un dollar)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : VAR interpole la valeur de la variable. Exemple : echoHOME affiche le chemin du<br/>
dossier personnel.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>%PATH%</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est la syntaxe Windows (cmd.exe).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q17 : Compter</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle commande <strong>compte</strong> les lignes, mots et<br/>
caractères d'un fichier ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Idiome utile : cat fichier | wc -l<br/>
(compter les lignes), ou plus<br/>
directement wc -l fichier. Très utilisé<br/>
dans des pipelines.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>length</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas standard.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>cnt</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas standard.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>count</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas standard.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>wc</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : wc (word count).<br/>
Options : -l (lignes), -w (mots),<br/>
-c (octets), -m (caractères).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q18 : sudo</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que signifie <strong>sudo</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Bonne pratique : ne pas se connecter en<br/>
root au quotidien, utiliser sudo au<br/>
besoin. Sécurité (limite la fenêtre des<br/>
erreurs) et traçabilité (logué).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Sudden User Operation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette appellation est<br/>
fantaisiste. Le sigle<br/>
sudo correspond à<br/>
<em>Substitute User Do</em>,<br/>
c'est-à-dire l'exécution<br/>
d'une commande pour le<br/>
compte d'un autre<br/>
utilisateur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Substitute User Do</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : exécute la commande en<br/>
tant qu'<strong>autre utilisateur</strong> (par<br/>
défaut root). Permet d'effectuer des<br/>
tâches administratives sans rester<br/>
connecté en root.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Système Unix Démarrage Optimisé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : invention.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Super User Demo</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le sigle officiel est<br/>
<em>Substitute User Do</em>.<br/>
Il décrit précisément<br/>
le rôle de la commande :<br/>
exécuter une instruction<br/>
au nom d'un autre compte,<br/>
le plus souvent celui<br/>
de root.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q19 : Chemin absolu vs relatif</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la différence entre un chemin<br/>
<strong>absolu</strong> et un chemin <strong>relatif</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Mnémonique : « absolu = depuis la<br/>
racine » ; « relatif = depuis ici ».<br/>
Bonne pratique dans les scripts :<br/>
privilégier les chemins absolus pour<br/>
éviter les surprises.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'un fonctionne uniquement sur Windows</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux existent sur tous les<br/>
systèmes d'exploitation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'un est plus rapide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : performance équivalente.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un chemin absolu commence par / (racine) et donne le chemin complet (/home/alice/doc.txt). Un chemin relatif dépend du dossier courant (doc.txt, ../doc.txt).</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : utiliser le bon selon<br/>
le contexte. Le relatif est plus court<br/>
mais ambigu hors contexte. L'absolu est<br/>
robuste mais long.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : différence fondamentale.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q20 : Entrée/sortie standards</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que sont <strong>stdin</strong>, <strong>stdout</strong>, <strong>stderr</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Modèle Unix : tout programme a ces trois<br/>
flux. C'est ce qui rend les pipes si<br/>
naturels. prog 2&gt;&amp;1 redirige aussi les<br/>
erreurs vers la sortie standard.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Trois flux standards d'un programme : entrée standard (clavier), sortie standard (écran), sortie d'erreur (écran, séparée)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : descripteurs de<br/>
fichier 0, 1, 2. Permettent les<br/>
redirections : &gt; (stdout), 2&gt;<br/>
(stderr), &lt; (stdin), | (chaînage<br/>
stdin/stdout).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Trois variables d'environnement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce sont des flux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Trois systèmes d'exploitation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Ces sigles ne désignent<br/>
aucun système d'exploitation.<br/>
Ce sont les trois flux<br/>
standards d'un processus<br/>
Unix : entrée, sortie et<br/>
sortie d'erreur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Trois commandes Unix</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas des commandes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q21 : Pipeline avancé</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait<br/>
cat fichier.log | grep "error" | wc -l ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Optimisation : grep -c "error"<br/>
fichier.log fait directement la même<br/>
chose, sans cat ni wc. Plusieurs<br/>
façons d'arriver au même résultat.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Vide le fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Vider un fichier se ferait<br/>
plutôt avec &gt; fichier.log<br/>
ou truncate. Ici, le<br/>
pipeline n'effectue qu'une<br/>
lecture et fournit en sortie<br/>
un nombre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Supprime les erreurs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune des trois commandes<br/>
ne modifie le fichier<br/>
source. Le pipeline lit<br/>
son contenu, le filtre<br/>
et compte les lignes,<br/>
sans rien supprimer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Affiche les erreurs du fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Pas tout à fait : on <strong>compte</strong>, on<br/>
n'affiche pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Compte le nombre de lignes contenant « error » dans fichier.log</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : cat lit le fichier,<br/>
grep filtre les lignes contenant<br/>
« error », wc -l compte. Pipeline<br/>
typique d'analyse de logs.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q22 : Permissions octales</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que représente chmod 755 script.sh ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Modes courants : 755 (exécutable<br/>
lisible), 644 (fichier texte normal),<br/>
700 (privé). À la place de la notation<br/>
octale : chmod u=rwx,go=rx script.sh.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Permissions : propriétaire rwx (= 4+2+1=7), groupe r-x (= 4+0+1=5), autres r-x (= 5)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : notation <strong>octale</strong><br/>
des permissions Unix. 4 = read, 2 =<br/>
write, 1 = execute. Trois chiffres<br/>
pour les trois catégories.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un identifiant de processus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Un identifiant de processus<br/>
(PID) est attribué au<br/>
lancement du programme,<br/>
il n'a rien à voir avec<br/>
chmod, qui modifie<br/>
seulement les droits<br/>
d'accès au fichier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur de syntaxe</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : syntaxe valide.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une nouvelle taille de fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande chmod ne<br/>
touche jamais à la taille<br/>
du fichier. Elle ne modifie<br/>
que les permissions, ici<br/>
encodées en notation<br/>
octale.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q23 : Shebang</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>À quoi sert la première ligne #!/bin/bash<br/>
d'un script shell ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le shebang doit être en <strong>première<br/>
ligne</strong>, exactement. Bonne pratique :<br/>
#!/usr/bin/env python3 plutôt que<br/>
#!/usr/bin/python3 (utilise le PATH<br/>
pour trouver Python).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>C'est obligatoire en HTML</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le shebang relève des<br/>
scripts Unix, exécutés<br/>
par un interpréteur. En<br/>
HTML, on n'utilise jamais<br/>
cette syntaxe : la balise<br/>
&lt;!DOCTYPE html&gt; joue<br/>
un rôle complètement<br/>
différent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Cela charge un module</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le shebang ne charge<br/>
aucun module. Il indique<br/>
simplement au noyau quel<br/>
interpréteur lancer pour<br/>
exécuter le fichier<br/>
courant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>C'est un commentaire ignoré</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Visuellement c'est un commentaire<br/>
(commence par #), mais cette<br/>
syntaxe spéciale a un rôle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>C'est le shebang (ou hashbang) : indique au noyau quel interpréteur utiliser pour exécuter le script</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : #!/bin/bash =<br/>
Bash ; #!/usr/bin/env python3 =<br/>
Python 3. Permet d'exécuter le script<br/>
directement (./script.sh) sans<br/>
préciser l'interpréteur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q24 : Drame du rm -rf</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi la commande rm -rf / est-elle<br/>
<strong>dangereuse</strong> au point d'être célèbre ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Bonne pratique : toujours vérifier avant<br/>
d'exécuter une rm. Alias prudent :<br/>
alias rm='rm -i' (demande confirmation).<br/>
Pour les très sensibles : utiliser la<br/>
corbeille (commande trash sur certains<br/>
systèmes).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle est lente</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : elle est rapide, c'est même le<br/>
problème.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Elle supprime récursivement (-r) et sans confirmation (-f) à partir de la racine (/), donc tout le système</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : rm ne demande pas<br/>
confirmation, -r traite les sous-<br/>
dossiers, / est la racine. Résultat :<br/>
système détruit. Aujourd'hui, les<br/>
versions modernes de rm refusent par<br/>
défaut.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle est interdite par la loi</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas légalement, mais en<br/>
pratique très risquée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle redémarre l'ordinateur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : effet bien plus grave.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q25 : Synthèse</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi les affirmations suivantes sur le shell<br/>
Unix, laquelle est <strong>fausse</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Important : rm est définitif. Toujours<br/>
vérifier deux fois. La récupération est<br/>
possible mais difficile (outils comme<br/>
extundelete, testdisk).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>grep cherche un motif dans le contenu de fichiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est exactement le<br/>
rôle de grep. Cette<br/>
affirmation est donc<br/>
juste, et n'est pas<br/>
la mauvaise réponse<br/>
attendue dans cette<br/>
question.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>rm met les fichiers dans une corbeille récupérable par défaut</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Faux (donc bonne réponse) : rm<br/>
supprime <strong>définitivement</strong> sans<br/>
corbeille en ligne de commande. La<br/>
corbeille est une notion graphique<br/>
(gérée par l'environnement de bureau).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>pwd affiche le chemin du dossier courant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est<br/>
exacte : pwd (<em>print<br/>
working directory</em>)<br/>
renvoie effectivement<br/>
le chemin absolu du<br/>
dossier courant. Ce<br/>
n'est donc pas la<br/>
mauvaise affirmation<br/>
recherchée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>| permet de chaîner des commandes en redirigeant la sortie de l'une vers l'entrée de l'autre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Vrai : un des concepts les plus<br/>
puissants d'Unix.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q26 : Le caractère « tilde »</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans un terminal Unix, à quoi correspond le caractère<br/>
~ (tilde) en début de chemin ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Trois symboles à connaître pour la navigation : ~<br/>
(répertoire personnel), . (répertoire courant) et<br/>
.. (répertoire parent). On les combine fréquemment :<br/>
~/projets/.config désigne le sous-dossier .config<br/>
du dossier projets placé dans le répertoire<br/>
personnel.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Au répertoire parent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le répertoire parent se note .. (deux<br/>
points). Le tilde n'a aucun rapport avec la<br/>
remontée dans l'arborescence.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Au répertoire courant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le répertoire courant est noté . (un<br/>
point). Le tilde renvoie au répertoire personnel,<br/>
quel que soit l'endroit où l'on se trouve.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Au répertoire racine du système</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la racine se note /. Le tilde, lui,<br/>
renvoie à un répertoire personnel, pas à la<br/>
racine du système.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Au répertoire personnel de l'utilisateur courant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : ~ est une abréviation pour le<br/>
chemin du répertoire personnel (par exemple<br/>
/home/eleve sur Linux ou /Users/eleve sur<br/>
macOS). On peut donc écrire cd ~/Documents<br/>
plutôt que le chemin absolu complet.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q27 : Caractère joker</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans un terminal, on saisit la commande suivante :</p>
<p>`<code><br/>
ls *.txt<br/>
</code></p>
<p>Quel est l'effet du caractère *` ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Quelques motifs courants : <em>.py (tous les fichiers<br/>
Python), image_</em>.png (toutes les images<br/>
numérotées), * (tous les fichiers du dossier).<br/>
Plus précis : ? remplace exactement un caractère<br/>
et [abc] remplace une lettre choisie dans<br/>
l'ensemble.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il représente n'importe quelle suite de caractères, y compris vide, dans un nom de fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : avant l'exécution de la commande,<br/>
le shell remplace <em>.txt par la liste de tous<br/>
les fichiers du dossier courant dont le nom<br/>
finit par .txt. C'est le mécanisme appelé<br/>
</em>globbing*.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il multiplie le résultat par lui-même</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune notion d'arithmétique dans une<br/>
commande ls. Le * est un caractère générique<br/>
pour les noms de fichiers, pas un opérateur de<br/>
multiplication.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il sert à commenter la ligne</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un commentaire dans le shell s'introduit<br/>
avec # placé en début de ligne. Le caractère<br/>
* est un joker pour l'expansion de noms de<br/>
fichiers.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il bloque l'exécution de la commande</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la commande s'exécute normalement et<br/>
liste bien des fichiers. Le caractère * ne<br/>
bloque rien, il est simplement remplacé par les<br/>
noms qui correspondent au motif.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q28 : Fichiers cachés</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sous Unix, à quoi reconnaît-on un fichier ou un<br/>
dossier dit <strong>caché</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette convention est utilisée pour les fichiers de<br/>
configuration personnels (.bashrc, .gitconfig,<br/>
.vimrc) qui doivent rester discrets dans le<br/>
répertoire personnel. Pour visualiser ces fichiers<br/>
dans un terminal, on utilise ls -a.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À un attribut spécial dans le système de fichiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Unix n'utilise pas d'attribut<br/>
« caché ». La convention est purement basée sur<br/>
le nom : tout fichier dont le nom commence par<br/>
un point est masqué par défaut.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À son extension .hidden</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune extension particulière ne marque<br/>
un fichier comme caché. C'est le <strong>préfixe</strong> du<br/>
nom (un point) qui joue ce rôle, pas<br/>
l'extension.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>À son nom qui commence par un point (par exemple .bashrc)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sous Unix, la convention est<br/>
qu'un nom de fichier commençant par . n'est pas<br/>
affiché par ls ni dans la plupart des<br/>
gestionnaires graphiques. Pour les voir, on<br/>
utilise l'option ls -a.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À son emplacement dans le dossier /hidden</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'existe pas de dossier réservé pour<br/>
les fichiers cachés sous Unix. La convention est<br/>
basée sur le nom, pas sur l'emplacement.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q29 : Arborescence standard Unix</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans l'arborescence standard d'un système Unix, à<br/>
quoi sert le répertoire /etc ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Quelques répertoires standards à connaître : /home<br/>
(répertoires personnels), /etc (configuration),<br/>
/tmp (fichiers temporaires), /usr (programmes<br/>
installés et leurs ressources), /var (données<br/>
variables : journaux, courrier), /dev<br/>
(périphériques). Cette organisation est codifiée par<br/>
la <em>Filesystem Hierarchy Standard</em>.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À placer les fichiers exécutables des programmes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les exécutables sont dans /usr/bin,<br/>
/usr/local/bin ou /bin. Le répertoire /etc<br/>
ne contient pas d'exécutables, seulement des<br/>
fichiers texte de configuration.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À héberger les répertoires personnels des utilisateurs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les répertoires personnels se trouvent<br/>
sous /home (par exemple /home/alice). Le<br/>
répertoire /etc est réservé à la configuration<br/>
du système.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>À conserver les fichiers de configuration du système et des services installés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : par convention, /etc regroupe<br/>
les fichiers de configuration globaux (réseau,<br/>
comptes utilisateurs, démons, etc.). On y trouve<br/>
par exemple /etc/hosts, /etc/passwd,<br/>
/etc/ssh/sshd_config.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À stocker les fichiers temporaires des programmes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les fichiers temporaires se rangent dans<br/>
/tmp, qui est régulièrement nettoyé. Le<br/>
répertoire /etc joue un tout autre rôle.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
