<?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 (<code>ls</code>, <code>cd</code>, <code>pwd</code>), manipulation des<br/>
fichiers (<code>cp</code>, <code>mv</code>, <code>rm</code>, <code>mkdir</code>), affichage<br/>
(<code>cat</code>, <code>less</code>), recherche (<code>grep</code>, <code>find</code>),<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 courant</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Réflexe utile : <code>pwd</code> 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><code>where</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>where</code><br/>
n'existe dans le standard<br/>
Unix pour cet usage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>pwd</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>pwd</code> (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><code>cd</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande <code>cd</code> 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><code>ls</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande <code>ls</code> 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 : <code>ls -lh</code><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 <code>-a</code>. L'idiome<br/>
<code>ls -la</code> 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><code>dir</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur Windows (DOS), parfois sur<br/>
Linux comme alias, mais le standard<br/>
Unix est <code>ls</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>ls</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>ls</code> (list) affiche le<br/>
contenu du dossier courant. Options :<br/>
<code>-l</code> (détaillé), <code>-a</code> (cachés), <code>-h</code><br/>
(tailles lisibles).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>show</code></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><code>list</code></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 <code>ls</code>.</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 : <code>cd -</code> revient au dossier<br/>
précédent ; <code>cd ~</code> va au dossier<br/>
personnel ; <code>cd /</code> à 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><code>open</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sur macOS, <code>open</code> lance une application,<br/>
pas un changement de dossier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>enter</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>enter</code><br/>
standard n'existe sous<br/>
Unix pour cet usage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>cd</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>cd</code> (change directory)<br/>
suivi du chemin. Sans paramètre :<br/>
revient au dossier personnel<br/>
(<code>/home/user</code>). <code>cd ..</code> : remonte d'un<br/>
niveau.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>go</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>go</code><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/>
<code>mkdir -p projet/src/utils</code>. 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><code>md</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sur Windows, oui. Sur Unix, c'est<br/>
<code>mkdir</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>new</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>new</code><br/>
standard ne crée un<br/>
dossier sous Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>createdir</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette commande n'est pas<br/>
standard sous Unix. La<br/>
commande consacrée est<br/>
<code>mkdir</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>mkdir</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>mkdir</code> (make<br/>
directory) suivi du nom du dossier.<br/>
Option <code>-p</code> : 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é : <code>cp -r dossier1 dossier2</code><br/>
copie tout l'arbre. <code>cp -i</code> 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><code>copy</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur Windows. Sur Unix, c'est<br/>
<code>cp</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>mv</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande <code>mv</code> 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><code>cp</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>cp source destination</code>.<br/>
Pour copier un dossier : <code>cp -r</code> (récursif).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>duplicate</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>duplicate</code><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 : <code>mv ancien.txt nouveau.txt</code>. Déplacer : <code>mv fichier.txt /home/alice/</code>.</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><code>rename</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe (par exemple en Perl), mais le<br/>
standard Unix est <code>mv</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>move</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur Windows. Sur Unix, <code>mv</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>mv</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>mv source destination</code>.<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><code>change</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>change</code><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><code>rm -r dossier</code> supprime un dossier (et<br/>
tout son contenu). <code>rm -rf /</code> 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><code>delete</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>delete</code><br/>
standard ne supprime un<br/>
fichier sous Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>rm</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>rm fichier.txt</code>.<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><code>erase</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>erase</code><br/>
standard ne supprime un<br/>
fichier sous Unix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>rmdir</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>rmdir</code> ne supprime qu'un dossier<br/>
<strong>vide</strong> ; sur un fichier, il répond<br/>
« Not a directory » et ne supprime rien.</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><code>cat</code> (concatenate) : affiche <strong>et</strong><br/>
concatène plusieurs fichiers<br/>
(<code>cat a.txt b.txt</code>). Variantes : <code>head</code><br/>
(début), <code>tail</code> (fin), <code>tac</code> (à 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><code>read</code></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><code>cat</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>cat fichier.txt</code><br/>
affiche tout le contenu d'un coup.<br/>
Pour les gros fichiers, préférer<br/>
<code>less</code> (page par page).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>show</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune commande <code>show</code><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><code>open</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Sur macOS, <code>open</code> 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 <code>.</code> et <code>..</code> dans un chemin ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tous les dossiers possèdent ces deux<br/>
entrées spéciales (à la racine <code>/</code>, les<br/>
deux désignent la racine elle-même).<br/>
<code>cd ..</code> remonte ; <code>./script.sh</code> permet<br/>
d'exécuter un script du dossier courant,<br/>
car ce dossier ne figure pas dans le<br/>
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 affichés par le système</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><code>.</code> = dossier courant ; <code>..</code> = dossier parent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : permettent les chemins<br/>
relatifs. <code>./script.sh</code> exécute le<br/>
script du dossier courant.<br/>
<code>../fichier</code> 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/>
<code>.</code> et <code>..</code> 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 <code>/</code>, 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><code>man ls</code> ou <code>ls --help</code> : selon le<br/>
contexte. Pour rechercher : <code>man -k mot</code>.<br/>
Apprendre à lire le <code>man</code> 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><code>info commande</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe sur certains systèmes (GNU<br/>
info), plus complet que <code>man</code> mais<br/>
moins universel.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>commande --aide</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe avec <code>--help</code> (en anglais), mais<br/>
ce n'est qu'un résumé court.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>help commande</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe pour les commandes intégrées au<br/>
shell (Bash), mais le standard est<br/>
<code>man</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>man commande</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>man</code> (manual) ouvre<br/>
la page de manuel, par exemple <code>man ls</code>.<br/>
Navigation : flèches, <code>/</code> pour<br/>
rechercher, <code>q</code> 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 <code>ls &gt; liste.txt</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Redirections : <code>&gt;</code> (sortie),<br/>
<code>&gt;&gt;</code> (sortie ajoutée), <code>&lt;</code> (entrée),<br/>
<code>2&gt;</code> (erreur). Ex. : <code>ls &gt; out.txt<br/>
2&gt; err.txt</code> 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 simplement le contenu actuel de <code>liste.txt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est précisément<br/>
l'inverse : on écrit<br/>
dans <code>liste.txt</code>, on n'en<br/>
lit pas le contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Redirige la sortie de <code>ls</code> vers <code>liste.txt</code> au lieu de l'afficher</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>&gt;</code> redirige la sortie<br/>
standard. Pour <strong>ajouter</strong> sans<br/>
écraser : <code>&gt;&gt;</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle compare la sortie de <code>ls</code> au contenu de <code>liste.txt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucune comparaison n'est<br/>
réalisée. L'opérateur <code>&gt;</code><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 <code>ls</code> en <code>liste.txt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Aucun renommage n'a lieu.<br/>
La commande <code>ls</code> 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 <code>|</code> (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/>
<code>cat fichier.log | grep "error" | wc -l</code><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 envoie la sortie d'une commande vers l'entrée de la suivante</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>ls | grep .txt</code><br/>
filtre la sortie de <code>ls</code> 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>Il répète en boucle la commande placée avant lui</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>Il introduit un commentaire ignoré par l'interpréteur</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 <code>#</code>, et<br/>
non <code>|</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il sépare deux commandes exécutées indépendamment l'une de l'autre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le rôle du<br/>
point-virgule <code>;</code>. Avec <code>|</code>, les deux<br/>
commandes sont liées : la seconde lit<br/>
ce que la première écrit.</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><code>grep</code> recherche un mot dans le contenu d'un ou de plusieurs fichiers et affiche les lignes qui le contiennent.</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><code>grep</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>grep motif fichier</code>.<br/>
<code>grep -r motif dossier/</code> (récursif).<br/>
<code>grep -i</code> (insensible à la casse).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>look</code></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><code>find</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>find</code> cherche des <strong>fichiers</strong><br/>
dans l'arborescence.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>search</code></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><code>find</code> 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><code>find</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>find . -name "*.txt"</code><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><code>locate</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe (utilise une base indexée), mais<br/>
la commande standard est <code>find</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>grep</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>grep</code> cherche dans le contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>look</code></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 <code>chmod +x script.sh</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sans <code>+x</code>, on ne peut pas faire<br/>
<code>./script.sh</code>. 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 en ajoutant un suffixe <code>x</code> à son nom</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le renommage se fait avec <code>mv</code>,<br/>
et <code>chmod</code> ne touche jamais au nom.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Ajoute la permission d'exécution au fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>chmod</code> change les<br/>
permissions. <code>+x</code> ajoute le bit<br/>
d'exécution. Indispensable pour les<br/>
scripts.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Rend le fichier invisible dans les listages de <code>ls</code></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/>
<code>.fichier</code>). La commande<br/>
<code>chmod</code> 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 après confirmation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la suppression se fait avec<br/>
<code>rm</code> ; <code>chmod</code> ne détruit jamais rien.</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 : <code>cat fichier | wc -l</code><br/>
(compter les lignes), ou plus<br/>
directement <code>wc -l fichier</code>. 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><code>length</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas standard.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>cnt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas standard.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>count</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas standard.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>wc</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>wc</code> (word count).<br/>
Options : <code>-l</code> (lignes), <code>-w</code> (mots),<br/>
<code>-c</code> (octets), <code>-m</code> (caractères).</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 des deux est nettement plus rapide à utiliser</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : performance équivalente.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>L'absolu part de la racine <code>/</code>, le relatif du dossier courant</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, les deux notations sont interchangeables partout</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la différence est fondamentale,<br/>
un chemin relatif change de cible selon<br/>
le dossier courant.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q20 : Réunir deux fichiers avec cat</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Le fichier <code>debut.txt</code> contient la ligne <code>Bonjour</code> et le fichier <code>fin.txt</code> la ligne <code>Au revoir</code>. Que contient <code>complet.txt</code> après la commande suivante ?<br/>
<pre><code>cat debut.txt fin.txt &gt; complet.txt</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>cat</code> affiche le contenu de ses fichiers dans l'ordre où on les donne. Suivie de <code>&gt; fichier</code>, la commande écrit ce contenu dans un fichier : c'est une façon simple de réunir plusieurs fichiers texte en un seul.</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>Seulement <code>Au revoir</code>, le second fichier remplaçant le premier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>cat</code> affiche ses fichiers l'un après l'autre, dans une seule sortie. La redirection <code>&gt;</code> écrit cette sortie entière dans <code>complet.txt</code>, sans rien écraser entre les deux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>Bonjour</code> puis <code>Au revoir</code>, sur deux lignes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>cat</code> enchaîne le contenu de <code>debut.txt</code> puis celui de <code>fin.txt</code>, et <code>&gt;</code> envoie le tout dans <code>complet.txt</code> au lieu de l'afficher à l'écran.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Rien, <code>cat</code> n'écrivant qu'à l'écran</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans redirection, <code>cat</code> écrit à l'écran ; avec <code>&gt;</code>, ce même texte est envoyé dans le fichier nommé, qui est créé s'il n'existe pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les noms <code>debut.txt</code> et <code>fin.txt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>cat</code> n'écrit pas les noms des fichiers qu'on lui donne, mais leur contenu. C'est ce contenu qui se retrouve dans <code>complet.txt</code>.</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 <code>chmod 755 script.sh</code> ?</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 : <code>chmod u=rwx,go=rx script.sh</code>.</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>Des permissions codées en octal pour trois catégories d'utilisateurs</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) : propriétaire<br/>
<code>rwx</code> (7), groupe <code>r-x</code> (5), autres<br/>
<code>r-x</code> (5).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'identifiant du processus qui exécutera le script</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/>
<code>chmod</code>, 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 simple erreur de syntaxe de la commande</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : syntaxe valide.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La nouvelle taille du fichier exprimée en octets</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La commande <code>chmod</code> 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 — 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 : <code>rm</code> est définitif. Toujours vérifier deux fois la commande avant de la lancer.</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><code>grep</code> cherche un motif dans le contenu de fichiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est exactement le<br/>
rôle de <code>grep</code>. 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><code>rm</code> 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) : <code>rm</code><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><code>pwd</code> affiche le chemin du dossier courant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette affirmation est<br/>
exacte : <code>pwd</code> (<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><code>|</code> 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/>
<code>~</code> (tilde) en début de chemin ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Trois symboles à connaître pour la navigation : <code>~</code><br/>
(répertoire personnel), <code>.</code> (répertoire courant) et<br/>
<code>..</code> (répertoire parent). On les combine fréquemment :<br/>
<code>~/projets/.config</code> désigne le sous-dossier <code>.config</code><br/>
du dossier <code>projets</code> 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, situé juste au-dessus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le répertoire parent se note <code>..</code> (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é <code>.</code> (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 <code>/</code>. 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 : <code>~</code> est une abréviation pour le<br/>
chemin du répertoire personnel (par exemple<br/>
<code>/home/eleve</code> sur Linux ou <code>/Users/eleve</code> sur<br/>
macOS). On peut donc écrire <code>cd ~/Documents</code><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>
<pre><code>ls *.txt</code></pre>
<p>Quel est l'effet du caractère <code>*</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Quelques motifs courants : <code><em>.py</code> (tous les fichiers<br/>
Python), <code>image_</em>.png</code> (toutes les images<br/>
numérotées), <code>*</code> (tous les fichiers du dossier).<br/>
Plus précis : <code>?</code> remplace exactement un caractère<br/>
et <code>[abc]</code> 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 remplace n'importe quelle suite de caractères dans un nom</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : avant l'exécution de la commande,<br/>
le shell remplace <code><em>.txt</code> par la liste de tous<br/>
les fichiers du dossier courant dont le nom<br/>
finit par <code>.txt</code>. 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 de la commande par lui-même</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune notion d'arithmétique dans une<br/>
commande <code>ls</code>. Le <code>*</code> 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 commente la fin de la ligne, ignorée par le shell</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un commentaire dans le shell s'introduit<br/>
avec <code>#</code> placé en début de ligne. Le caractère<br/>
<code>*</code> est un joker pour l'expansion de noms de<br/>
fichiers.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il suspend l'exécution jusqu'à l'appui sur une touche</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la commande s'exécute normalement et<br/>
liste bien des fichiers. Le caractère <code>*</code> 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 configuration personnels, comme <code>.bashrc</code>, qui doivent rester discrets dans le répertoire personnel. Pour visualiser ces fichiers dans un terminal, on utilise <code>ls -a</code>.</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 <code>.hidden</code></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 <code>.bashrc</code>)</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 <code>.</code> n'est pas<br/>
affiché par <code>ls</code> ni dans la plupart des<br/>
gestionnaires graphiques. Pour les voir, on<br/>
utilise l'option <code>ls -a</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À son emplacement dans le dossier <code>/hidden</code></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 : Effet d'un enchaînement tube et redirection</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que produit exactement la commande suivante ?</p>
<p><code>cat notes.txt | sort -n | head -n 3 &gt; top3.txt</code></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les tubes <code>|</code> chaînent la sortie standard d'une commande<br/>
avec l'entrée standard de la suivante : chaque maillon<br/>
filtre ou transforme le flot. La redirection <code>&gt;</code> capture<br/>
enfin ce flot dans un fichier. Cette composition est<br/>
l'un des principes les plus puissants du shell Unix.</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>Elle écrit dans <code>top3.txt</code> les trois plus petites valeurs de <code>notes.txt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le tube <code>|</code> enchaîne <code>cat</code> (lecture<br/>
du fichier), <code>sort -n</code> (tri numérique) et <code>head -n 3</code><br/>
(trois premières lignes du flot trié, donc les plus<br/>
petites valeurs). La redirection <code>&gt;</code> envoie ce flot<br/>
final dans <code>top3.txt</code> : rien ne s'affiche dans le<br/>
terminal et <code>notes.txt</code> n'est pas modifié.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle affiche les trois premières lignes de <code>notes.txt</code> à l'écran sans modifier les fichiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans <code>sort</code>, on aurait peut-être pris les<br/>
trois premières lignes du fichier tel quel, mais le<br/>
tri intervient avant <code>head</code>. Et la redirection <code>&gt;</code><br/>
empêche tout affichage à l'écran.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle supprime les trois premières lignes de <code>notes.txt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>head</code> extrait des lignes mais ne modifie pas<br/>
le fichier source. Aucune commande de suppression<br/>
n'est utilisée ici.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle crée un fichier <code>top3.txt</code> contenant les trois premières lignes de <code>notes.txt</code> dans leur ordre d'origine, sans tri</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>sort -n</code> est appliqué avant <code>head</code>, donc<br/>
les trois lignes écrites sont les plus petites<br/>
valeurs, pas les trois premières lignes du fichier<br/>
d'origine.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q30 : Compter les lignes trouvées par grep</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Le fichier <code>villes.txt</code> indique, pour chaque élève, sa ville de naissance puis sa ville actuelle :<br/>
<pre><code>Ana;Lyon;Lyon
Bob;Paris;Lille
Cléo;Nice;Lyon
Dan;Lens;Paris</code></pre><br/>
Qu'affiche la commande suivante ?<br/>
<pre><code>grep Lyon villes.txt | wc -l</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le tube <code>|</code> envoie la sortie de la première commande à l'entrée de la seconde. <code>grep</code> produit les lignes qui contiennent le mot cherché, une fois chacune, et <code>wc -l</code> compte les lignes qu'il reçoit.</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><code>3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tu comptes les occurrences du mot <code>Lyon</code>, mais <code>grep</code> affiche des lignes entières. La ligne d'Ana, où le mot apparaît deux fois, n'est affichée qu'une fois.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>wc -l</code> ne lit pas <code>villes.txt</code>, il compte les lignes que <code>grep</code> lui transmet par le tube. Seules les lignes contenant <code>Lyon</code> lui parviennent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>grep</code> ne s'arrête pas à la première ligne trouvée, il parcourt tout le fichier. Les lignes d'Ana et de Cléo contiennent toutes deux <code>Lyon</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>grep</code> transmet les deux lignes qui contiennent <code>Lyon</code>, celles d'Ana et de Cléo, et <code>wc -l</code> compte ces deux lignes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q31 : Écraser ou compléter un fichier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle différence entre <code>ls &gt; liste.txt</code> et <code>ls &gt;&gt; liste.txt</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Choisir <code>&gt;&gt;</code> pour tenir un journal qui grandit, <code>&gt;</code> pour produire<br/>
un fichier neuf à chaque fois.</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><code>&gt;</code> remplace le contenu de <code>liste.txt</code>, <code>&gt;&gt;</code> ajoute à la fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la redirection simple écrase le fichier, la<br/>
double y ajoute la sortie sans toucher à ce qui s'y trouvait.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>&gt;</code> écrit dans le fichier, <code>&gt;&gt;</code> l'affiche à l'écran</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux écrivent dans le fichier ; rien n'apparaît à<br/>
l'écran.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>&gt;&gt;</code> écrit deux fois la sortie, une par chevron</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la sortie n'est écrite qu'une fois, après le contenu<br/>
existant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune, les deux écritures étant strictement équivalentes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec <code>&gt;</code>, un fichier existant perd son contenu.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q32 : Les premières lignes d'un fichier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait la commande <code>head -n 3 notes.txt</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>head</code> et <code>tail</code> montrent le début et la fin d'un fichier, pratiques<br/>
pour jeter un œil à un gros fichier sans l'afficher en entier.</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>Elle affiche les trois premières lignes du fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>head</code> montre le début d'un fichier, dix lignes<br/>
par défaut, ou le nombre indiqué par <code>-n</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle affiche les trois dernières lignes du fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la fin d'un fichier s'affiche avec <code>tail</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle supprime les trois premières lignes du fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>head</code> ne modifie jamais le fichier, elle affiche.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle affiche les lignes qui contiennent le nombre 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la recherche d'un motif se fait avec <code>grep</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q33 : Trier les lignes d'un fichier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Le fichier <code>prenoms.txt</code> contient <code>Sami</code>, <code>Lina</code>, <code>Nora</code>, une par<br/>
ligne. Qu'affiche <code>sort prenoms.txt</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>sort</code> est un filtre : il lit, trie, affiche. Pour conserver le<br/>
résultat, on redirige vers un fichier.</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><code>Lina</code>, <code>Nora</code>, <code>Sami</code>, dans l'ordre alphabétique</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>sort</code> affiche les lignes triées, sans modifier<br/>
le fichier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>Sami</code>, <code>Lina</code>, <code>Nora</code>, le fichier étant trié sur place</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>sort</code> affiche un résultat trié et laisse le fichier<br/>
intact.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le nombre de lignes du fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : compter est le rôle de <code>wc</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>Sami</code>, <code>Nora</code>, <code>Lina</code>, dans l'ordre inverse</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ordre décroissant demande l'option <code>-r</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q34 : Un fichier vidé par mégarde</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Théo tape <code>sort notes.txt &gt; notes.txt</code> pour trier son fichier sur<br/>
place. Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une redirection vers le fichier d'entrée est un piège classique :<br/>
<code>sort notes.txt &gt; tri.txt</code> puis <code>mv tri.txt notes.txt</code>.</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>Le fichier est vidé avant d'être lu, et il ne reste rien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la redirection <code>&gt;</code> ouvre et vide <code>notes.txt</code><br/>
avant que <code>sort</code> ne commence à le lire. Il faut écrire dans un<br/>
autre fichier, puis renommer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le fichier est trié sur place, comme voulu</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la redirection agit avant la commande, qui lit un<br/>
fichier déjà vide.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le terminal refuse, un fichier ne pouvant être lu et écrit à la fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun refus ; c'est précisément le problème, l'ordre<br/>
des opérations n'est pas vérifié.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le fichier est dupliqué</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : rien n'est copié ; le contenu est perdu.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q35 : Fournir un fichier en entrée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme <code>python3 moyenne.py</code> lit des nombres au clavier avec<br/>
<code>input</code>. Que fait <code>python3 moyenne.py &lt; nombres.txt</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Trois redirections : <code>&lt;</code> pour l'entrée, <code>&gt;</code> et <code>&gt;&gt;</code> pour la sortie.<br/>
Elles permettent de tester un programme sans rien taper.</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>Le programme lit ses saisies dans le fichier, pas au clavier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>&lt;</code> redirige l'entrée standard. Chaque <code>input</code><br/>
reçoit la ligne suivante du fichier, comme si elle avait été<br/>
tapée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le programme écrit ses résultats dans <code>nombres.txt</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : écrire dans un fichier se fait avec <code>&gt;</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le programme est comparé au fichier, ligne par ligne</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>&lt;</code> n'est pas un opérateur de comparaison dans le<br/>
shell.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le fichier est exécuté comme un programme Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme reste <code>moyenne.py</code> ; le fichier ne fait<br/>
que fournir les données.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q36 : cd sans argument</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait la commande <code>cd</code> tapée sans aucun argument ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>cd</code> seul, <code>cd ~</code> et <code>cd /home/nom</code> conduisent au même endroit : le<br/>
dossier 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="100" format="html">
    <text><![CDATA[<p>Elle ramène dans le dossier personnel de l'utilisateur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sans destination, <code>cd</code> retourne au dossier<br/>
personnel, le même que <code>cd ~</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle remonte d'un niveau dans l'arborescence</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : remonter d'un niveau s'écrit <code>cd ..</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle affiche le chemin du dossier courant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : afficher le dossier courant est le rôle de <code>pwd</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle provoque une erreur, un argument étant obligatoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'argument est facultatif.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q37 : Lister un dossier sans s'y déplacer</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Lina est dans son dossier personnel et veut voir le contenu de<br/>
<code>/home/lina/cours/images</code> sans changer de dossier courant. Que<br/>
tape-t-elle ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La plupart des commandes acceptent un chemin : <code>ls</code>, <code>cat</code> ou <code>cp</code><br/>
travaillent sur n'importe quel dossier sans qu'on s'y déplace.</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><code>ls cours/images</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>ls</code> accepte un chemin en argument, relatif au<br/>
dossier courant ou absolu. Le dossier courant reste inchangé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>cd cours/images</code> puis <code>ls</code>, sans autre possibilité</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cela fonctionne, mais change le dossier courant, ce que<br/>
Lina ne voulait pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>ls</code> seul, qui liste toute l'arborescence</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>ls</code> seul ne liste que le dossier courant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>open cours/images</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>open</code> n'est pas une commande de listage sous Linux.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q38 : Le sommet de l'arborescence</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que désigne <code>/</code> seul, par exemple dans <code>ls /</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tout chemin absolu commence par <code>/</code>, la racine : <code>/home/lina/cours</code><br/>
descend de niveau en niveau depuis le sommet.</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>La racine, dossier qui contient tous les autres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>ls /</code> liste les dossiers de premier niveau du<br/>
système, comme <code>home</code>, <code>etc</code> ou <code>usr</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le dossier personnel de l'utilisateur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le dossier personnel s'écrit <code>~</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le dossier courant, quel qu'il soit</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le dossier courant s'écrit <code>.</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un séparateur sans signification lorsqu'il est seul</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>/</code> sépare les niveaux d'un chemin, mais seul il désigne<br/>
la racine.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q39 : Atteindre un dossier voisin</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Lina est dans <code>/home/lina/cours/nsi</code>. Le fichier <code>logo.png</code> se<br/>
trouve dans <code>/home/lina/cours/images</code>. Quel chemin relatif le<br/>
désigne ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un chemin relatif se construit depuis le dossier courant : chaque<br/>
<code>..</code> remonte d'un niveau, puis on redescend.</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><code>../images/logo.png</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>..</code> remonte dans <code>cours</code>, puis on descend dans<br/>
<code>images</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>images/logo.png</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce chemin chercherait <code>images</code> à l'intérieur de <code>nsi</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>/images/logo.png</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un chemin commençant par <code>/</code> part de la racine, où il<br/>
n'y a pas de dossier <code>images</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>../../images/logo.png</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : deux remontées mènent dans <code>/home/lina</code>, qui ne contient<br/>
pas <code>images</code> directement.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q40 : Copier un dossier entier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p><code>cp projet sauvegarde</code> échoue avec un message indiquant que<br/>
<code>projet</code> est un dossier. Comment le copier avec son contenu ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Copier ou supprimer un dossier demande l'option récursive, qui<br/>
parcourt toute la sous-arborescence.</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><code>cp -r projet sauvegarde</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'option <code>-r</code>, pour récursif, demande à <code>cp</code> de<br/>
descendre dans le dossier et de copier tout ce qu'il contient.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>cp projet/* sauvegarde</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cela copierait les fichiers du premier niveau, mais pas<br/>
les sous-dossiers.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>mv projet sauvegarde</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>mv</code> déplace, l'original disparaîtrait.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>copy projet sauvegarde</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>copy</code> n'est pas une commande Unix.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Shell Unix et commandes — Q41 : Un renommage qui écrase</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Le dossier contient <code>brouillon.txt</code> et <code>final.txt</code>. Théo tape<br/>
<code>mv brouillon.txt final.txt</code>. Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les commandes du shell font ce qu'on leur demande sans discuter :<br/>
vérifier la destination avant <code>mv</code> ou <code>cp</code> évite les pertes.</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><code>final.txt</code> est écrasé par <code>brouillon.txt</code>, sans avertissement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>mv</code> écrase la destination si elle existe. Le<br/>
contenu de l'ancien <code>final.txt</code> est perdu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le terminal refuse, <code>final.txt</code> existant déjà dans le dossier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : par défaut, aucune protection ; l'option <code>-i</code> demande<br/>
une confirmation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les deux fichiers sont fusionnés en un seul</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>mv</code> ne concatène rien ; réunir deux fichiers se fait<br/>
avec <code>cat</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>brouillon.txt</code> est copié dans <code>final.txt</code> et conservé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>mv</code> déplace ; l'original n'existe plus.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
