\begin{exercise}[subtitle={Classe renversée}, step={1}, origin={Ma tête}, topics={ Système d'exploitation }, tags={ Linux }, mode={\groupMode}]
    Faire des recherches, préparer une diapositive puis faire la présentation de votre réponse à une des questions suivantes
    \begin{multicols}{2}
        \begin{enumerate}
            \item À quoi sert un système d'exploitation ?
            \item Quels sont les principaux systèmes d'exploitations et quels sont les liens historiques entre eux?
            \item Expliquer ce qu'est un logiciel libre, un logiciel propriétaire et un logiciel gratuit.
            \item Comment sont organisés les fichiers sous Linux?
        \end{enumerate}
    \end{multicols}
\end{exercise}

% ----------
% Étape 2

\begin{exercise}[subtitle={TP - navigation}, step={2}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\infoMode}]
    Dans ce TP, nous allons nous déplacer et explorer le serveur où vous aviez déposé vos pages webs. Vous profiterez de ce TP pour compléter le mémo du cours.
    \begin{enumerate}
        \item \textbf{Connexion au serveur}
        \item \textbf{Où suis-je ?} La commande \mintinline{bash}{pwd} permet de savoir quel est répertoire nous sommes. Exécuter cette commande, noter le résultat et reconnaître les différents éléments qui le composent.
        \item \textbf{Que fais-je ?} Pour obtenir de l'aide, vous pouvez accéder au manuel des commandes. Pour cela, vous avez deux possibilités (qui dépendent de l'environnement Linux) :
            \begin{itemize}
                \item Exécuter \mintinline{bash}{man command}.
                \item Exécuter \mintinline{bash}{command --help}.
            \end{itemize}
            Aller chercher l'aide de la commande \mintinline{bash}{pwd} pour compléter le mémo. Vous devrez par la suite explorer le manuel des commandes pour chercher le comportement voulu.
        \item \textbf{Qu'y a-t-il ?} Pour lister les fichiers et dossiers du répertoire d'un répertoire, on utilise la commande \mintinline{bash}{ls}.
            \begin{enumerate}
                \item Lister le contenu du répertoire.
                \item Lister le contenu du répertoire avec l'option \mintinline{bash}{-a}. Quel différence y a-t-il avec le résultat sans cette option?
                \item Lister le contenu du répertoire avec l'option \mintinline{bash}{-l}. Noter les informations obtenus.
                \item Lister le contenu du répertoire \texttt{public\_html}.
            \end{enumerate}
            On peut aussi utiliser la commande \mintinline{bash}{tree} qui liste les fichiers et dossiers sous forme d'arbre.
            \begin{enumerate}
                \setcounter{enumi}{4}
                \item Exécuter la commande \mintinline{bash}{tree}.
                \item Exécuter la commande \mintinline{bash}{tree} avec l'option \mintinline{bash}{-L 1} puis \mintinline{bash}{-L 2}. Que permet de faire cette option?
            \end{enumerate}
        \item \textbf{Où vais-je ?} Pour se déplacer, on utilisera la commande \mintinline{bash}{cd}.
            \begin{enumerate}
                \item Afficher le répertoire courant. Se déplacer dans le répertoire \texttt{public\_html}. Puis afficher à nouveau le répertoire courant.
                \item Exécuter \mintinline{bash}{cd ../} puis afficher le répertoire courant. Que s'est-il passé ?
                \item Recommencer l'opération. Afficher le répertoire courant et lister le contenu du répertoire. Que voyez-vous?
                \item Recommencer encore une fois l'opération.
                \item Exécuter \mintinline{bash}{cd ~}. Où êtes vous?
                \item Exécuter \mintinline{bash}{cd ../../}. Où êtes vous?
            \end{enumerate}
    \end{enumerate}
\end{exercise}

\begin{exercise}[subtitle={Navigation virtuelle}, step={2}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\paperMode}]
    Ci-dessous, vous trouverez un enchainement de commandes shells avec les sorties. Vous devrez dessiner l'arborescence correspondante (les dossiers seront dans des rectangles et les fichiers dans des ovales) et indiquer en bleu les déplacements réalisés.

    \begin{center}
        \begin{minipage}{0.8\linewidth}
            \inputminted[bgcolor=base3]{bash}{./annexes/nav_virtu.shell}
        \end{minipage}
    \end{center}
\end{exercise}
% ----------
% Étape 3

