> ## Documentation Index
> Fetch the complete documentation index at: https://support.labex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Interface de terminal LabEx VM

> L'interface de terminal LabEx fournit un environnement de ligne de commande léger basé sur un navigateur, alimenté par TTYD. Construit sur Ubuntu 22.04, il offre une interface simplifiée pour les opérations en ligne de commande et les tâches basées sur du texte.

## Aperçu du terminal

<img src="https://mintcdn.com/huhuhang/q4ekfuwM7mDVAiiH/images/terminal.png?fit=max&auto=format&n=q4ekfuwM7mDVAiiH&q=85&s=2ec4396dab3d6df8b4adce3498c1ad59" alt="Terminal Preview" width="1112" height="404" data-path="images/terminal.png" />

L'environnement Terminal est particulièrement utile pour :

1. Les tâches et opérations axées sur la ligne de commande
2. L'administration des serveurs et la configuration du système
3. La programmation et le débogage basés sur du texte
4. L'accès à distance économe en ressources lorsque l'interface graphique n'est pas nécessaire

## Accéder au terminal

1. Si l'instructeur recommande d'utiliser l'environnement de terminal par défaut pour le Lab, vous verrez l'environnement de terminal lorsque vous le démarrerez.
2. Vous pouvez créer des sessions de terminal supplémentaires en cliquant sur le bouton + en haut de l'interface.

<img src="https://mintcdn.com/huhuhang/lbTGZZG7azHYkwfT/images/screenshot-20241022-CsiJ0RAS@2x.png?fit=max&auto=format&n=lbTGZZG7azHYkwfT&q=85&s=58d906aab3488a173fc84b234470f348" alt="Terminal Tabs" width="1408" height="392" data-path="images/screenshot-20241022-CsiJ0RAS@2x.png" />

## Fonctionnalités de l'environnement

L'interface de terminal offre plusieurs fonctionnalités clés :

1. Sessions de terminal multiples :
   * Créez de nouvelles sessions à l'aide du bouton +
   * Basculez entre les sessions à l'aide des onglets
   * Fermez les sessions individuellement selon les besoins

2. Environnement Ubuntu complet :
   * Basé sur Ubuntu 22.04 LTS
   * Accès aux référentiels Ubuntu standard
   * Prise en charge des outils et utilitaires courants en ligne de commande

3. Outils basés sur du texte :
   * Éditeurs de texte Vim/Nano
   * Compilateurs et interprètes en ligne de commande
   * Gestion des paquets via apt
   * Git pour le contrôle de version

## Fonctionnalités TTYD

L'interface de terminal est alimentée par [TTYD](https://github.com/tsl0922/ttyd) (Terminal Over HTTP) et offre plusieurs fonctionnalités avancées :

**Utilisation des commandes tmux :**

```bash theme={null}
# Create splits
tmux split-window -h     # Split vertically
tmux split-window -v     # Split horizontally
tmux split-window -hf    # Full-height vertical split
tmux split-window -vf    # Full-width horizontal split

# Navigate between panes
tmux select-pane -L      # Move to left pane
tmux select-pane -R      # Move to right pane
tmux select-pane -U      # Move to upper pane
tmux select-pane -D      # Move to lower pane

# Resize panes
tmux resize-pane -L 10   # Resize 10 cells to the left
tmux resize-pane -R 10   # Resize 10 cells to the right
tmux resize-pane -U 5    # Resize 5 cells up
tmux resize-pane -D 5    # Resize 5 cells down

# Additional operations
tmux kill-pane          # Close current pane
tmux select-layout tiled # Balance pane sizes
```

<img src="https://mintcdn.com/huhuhang/q4ekfuwM7mDVAiiH/images/screenshot-20241022-Re5eBNxa@2x.png?fit=max&auto=format&n=q4ekfuwM7mDVAiiH&q=85&s=2f701d9d389320407a15249bcd6a0010" alt="Terminal Split Screen" width="688" height="342" data-path="images/screenshot-20241022-Re5eBNxa@2x.png" />

### Défilement dans tmux

