# 1.1 - Premiers repères dans Linux

Linux se pilote avec une interface graphique, mais aussi avec un **terminal**. Dans ce terminal, un programme appelé **shell** interprète les commandes saisies. Bash est très répandu ; Zsh, Fish et Dash sont d'autres shells possibles.

## Identifier sa session

```bash
whoami                 # utilisateur courant
hostname               # nom de la machine
pwd                    # dossier de travail actuel
echo "$SHELL"           # shell configuré pour le compte
printf '%s\n' "$0"      # shell ou processus de la session actuelle
```

Le symbole affiché avant la saisie est l'**invite de commande**. Par convention, `$` représente un utilisateur normal et `#` le compte `root`. Il ne faut pas recopier ces symboles lorsqu'ils apparaissent dans une documentation.

## Comprendre l'arborescence

Linux utilise une arborescence unique dont la racine est `/`.

| Chemin | Rôle habituel |
|---|---|
| `/home` | dossiers personnels des utilisateurs |
| `/root` | dossier personnel de l'administrateur `root` |
| `/etc` | configuration du système et des services |
| `/var` | données variables : journaux, caches, files d'attente |
| `/tmp` | fichiers temporaires, souvent nettoyés automatiquement |
| `/usr` | programmes, bibliothèques et données partagées |
| `/dev` | périphériques représentés sous forme de fichiers |
| `/proc` et `/sys` | informations virtuelles sur le noyau et le matériel |
| `/mnt` et `/media` | points de montage des stockages |

Afficher les principaux dossiers :

```bash
ls -la /
```

## Chemins absolus et relatifs

- `/etc/hosts` est un **chemin absolu** : il part de `/`.
- `Documents/notes.txt` est un **chemin relatif** : il part du dossier actuel.
- `.` représente le dossier actuel.
- `..` représente le dossier parent.
- `~` représente le dossier personnel de l'utilisateur.

```bash
cd /etc           # chemin absolu
cd ../var         # chemin relatif
cd ~              # retour au dossier personnel
```

Linux distingue généralement les majuscules des minuscules : `Rapport.txt` et `rapport.txt` sont donc deux noms différents.

## Historique et confort de saisie

```bash
history                    # afficher l'historique
history | tail -n 20       # afficher les 20 dernières commandes
clear                      # nettoyer l'affichage du terminal
```

- Flèche `↑` : rappeler une ancienne commande.
- `Tab` : compléter un chemin ou une commande.
- `Ctrl` + `C` : interrompre le programme au premier plan.
- `Ctrl` + `L` : nettoyer l'écran sans effacer l'historique.
- `Ctrl` + `D` : fermer le shell courant ou signaler la fin de saisie.