\begin{exercise}[subtitle={TP - interaction}, step={3}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\groupMode}]
    Dans ce TP, nous allons nous interagir avec le système de fichier. Vous profiterez de ce TP pour compléter le mémo du cours.
    \begin{enumerate}
        \item Connecter vous au serveur et assurez vous que vous êtes bien dans votre répertoire personnel.
        \item \textbf{Créer des dossiers} avec la commande \mintinline{bash}{mkdir}
            \begin{enumerate}
                \item Créer un dossier \texttt{TP\_interaction} puis se déplacer dedans.
                \item Créer les dossiers \texttt{boulot} \texttt{trash} et \texttt{sauvegarde}.
            \end{enumerate}
        \item \textbf{Créer un fichier (vide)} avec la commande \mintinline{bash}{touch}
            \begin{enumerate}
                \item Dans le répertoire \texttt{boulot} créer les fichiers vides suivants
                    \begin{center}
                        \texttt{ex1.py} \qquad \texttt{index.html} \qquad \texttt{style.css} \qquad ex2.py
                    \end{center}
                \item Dans ce même répertoire, créer un dossier \texttt{assets} pour y placer un fichier nommé \texttt{image.png}
                \item Pour vérifier que tout a été bien fait, en exécutant ces deux commandes, vous devriez avoir le résultat suivant:
                    \begin{center}
                        \begin{minipage}{0.8\linewidth}
                            \VerbatimInput{annexes/TP_inter1.shell}
                            \includegraphics[scale=0.6]{./fig/TP_interaction_tree1}
                        \end{minipage}
                    \end{center}
            \end{enumerate}
        \item \textbf{Supprimer des fichiers} avec la commande \mintinline{bash}{rm}
            \begin{enumerate}
                \item Supprimer les fichiers \texttt{ex1.py} et \texttt{ex2.py}
                \item Supprimer le dossier \texttt{trash}. Pour cela vous aurez besoin de passer l'option \texttt{-r} pour autoriser la suppression de dossiers.
            \end{enumerate}
        \item \textbf{Copier des fichiers} avec la commande \mintinline{bash}{cp}
            \begin{enumerate}
                \item Copier le fichier \texttt{index.html} dans le même répertoire avec le nom \texttt{page1.html}
                \item Copier le fichier \texttt{index.html} dans le répertoire \texttt{sauvegarde} en conservant le même nom.
                \item Copier tout le dossier \texttt{boulot} dans le répertoire \texttt{sauvegarde}. Vous aurez besoin d'ajouter l'option \texttt{-r} pour autoriser la copie de dossier de façon récursive.
                \item Pour vérifier que tout a été bien fait, en exécutant ces deux commandes, vous devriez avoir le résultat suivant:
                    \begin{center}
                        \begin{minipage}{0.8\linewidth}
                            \VerbatimInput{annexes/TP_inter1.shell}
                            \includegraphics[scale=0.6]{./fig/TP_interaction_tree2}
                        \end{minipage}
                    \end{center}
            \end{enumerate}
        \item \textbf{Renommer/déplacer des fichiers} avec la commande \mintinline{bash}{mv}
            \begin{enumerate}
                \item Déplacer le fichier \texttt{page1.html} vers \texttt{home.html}
                \item Renommer le dossier \texttt{boulot} en \texttt{pageweb}
                \item Pour vérifier que tout a été bien fait, en exécutant ces deux commandes, vous devriez avoir le résultat suivant:
                    \begin{center}
                        \begin{minipage}{0.8\linewidth}
                            \VerbatimInput{annexes/TP_inter1.shell}
                            \includegraphics[scale=0.6]{./fig/TP_interaction_tree3}
                        \end{minipage}
                    \end{center}
            \end{enumerate}
        \item \textbf{Éditer un fichier} avec la commande \mintinline{bash}{nano}.

            Mettre une balise \texttt{h1} avec le titre de votre choix dans le fichier \texttt{index.html}
    \end{enumerate}
\end{exercise}

\begin{exercise}[subtitle={Europe}, step={3}, origin={Parlez-vous Shell ? de Thomas Hugel chez Ellipses}, topics={ Système d'exploitation }, tags={ Linux }, mode={\computerMode}]
    On se place dans le répertoire personnel de l'utilisateur représenté par le raccourci ~.

    \begin{enumerate}
        \item Dans son répertoire personnel, créer le répertoire ̀̀TP-SHELL puis entrer dans ce répertoire.
        \item Créer le répertoire Europe et changer de répertoire courant pour Europe.
        \item Écrire une suite de commandes qui permet de construire l'arborescence ci-dessous sans quitter le répertoire Europe. Les fichiers apparaissant avec des rectangles sont des répertoires et les autres sont des fichiers.
            \begin{center}
                \includegraphics[scale=0.4]{./fig/graphe-europe}
            \end{center}

        \item Créer dans ~/TP-SHELL une copie de tout le répertoire Europe avec ses sous-répertoires et nommer cette copie Vieille-Europe. Les modifications qui suivent devront être faites dans Europe.
        \item Appliquons le traité de Francfort de 1871. Se placer dans le répertoire Prusse et déplacer Belfort dans France puis déplacer Alsace dans Prusse. Revenir dans Europe et renommer Prusseen Allemagne.
        \item Depuis Europe, afficher le contenu de Bordeaux puis détruire ce fichier.
        \item Appliquons le traité de Versailles de 1919. Depuis France, ramener Alsace en France puis détruire Vieille-Europe.
    \end{enumerate}
\end{exercise}

\begin{exercise}[subtitle={Expansion des nom, globbing}, step={3}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\computerMode}]
    \begin{enumerate}
        \item \textbf{Mise en place} créer un dossier \texttt{globbing}, exécuter la commande suivante (vous n'avez pas à la comprendre) puis afficher la liste des fichiers :
            \begin{center}
                \begin{minipage}{0.8\linewidth}
                    \inputminted[bgcolor=base3]{bash}{./annexes/globbing_consigne.shell}
                \end{minipage}
            \end{center}
        \item Exécuter les commandes suivantes et noter le résultat.
            \begin{center}
                \begin{minipage}{0.8\linewidth}
                    \inputminted[bgcolor=base3]{bash}{./annexes/globbing.shell}
                \end{minipage}
            \end{center}
        \item Que représente l'opérateur \texttt{*} ?
        \item Écrire une commande qui affiche les éléments suivants
            \begin{multicols}{2}
                \begin{enumerate}[leftmargin=*]
                    \item Tous les fichiers qui se terminent pas la lettre g.
                    \item Tous les fichiers jpg et jpeg.
                    \item Tous les fichiers avec un 1 dans le nom.
                    \item Tous les fichiers qui commencent par la lettre p.
                \end{enumerate}
            \end{multicols}
    \end{enumerate}
\end{exercise}
% ----------
% Étape 4

\begin{exercise}[subtitle={Gestion des droits}, step={4}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\groupMode}]
\end{exercise}

% ----------
% Étape 4

\begin{exercise}[subtitle={Hacking}, step={5}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\groupMode}]
\end{exercise}