Dans tmux, **le défilement à la molette et la sélection par glisser-déposer pour copier ne coexistent pas** dans un même mode. Le terminal doit soit confier la molette à tmux (pour faire défiler l'historique), soit laisser les événements souris au navigateur (pour surligner et copier) ; on ne peut pas avoir les deux en même temps avec les mêmes gestes.

LabEx laisse le support souris **désactivé** par défaut afin que vous puissiez sélectionner et copier dans le navigateur comme d'habitude. Si vous activez le mode souris, la molette fait défiler l'historique dans tmux, mais la sélection classique par clic-glisser pour copier n'est plus disponible tant que vous ne modifiez pas à nouveau ce réglage.

**Activer temporairement le défilement souris (session en cours uniquement) :**

```bash theme={null}
tmux set -g mouse on
```

**Activer en permanence le défilement souris (toutes les sessions futures) :**

```bash theme={null}
echo 'set -g mouse on' >> ~/.tmux.conf && tmux source-file ~/.tmux.conf
```

**Quand vous avez de nouveau besoin de copier :**

* Désactivez le mode souris : `tmux set -g mouse off`, ou supprimez/commentez `set -g mouse on` dans `~/.tmux.conf` puis exécutez `tmux source-file ~/.tmux.conf`.
* Certains clients permettent de contourner la gestion souris de tmux en maintenant **Maj** pendant la sélection ; le comportement dépend du navigateur et de TTYD. Pour retrouver une copie simple, désactiver le mode souris reste la méthode fiable.

## Scénarios d'utilisation

<AccordionGroup>
  <Accordion title="Opérations de ligne de commande de base" icon="terminal">
    Commandes de terminal courantes que vous utiliserez :

    ```bash theme={null}
    # File and Directory Operations
    ls -la           # List all files with details
    cd /path/to/dir  # Change directory
    mkdir new-dir    # Create directory
    rm -rf dir       # Remove directory

    # System Information
    uname -a         # System information
    df -h            # Disk usage
    top              # Process monitor
    ```
  </Accordion>

  <Accordion title="Édition de texte" icon="square-pen">
    Vous pouvez utiliser divers éditeurs de texte :

    1. Vim :

    ```bash theme={null}
    vim filename.txt  # Open/create file in Vim
    ```

    2. Nano :

    ```bash theme={null}
    nano filename.txt # Open/create file in Nano
    ```

    Les deux éditeurs sont préinstallés et prêts à l'emploi.
  </Accordion>

  <Accordion title="Gestion des paquets" icon="box">
    Installez et gérez les paquets logiciels :

    ```bash theme={null}
    # Update package list
    sudo apt update

    # Install new packages
    sudo apt install package-name

    # Remove packages
    sudo apt remove package-name

    # Search for packages
    apt search keyword
    ```
  </Accordion>
</AccordionGroup>

## Questions fréquemment posées

<AccordionGroup>
  <Accordion title="Comment puis-je copier et coller du texte ?" icon="clipboard">
    TTYD prend en charge plusieurs méthodes de copier/coller :

    1. À l'aide de la souris :
       * Sélectionnez le texte à copier
       * Cliquez avec le bouton droit pour coller

    2. À l'aide du clavier :
       * Copier : Ctrl+Insert ou Ctrl+Maj+C
       * Coller : Maj+Insert ou Ctrl+Maj+V

    Remarque : les raccourcis réels peuvent varier en fonction de votre navigateur et de votre système d'exploitation.
  </Accordion>

  <Accordion title="Puis-je accéder aux fichiers de ma machine locale ?" icon="upload">
    Oui, vous pouvez transférer des fichiers à l'aide d'outils en ligne de commande :

    1. Pour le contenu textuel :
       * Copiez et collez directement dans le terminal
       * Utilisez des éditeurs de texte pour créer et modifier des fichiers

    2. Pour les fichiers binaires :
       * Utilisez l'interface WebIDE pour les téléchargements/téléchargements de fichiers
       * Passez à l'onglet WebIDE pour les opérations de gestion de fichiers
             <img src="https://mintcdn.com/huhuhang/q4ekfuwM7mDVAiiH/images/screenshot-20241022-j7Pl3YZQ@2x.png?fit=max&auto=format&n=q4ekfuwM7mDVAiiH&q=85&s=ab2b59536671cb0184c1f57d3a981fec" alt="Upload Files" width="1412" height="1250" data-path="images/screenshot-20241022-j7Pl3YZQ@2x.png" />

    N'oubliez pas que tous les fichiers sont temporaires et seront perdus à la fin de votre session.
  </Accordion>

  <Accordion title="Comment puis-je installer des logiciels supplémentaires ?" icon="wrench">
    Vous pouvez installer des logiciels à l'aide d'apt :

    ```bash theme={null}
    # Update package list
    sudo apt update

    # Install software
    sudo apt install package-name
    ```

    Notez que :

    1. Les installations sont temporaires et seront réinitialisées à la fin de votre session
    2. Vous disposez de tous les privilèges sudo pour la gestion des paquets
    3. Installez uniquement les paquets nécessaires à votre laboratoire actuel
  </Accordion>

  <Accordion title="Pourquoi choisir l'interface de terminal ?" icon="circle-question-mark">
    L'interface de terminal est idéale lorsque :

    1. Vous avez besoin d'un environnement léger qui se charge rapidement
    2. Vos tâches sont principalement basées sur la ligne de commande
    3. Vous souhaitez vous concentrer sur les commandes du terminal sans les distractions de l'interface graphique
    4. Vous travaillez sur une connexion à faible bande passante
    5. Vous effectuez des laboratoires qui ne nécessitent pas d'interfaces graphiques

    Envisagez d'utiliser les interfaces Desktop ou WebIDE si vous avez besoin d'applications GUI ou de fonctionnalités IDE avancées.
  </Accordion>

  <Accordion title="Que se passe-t-il si ma session de terminal se bloque ?" icon="wind">
    Si votre terminal ne répond plus :

    1. Essayez d'appuyer sur Ctrl+C pour interrompre le processus en cours
    2. Créez une nouvelle session de terminal à l'aide du bouton +
    3. Si nécessaire, actualisez la page du navigateur pour réinitialiser toutes les sessions

    Notez qu'actualiser fermera toutes les sessions de terminal en cours et en démarrera de nouvelles.
  </Accordion>
</AccordionGroup>
