.. _ref-terminal: Introduction au terminal ======================== Nous vous rappelons que par convention, les commandes à taper dans une *invite de commande (shell)* sont précédées par le caractère **$** ou le caractère **#**. **$** signifie que la commande peut être exécutée par n'importe quel utilisateur alors que **#** signifie que la commande doit être exécutée par un utilisateur possédant les droits administrateurs. **Ces caractères ne doivent pas être copiés dans votre terminal avec la commande**. Pour les utilisateurs de Windows, vous devez installer `WSL `__. Une fois dans WSL, votre terminal se comportera comme un système Linux. .. warning:: Attention ! Si vous êtes sur Windows, vous devez installer WSL afin de travailler dans un environnement Linux. Utilisation du terminal ----------------------- Veuillez sélectionner l'onglet correspondant à votre système : .. tabs:: .. tab:: WSL sur Windows WSL permet de faire tourner un système Linux sur Windows. En réalité, il s'agit d'une machine virtuelle Linux intégrée étroitement avec Windows. WSL nécessite que le support de la virtualisation soit activé au niveau du BIOS. Cette option peut être activée par défaut, essayez donc de faire le tuto sans changer les options de votre BIOS. Si vous rencontrez une erreur similaire à celle ci-dessous lors de l'installation de WSL, vous pouvez suivre les informations pour accéder au BIOS et activer la virtualisation. .. image:: ../tphtml/wslerror.png .. raw:: html
Activer le support pour la virtualisation (seulement si vous rencontrez une erreur plus tard) .. image:: ../tphtml/bios_virtualization.png Il se peut que chez vous le BIOS ainsi que le nom de l'option soit différent. .. raw:: html
Vous ne savez pas comment accéder au BIOS ? .. image:: ../tphtml/settings.png .. image:: ../tphtml/update.png .. image:: ../tphtml/advanced_options.png .. image:: ../tphtml/recovery.png .. image:: ../tphtml/startup.png Vous pouvez également accéder au BIOS en redémarrant votre machine et en appuyant sur une touche spéciale. Il s'agit en général de la touche DELETE ou F12, cela dépend de votre machine. Si vous ne savez pas, vous pouvez chercher sur internet en tapant "BIOS key ". .. raw:: html
.. raw:: html
Vous pouvez ouvrir un invité de commande, Powershell par exemple .. image:: ../tphtml/wsl_install.png Dans le terminal la commande *wsl --install* permet d'installer WSL .. image:: ../tphtml/wsl_install_cmd.png Une fois l'installation terminée n'oubliez pas de relancer votre machine. .. image:: ../tphtml/wsl_finished.png Ensuite, pour lancer WSL, vous pouvez simplement taper *Ubuntu* dans la barre de recherche Windows. .. image:: ../tphtml/wsl_start.png .. image:: ../tphtml/wsl_pwd.png Il est utile de comprendre comment accéder aux fichiers Windows depuis Linux et vice-versa. .. image:: ../tphtml/windows_fs.png Depuis Linux, le système de fichier Windows est monté dans /mnt/c. L'image ci-dessous montre que le fichier *notes_windows* se trouvant dans Documents/linfo1002 sous Windows, se trouve dans /mnt/c/Users/$UTILISATEUR/Documents/linfo1002 sous Linux. Dans l'autre sens, les fichiers créés sous Linux peuvent être accédés depuis Windows. Le système de fichier Linux peut être navigué par l'explorateur de fichier Windows depuis Linux->Ubuntu->root. Si nous créons un fichier sous Linux dans /root/Documents/linfo1002, nous pouvons voir qu'il est accessible sous Windows dans Linux->Ubuntu->root->Documents->linfo1002. .. image:: ../tphtml/wsl_linux_fs.png Nous venons de voir que chacun des systèmes d'exploitation peut accéder au système de fichier de l'autre. Néanmoins, pour des raisons de performance, nous vous conseillons de travailler depuis le système de fichier Linux. Pour créer votre dossier de travail linfo1002 dans documents, vous pouvez utiliser les commandes suivantes. .. code-block:: bash $ mkdir Documents $ mkdir Documents/linfo1002 Ou bien de façon équivalente .. code-block:: bash $ mkdir -p Documents/linfo1002 .. tab:: MacOS Sur MacOS, le navigateur de fichier est appelé le "Finder". Vous trouverez plus d'information sur le Finder ici : `https://support.apple.com/fr-be/guide/mac-help/mchlp2605/mac`. .. image:: apple_terminal.png Dans la barre latérale, vous avez divers raccourcis vers des dossiers sur votre ordinateur. Celui ouvert sur l'image est le bureau (Desktop en Anglais). Dans la barre de menu, sélectionner "Aller" et "Ordinateur". .. image:: ../tphtml/finder2.jpg Observez une série de dossiers dans "Macintosh HD", ceci est la **racine** de votre système. Dans un terminal elle correspond au dossier **/** .. image:: ../tphtml/finder3.jpg Ouvrez un terminal (Commande + Espace, tapez ensuite "Terminal"). Listez les dossiers de la racine avec : .. code-block:: bash $ ls / .. image:: ../tphtml/macterm1.jpg Apple est connu pour mettre la priorité sur l'interface utilisateur. Le dossier "Utilisateurs" s'appelle en réalité "Users". Listez les dossiers d'utilisateurs avec : .. code-block:: bash $ ls /Users Shared tbarbette Ce dossier contient un dossier "Shared" et un dossier "tbarbette". Voyons maintenant le contenu de tbarbette .. code-block:: bash $ ls /Users/tbarbette/ Applications Documents Movies Pictures Desktop Library Music Public Nous vous proposons de travailler dans un dossier dédié au cours `linfo1002` dans `Documents`. Changez le répertoire courant pour Documents avec : .. code-block:: bash $ cd /Users/tbarbette/Documents En changeant évidemment `tbarbette` par votre propre nom d'utilisateur. Créez un dossier pour le cours avec `mkdir` et entrez ensuite dedans : .. code-block:: bash $ mkdir linfo1002 $ cd linfo1002 Si vous êtes perdus, vous pouvez toujours faire `pwd` pour savoir où vous êtes: .. code-block:: bash $ pwd /Users/tbarbette/Documents/linfo1002 Cette organisation de dossier et sous-dossiers est appelée "arborescence". Cette arborescence peut être retrouvée dans le Finder. Il existe cependant un raccourci utile pour ouvrir le finder dans un dossier sur MacOS : .. code-block:: bash $ open . Cela ouvre le finder dans le dossier courant, donc linfo1002: .. image:: ../tphtml/finder4.jpg C'est terminé pour cette introduction sur l'arborescence, vous savez désormais vous déplacer dans le terminal et dans l'interface graphique du finder. .. tab:: Linux Le cours suppose que vous utilisez Ubuntu. Si vous utilisez une autre distribution, c'est à vous de prendre en compte les différences. Néanmoins, en général, elles sont négligeables. La principale est le gestionnaire de paquets (*package manager* en anglais). Dans le cas d'Ubuntu, *apt* et plus récemment *snap* sont utilisés. Sous Ubuntu, lorsque vous ouvrez un terminal (CTRL+ALT+T), vous vous trouvez dans le dossier /home/${UTILISATEUR}, où ${UTILISATEUR} est le nom de votre utilisateur. La commande *pwd* vous permet de savoir où vous êtes. .. code-block:: bash $ pwd Cette commande donne chez moi .. code-block:: console ntyunyayev@ubuntu-laptop:~$ pwd /home/ntyunyayev ntyunyayev@ubuntu-laptop:~$ Pour connaitre votre utilisateur (*user* en anglais) la commande suivante est disponible .. code-block:: bash $ echo $USER ce qui donne .. code-block:: console ntyunyayev@fedora-laptop:~$ echo $USER ntyunyayev ntyunyayev@fedora-laptop:~$ Pour vous organiser, nous vous invitons à créer un dossier dédié pour le cours dans le dossier *Documents*. Pour naviguer dans un dossier depuis le terminal, vous pouvez utiliser la commande *cd*. Une astuce utile est d'utiliser *~/* qui est un alias pour /home/$UTILISATEUR. .. code-block:: bash $ cd ~/Documents Créons notre dossier de travail qui sera dédié au cours LINFO1002, c'est ici que nous stockerons tous les dossiers et fichiers relatifs aux TPs ainsi que les projets. Pour créer un dossier, nous utilisons la commande *mkdir*. .. code-block:: bash $ mkdir linfo1002 Le terminal est un outil puissant, néanmoins, surtout au début l'utilisation d'outils graphiques pour manipuler le système de fichier peut être utile. Il est important de rappeler qu'à la fois le terminal et l'explorateur de fichier (qui est l'outil graphique pour manipuler les fichiers) manipulent le même système de fichier. C'est-à-dire qu'il n'y a aucune différence entre créer un fichier depuis le terminal ou depuis l'explorateur de fichier. Un fichier ou dossier créé depuis le terminal est visible depuis l'explorateur de fichiers et vice-versa. Au niveau des explorateurs de fichiers, sous Linux en général et même sous Ubuntu, il y a plus de choix que sur Windows ou Mac. Il y a plusieurs variantes d'Ubuntu avec des environnements de bureau différents et donc des explorateurs de fichiers différents. Pour ouvrir votre explorateur, il suffit en général de cliquer sur l'icône qui ressemble à un dossier sur votre bureau ou sur le *dock*. Par exemple, *Thunar* est un explorateur de fichier très utilisé. .. image:: ../tphtml/linux_file_explorer.png Vérifions que le dossier ~/Documents/linfo1002 existe bien .. image:: ../tphtml/linux_linfo1002.png Si nous créons un nouveau fichier depuis l'explorateur .. image:: ../tphtml/linux_create_file.png Nous pouvons vérifier qu'il est visible depuis la ligne de commande à l'aide de la commande *ls* .. code-block:: bash $ ls -l ~/Documents/linfo1002 qui donne la sortie suivante : .. code-block:: console ntyunyayev@fedora-laptop:~$ ls -l ~/Documents/linfo1002 total 0 -rw-r--r--. 1 ntyunyayev ntyunyayev 0 Jan 17 11:42 notes ntyunyayev@fedora-laptop:~$ On peut voir qu'il y a bien un fichier *notes* de 0 bytes. Commandes de base ----------------- Voici un résumé des commandes de base pour naviguer et manipuler des fichiers dans le terminal : * **pwd** : affiche le répertoire courant (Print Working Directory) * **ls** : liste les fichiers et dossiers du répertoire courant * **cd ** : change de répertoire (Change Directory) * **mkdir ** : crée un nouveau dossier (Make Directory) * **touch ** : crée un fichier vide * **rm ** : supprime un fichier * **rm -r ** : supprime un dossier et son contenu * **cp ** : copie un fichier * **mv ** : déplace ou renomme un fichier Exercice pratique ----------------- Mettez en pratique les commandes ci-dessus en suivant ce scénario. Après chaque étape, utilisez ``ls`` pour vérifier le résultat. 1. Placez-vous dans votre dossier linfo1002 : .. code-block:: bash $ cd ~/Documents/linfo1002 2. Créez un dossier ``exercice_terminal`` et entrez dedans : .. code-block:: bash $ mkdir exercice_terminal $ cd exercice_terminal 3. Vérifiez où vous êtes avec ``pwd`` : .. code-block:: bash $ pwd 4. Créez trois fichiers vides : .. code-block:: bash $ touch fichier1.txt fichier2.txt fichier3.txt 5. Listez les fichiers pour vérifier : .. code-block:: bash $ ls 6. Créez un sous-dossier ``backup`` : .. code-block:: bash $ mkdir backup 7. Copiez ``fichier1.txt`` dans le dossier ``backup`` : .. code-block:: bash $ cp fichier1.txt backup/ 8. Renommez ``fichier2.txt`` en ``document.txt`` : .. code-block:: bash $ mv fichier2.txt document.txt 9. Déplacez ``fichier3.txt`` dans le dossier ``backup`` : .. code-block:: bash $ mv fichier3.txt backup/ 10. Vérifiez le contenu du dossier ``backup`` : .. code-block:: bash $ ls backup 11. Supprimez ``document.txt`` : .. code-block:: bash $ rm document.txt 12. Remontez d'un niveau et supprimez le dossier ``exercice_terminal`` avec tout son contenu : .. code-block:: bash $ cd .. $ rm -r exercice_terminal .. tip:: Si vous faites une erreur, pas de panique ! Vous pouvez toujours recommencer l'exercice depuis le début. Bonus : ouvrir VSCode depuis le terminal ---------------------------------------- Maintenant que vous maîtrisez la navigation dans le terminal, vous pouvez l'utiliser pour lancer VSCode directement dans votre dossier de travail. Placez-vous dans votre dossier de projet : .. code-block:: bash $ cd ~/Documents/linfo1002/tp1 Puis ouvrez VSCode dans ce dossier : .. code-block:: bash $ code . Le point ``.`` signifie "le dossier courant". VSCode s'ouvrira avec votre dossier tp1 comme workspace. Vous pouvez aussi ouvrir un fichier spécifique : .. code-block:: bash $ code mon_fichier.html