# Commandes Linux essentielles : maîtriser le terminal, les fichiers, les droits et les scripts Bash

> Maîtrisez les commandes Linux essentielles : navigation, fichiers, grep, find, pipes, droits chmod et chown, processus, paquets, services et scripts Bash.

- URL : https://guides-numeriques.fr/informatique/commandes-linux/
- Thématique : Systèmes, cloud & cybersécurité
- Mis à jour : 2026-09-26
- Formation associée : [Shell Linux - Apprendre le terminal et les commandes](https://espritacademique.com/formations/shell-linux-apprendre-le-terminal-et-les-commandes/)

## L'essentiel

- Les commandes Linux se tapent dans un terminal, interprétées par un shell, le plus souvent Bash.
- Une trentaine de commandes (ls, cd, cp, mv, rm, cat, less, grep, find, chmod, sudo, ps, systemctl…) couvrent l'essentiel du travail quotidien.
- Le pipe (|) envoie la sortie d'une commande vers l'entrée de la suivante, et les redirections (>, >>, 2>) envoient les résultats dans des fichiers.
- Chaque fichier Linux a un propriétaire, un groupe et des droits de lecture (r), d'écriture (w) et d'exécution (x), modifiables avec chmod et chown.
- La commande man suivie du nom d'une commande affiche son manuel complet, directement dans le terminal.

Les **commandes Linux** sont les instructions que l'on tape dans un terminal pour piloter le système : se déplacer dans les dossiers, manipuler des fichiers, rechercher une information, gérer les droits, surveiller les processus, installer des logiciels ou automatiser des tâches avec un script. Une trentaine de commandes couvrent l'essentiel des besoins.

Ce guide s'adresse aux débutants motivés, aux étudiants en informatique et aux profils techniques qui visent l'administration système, le DevOps ou le cloud. Chaque commande est présentée avec un exemple réel que vous pouvez taper immédiatement. Si Linux n'est pas encore installé sur votre machine, commencez par notre guide pour [apprendre Linux et choisir sa distribution](https://guides-numeriques.fr/informatique/apprendre-linux/), puis revenez ici.

## Qu'est-ce que le terminal Linux et le shell Bash ?

Le terminal Linux est une interface texte qui permet de dialoguer avec le système en tapant des commandes. Ces commandes sont lues et exécutées par un shell, le plus souvent Bash (Bourne Again Shell). Le shell interprète aussi des variables, des boucles et des conditions, ce qui en fait un langage de script à part entière.

Ouvrez un terminal (Ctrl+Alt+T sur Ubuntu et Linux Mint) : vous voyez une invite de commande, le **prompt**, qui ressemble à ceci :

```text
marie@portable:~$
```

On y lit le nom d'utilisateur, le nom de la machine, le dossier courant (`~` désigne votre dossier personnel) et le symbole `$`, qui indique un utilisateur normal. Un `#` signale que vous êtes connecté en administrateur (root).

Une commande suit presque toujours la même structure : **commande, options, arguments**.

```bash
ls -l /etc        # commande ls, option -l (format long), argument /etc
ls -la ~          # options combinées : -l et -a (fichiers cachés inclus)
ls --help         # options longues, précédées de deux tirets
```

### L'aide intégrée : man, --help et type

Avant de chercher sur Internet, prenez le réflexe de l'aide intégrée :

```bash
man ls            # manuel complet (q pour quitter, / pour chercher)
ls --help         # résumé des options
type cd           # indique si la commande est interne au shell ou un programme externe
type ls
```

La commande `type` illustre la différence entre **commandes internes** (comme `cd` ou `echo`, intégrées à Bash et exécutées sans lancer de programme) et **commandes externes** (comme `ls` ou `grep`, qui sont des programmes stockés sur le disque, généralement dans `/usr/bin`).

## Pourquoi apprendre les commandes Linux ?

L'interface graphique suffit pour un usage bureautique. Mais dès que l'on touche à l'informatique professionnelle, le terminal devient indispensable :

- **Les serveurs n'ont pas d'interface graphique** : on les administre à distance, en SSH, uniquement en ligne de commande.
- **La rapidité** : renommer 500 fichiers, chercher une erreur dans des journaux de plusieurs gigaoctets ou vérifier l'espace disque prend quelques secondes.
- **L'automatisation** : ce que vous tapez dans le terminal peut être enregistré dans un script et exécuté chaque nuit.
- **Le DevOps et le cloud** : Docker, Git, Kubernetes ou les outils des fournisseurs cloud s'utilisent d'abord en ligne de commande.
- **La cybersécurité** : analyse de journaux, droits, processus suspects, tout passe par le terminal.

## L'arborescence Linux : comprendre où sont les fichiers

Sous Linux, il n'y a pas de lecteurs C: ou D: : tout part d'une racine unique, `/`. Les disques, clés USB et partitions sont **montés** dans des dossiers de cette arborescence. L'organisation suit un standard, le FHS (Filesystem Hierarchy Standard).


**Schéma — Les répertoires clés de l'arborescence Linux**

/ (racine) :
- **/home** : Dossiers personnels des utilisateurs
- **/etc** : Configuration du système et des services
- **/var** : Journaux, caches, files d'attente
- **/usr** : Programmes et bibliothèques installés
- **/tmp** : Fichiers temporaires
- **/mnt et /media** : Points de montage des disques et supports


| Répertoire | Contenu |
|---|---|
| `/` | Racine de toute l'arborescence |
| `/home` | Dossiers personnels des utilisateurs (`/home/marie`) |
| `/root` | Dossier personnel de l'administrateur |
| `/etc` | Fichiers de configuration du système et des services |
| `/var` | Données variables : journaux (`/var/log`), caches, files d'attente |
| `/usr` | Programmes et bibliothèques installés (`/usr/bin`, `/usr/lib`) |
| `/bin`, `/sbin` | Commandes essentielles (souvent des liens vers `/usr/bin` et `/usr/sbin` sur les distributions récentes) |
| `/tmp` | Fichiers temporaires, souvent vidés au redémarrage |
| `/dev` | Fichiers représentant les périphériques (disques, terminaux) |
| `/proc`, `/sys` | Informations du noyau sur les processus et le matériel |
| `/mnt`, `/media` | Points de montage des disques et supports amovibles |
| `/opt` | Logiciels tiers installés hors du gestionnaire de paquets |

### Chemins absolus et chemins relatifs

Un **chemin absolu** commence par `/` et part de la racine : `/home/marie/Documents/rapport.txt`. Il fonctionne quel que soit le dossier courant. Un **chemin relatif** part du dossier courant : `Documents/rapport.txt`. Deux raccourcis sont à connaître : `.` désigne le dossier courant et `..` le dossier parent.

## Les commandes Linux essentielles, étape par étape


**Schéma — Les commandes Linux essentielles en 6 étapes**

1. **Se déplacer** : pwd, ls, cd
2. **Gérer les fichiers** : mkdir, cp, mv, rm
3. **Lire les fichiers** : cat, less, head, tail
4. **Rechercher** : grep dans les fichiers, find pour les fichiers
5. **Chaîner les commandes** : Pipes | et redirections > >>
6. **Administrer avec sudo** : Compte normal, droits root ponctuels


### Étape 1 — Se déplacer dans l'arborescence

```bash
pwd                 # affiche le dossier courant
ls                  # liste le contenu
ls -lh              # format long, tailles lisibles (Ko, Mo)
ls -la              # inclut les fichiers cachés (commençant par un point)
cd /var/log         # va dans /var/log (chemin absolu)
cd ..               # remonte d'un niveau
cd                  # revient au dossier personnel (équivalent de cd ~)
cd -                # revient au dossier précédent
```

La touche **Tab** complète automatiquement les noms de commandes, de fichiers et de dossiers. Appuyez deux fois pour voir toutes les possibilités. C'est le raccourci qui fait gagner le plus de temps et évite les fautes de frappe.

### Étape 2 — Créer, copier, déplacer et supprimer

```bash
mkdir projets                       # crée un dossier
mkdir -p projets/2026/rapports      # crée toute l'arborescence d'un coup
touch notes.txt                     # crée un fichier vide (ou met à jour sa date)
cp notes.txt notes-copie.txt        # copie un fichier
cp -r projets projets-sauvegarde    # copie un dossier et son contenu
mv notes.txt projets/               # déplace un fichier
mv ancien-nom.txt nouveau-nom.txt   # renomme
rm notes-copie.txt                  # supprime un fichier
rm -r projets-sauvegarde            # supprime un dossier et son contenu
rmdir dossier-vide                  # supprime un dossier vide
```

Attention : `rm` ne passe pas par une corbeille. Ce qui est supprimé l'est définitivement. Ajoutez l'option `-i` pour demander une confirmation, et relisez toujours une commande `rm -r` avant de valider.

Ces commandes deviennent beaucoup plus efficaces avec les **caractères jokers**, que le shell remplace par la liste des fichiers correspondants avant d'exécuter la commande :

```bash
ls *.txt                  # tous les fichiers se terminant par .txt
cp rapport-2026-0?.pdf archives/   # ? remplace exactement un caractère
mv photo-[1-3].jpg vacances/       # photo-1.jpg, photo-2.jpg et photo-3.jpg
ls projets/{2025,2026}    # accolades : développe les deux chemins
```

Notre conseil : avant d'utiliser un joker avec `rm` ou `mv`, lancez d'abord `ls` avec exactement le même motif. Vous voyez ainsi la liste précise des fichiers concernés, et vous évitez les mauvaises surprises. Autre point à connaître : Linux distingue les majuscules et les minuscules dans les noms de fichiers. `Rapport.txt` et `rapport.txt` sont deux fichiers différents, ce qui surprend souvent les utilisateurs venus de Windows. Enfin, évitez les espaces et les accents dans les noms de fichiers que vous manipulez en ligne de commande : ils obligent à utiliser des guillemets et sont une source d'erreurs fréquente dans les scripts.

### Étape 3 — Lire le contenu des fichiers

```bash
cat /etc/hostname           # affiche un fichier court
less /var/log/syslog        # lit un long fichier page par page (q pour quitter)
head -n 20 fichier.log      # les 20 premières lignes
tail -n 50 fichier.log      # les 50 dernières lignes
tail -f /var/log/syslog     # suit le fichier en temps réel (Ctrl+C pour arrêter)
wc -l fichier.log           # compte les lignes
```

Selon la distribution, le journal système peut se trouver dans `/var/log/syslog` (Debian, Ubuntu, Mint) ou être uniquement accessible via `journalctl` (Fedora et autres).

Pour modifier un fichier de configuration, **nano** est l'éditeur le plus simple : `nano fichier.txt`, puis Ctrl+O pour enregistrer et Ctrl+X pour quitter. **vim** est plus puissant mais demande un apprentissage spécifique.

### Étape 4 — Rechercher avec grep et find

`grep` cherche un texte **dans** les fichiers ; `find` cherche des **fichiers** selon leurs caractéristiques.

```bash
grep "error" /var/log/syslog              # lignes contenant "error"
grep -i "error" /var/log/syslog           # sans tenir compte de la casse
grep -rn "server_name" /etc/nginx/        # récursif, avec numéros de ligne
grep -v "^#" /etc/ssh/sshd_config         # tout sauf les lignes de commentaire

find /home -name "*.pdf"                  # fichiers PDF sous /home
find . -type f -size +100M                # fichiers de plus de 100 Mo
find /var/log -name "*.log" -mtime -1     # journaux modifiés depuis moins de 24 h
find /tmp -type f -mtime +7 -delete       # supprime les fichiers de plus de 7 jours
```

Testez toujours une commande `find` sans `-delete` pour vérifier la liste des fichiers concernés avant de les supprimer.

### Étape 5 — Chaîner les commandes : pipes et redirections

C'est ici que le terminal devient réellement puissant. Le **pipe** `|` envoie la sortie d'une commande vers l'entrée de la suivante ; les **redirections** envoient la sortie dans un fichier.

```bash
ls -l /etc | less                          # paginer une longue sortie
ps aux | grep nginx                        # chercher un processus
cat access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head
                                           # les adresses IP les plus fréquentes d'un journal web
ls > liste.txt                             # écrit la sortie dans un fichier (écrase)
echo "nouvelle ligne" >> liste.txt         # ajoute à la fin du fichier
commande-inexistante 2> erreurs.txt        # redirige les erreurs
sauvegarde.sh > log.txt 2>&1               # sortie normale et erreurs dans le même fichier
```

Les opérateurs `&&` et `||` enchaînent des commandes selon le résultat de la précédente : `mkdir sauvegarde && cp *.txt sauvegarde/` ne copie que si la création du dossier a réussi.

### Étape 6 — Travailler en administrateur avec sudo

L'utilisateur **root** a tous les droits. Pour limiter les risques, on travaille avec un compte normal et on préfixe les commandes d'administration par `sudo`, qui demande votre mot de passe :

```bash
sudo apt update                 # commande exécutée avec les droits root
sudo -i                         # ouvre un shell root (à utiliser avec prudence)
whoami                          # affiche l'utilisateur courant
id                              # affiche l'identifiant et les groupes
```

### Étape 7 — Gagner du temps : historique, raccourcis et alias

Le shell garde en mémoire les commandes que vous tapez. Quelques réflexes suffisent pour ne plus jamais retaper une longue commande :

```bash
history | tail -n 20     # les 20 dernières commandes
!!                       # relance la dernière commande
sudo !!                  # relance la dernière commande avec sudo (oubli classique)
!42                      # relance la commande numéro 42 de l'historique
```

Les raccourcis clavier de Bash sont tout aussi utiles : **Ctrl+R** recherche dans l'historique au fil de la frappe, **Ctrl+A** et **Ctrl+E** placent le curseur en début et en fin de ligne, **Ctrl+U** efface ce qui précède le curseur et **Ctrl+L** nettoie l'écran.

Pour vos commandes fréquentes, créez des **alias** dans le fichier `~/.bashrc`, lu à chaque ouverture de terminal :

```bash
echo "alias ll='ls -lh'" >> ~/.bashrc
echo "alias maj='sudo apt update && sudo apt upgrade'" >> ~/.bashrc
source ~/.bashrc         # recharge la configuration sans fermer le terminal
```

Ce même fichier sert à définir des **variables d'environnement**. `echo $HOME` affiche votre dossier personnel, `echo $PATH` la liste des dossiers dans lesquels le shell cherche les commandes, et `export EDITEUR=nano` crée une variable transmise aux programmes lancés depuis ce terminal.

> **Formation recommandée** : [Shell Linux - Apprendre le terminal et les commandes](https://espritacademique.com/formations/shell-linux-apprendre-le-terminal-et-les-commandes/) — 4h00 de vidéo, 69 €.

## Les droits Linux : chmod, chown et permissions spéciales

Chaque fichier appartient à un **propriétaire** et à un **groupe**. Trois types de droits s'appliquent à trois catégories d'utilisateurs : le propriétaire (u), le groupe (g) et les autres (o).

```text
-rwxr-xr-- 1 marie devs 2048 sept. 26 10:00 deploy.sh
 │  │  │
 │  │  └── autres : r-- (lecture seule)
 │  └───── groupe : r-x (lecture et exécution)
 └──────── propriétaire : rwx (lecture, écriture, exécution)
```

Sur un dossier, `r` permet de lister le contenu, `w` d'y créer ou supprimer des fichiers et `x` d'y entrer.

| Droit | Lettre | Valeur octale | Sur un fichier | Sur un dossier |
|---|---|---|---|---|
| Lecture | r | 4 | Lire le contenu | Lister les fichiers |
| Écriture | w | 2 | Modifier le contenu | Créer, renommer, supprimer des fichiers |
| Exécution | x | 1 | Exécuter le programme ou le script | Entrer dans le dossier |

On additionne les valeurs pour chaque catégorie : `7` = rwx, `6` = rw-, `5` = r-x, `4` = r--.

```bash
chmod 644 rapport.txt           # rw-r--r-- : fichier de données classique
chmod 755 deploy.sh             # rwxr-xr-x : script exécutable par tous
chmod u+x deploy.sh             # ajoute l'exécution au propriétaire (notation symbolique)
chmod -R g+w projets/           # ajoute l'écriture au groupe, récursivement
sudo chown marie:devs rapport.txt   # change propriétaire et groupe
umask                           # masque appliqué aux nouveaux fichiers (souvent 0022)
```

Trois **permissions spéciales** complètent le tableau :

- le **SUID** (4000) : un exécutable s'exécute avec les droits de son propriétaire, c'est le cas de `passwd` ;
- le **SGID** (2000) : sur un dossier, les fichiers créés héritent du groupe du dossier, idéal pour un dossier partagé ;
- le **sticky bit** (1000) : dans un dossier partagé, seul le propriétaire d'un fichier peut le supprimer, comme dans `/tmp`.

Ne donnez jamais `chmod 777` pour « régler » un problème d'accès : cela ouvre le fichier en écriture à tout le monde. Identifiez plutôt quel utilisateur doit y accéder et ajustez le propriétaire ou le groupe.

## Aller plus loin : processus, paquets, services, réseau et scripts

### Surveiller et arrêter les processus

```bash
ps aux                   # tous les processus
top                      # vue en temps réel (q pour quitter) ; htop si installé
kill 1234                # demande l'arrêt du processus 1234
kill -9 1234             # arrêt forcé, en dernier recours
pkill firefox            # arrêt par nom
nice -n 10 ./calcul.sh   # lance avec une priorité plus basse
renice 5 -p 1234         # modifie la priorité d'un processus existant
df -h                    # espace disque par partition
du -sh ~/Téléchargements # taille d'un dossier
free -h                  # mémoire utilisée et disponible
```

### Installer des logiciels et gérer les services

```bash
sudo apt update && sudo apt upgrade   # mettre à jour (Debian, Ubuntu, Mint)
sudo apt install nginx                # installer un paquet
sudo apt autoremove                   # supprimer les dépendances devenues inutiles
sudo dnf install nginx                # équivalent sous Fedora

sudo systemctl status nginx           # état d'un service
sudo systemctl start nginx            # démarrer
sudo systemctl enable --now nginx     # activer au démarrage et démarrer
sudo systemctl restart nginx          # redémarrer
journalctl -u nginx --since today     # journaux du service depuis aujourd'hui
```

### Archiver, compresser et monter

```bash
tar -czvf sauvegarde.tar.gz projets/    # créer une archive compressée
tar -xzvf sauvegarde.tar.gz             # l'extraire
tar -tzvf sauvegarde.tar.gz             # lister son contenu sans extraire
lsblk                                   # disques et partitions
sudo mount /dev/sdb1 /mnt               # monter une partition
sudo umount /mnt                        # la démonter avant de retirer le support
```

### Diagnostiquer le réseau

Quelques commandes suffisent pour les diagnostics réseau courants, sur un poste comme sur un serveur :

```bash
ip a                              # adresses IP des interfaces
ip route                          # table de routage et passerelle par défaut
ping -c 4 example.com             # tester la joignabilité d'un hôte
ss -tulpn                         # ports en écoute et programmes associés
ssh utilisateur@192.168.1.20      # se connecter à une machine distante
scp rapport.txt utilisateur@192.168.1.20:/tmp/   # copier un fichier vers cette machine
curl -I https://example.com       # afficher les en-têtes HTTP d'un site
```

La commande `ss -tulpn` (avec `sudo` pour voir tous les programmes) est particulièrement utile pour comprendre pourquoi un service ne démarre pas : un autre programme occupe peut-être déjà son port.

### Automatiser avec un premier script Bash

Un script Bash est un fichier texte qui enchaîne des commandes. Voici un script de sauvegarde réaliste, qui archive un dossier avec la date du jour et supprime les archives de plus de 14 jours :

```bash
#!/usr/bin/env bash
# sauvegarde.sh : archive un dossier et conserve 14 jours d'historique
set -euo pipefail

SOURCE="$HOME/projets"
DESTINATION="$HOME/sauvegardes"
DATE=$(date +%Y-%m-%d)

mkdir -p "$DESTINATION"
tar -czf "$DESTINATION/projets-$DATE.tar.gz" -C "$HOME" projets

find "$DESTINATION" -name "projets-*.tar.gz" -mtime +14 -delete

echo "Sauvegarde terminée : $DESTINATION/projets-$DATE.tar.gz"
```

Rendez-le exécutable et lancez-le :

```bash
chmod +x sauvegarde.sh
./sauvegarde.sh
```

La ligne `set -euo pipefail` arrête le script à la première erreur, ce qui évite qu'une commande ratée en déclenche d'autres. Pour l'exécuter automatiquement chaque nuit, ajoutez une ligne dans votre crontab avec `crontab -e`, par exemple `0 2 * * * /home/marie/sauvegarde.sh`.

## Les erreurs fréquentes dans le terminal Linux

| Erreur ou message | Cause | Solution |
|---|---|---|
| `command not found` | Faute de frappe ou programme non installé | Vérifier l'orthographe, installer le paquet |
| `Permission denied` | Droits insuffisants | Vérifier avec `ls -l`, utiliser `sudo` si c'est justifié |
| `No such file or directory` | Mauvais chemin, espace dans le nom | Utiliser Tab, entourer le chemin de guillemets |
| Script qui ne se lance pas avec `./script.sh` | Droit d'exécution absent | `chmod +x script.sh` |
| Fichier écrasé par erreur | Utilisation de `>` au lieu de `>>` | Relire les redirections, travailler sur une copie |
| Suppression involontaire | `rm -r` avec un mauvais chemin ou un joker trop large | Tester avec `ls` le même motif avant `rm`, utiliser `-i` |
| `chmod 777` pour débloquer un accès | Solution rapide mais dangereuse | Ajuster propriétaire et groupe avec `chown` |
| Terminal bloqué | Programme au premier plan en attente | Ctrl+C pour interrompre, q pour quitter `less` ou `top` |

## Bash, Zsh ou PowerShell : quelle différence ?

| Shell | Système principal | Particularité |
|---|---|---|
| Bash | Linux (par défaut sur la plupart des distributions) | Standard des serveurs et des scripts d'administration |
| Zsh | macOS (par défaut), Linux | Compatible avec la plupart des usages de Bash, complétion et personnalisation avancées |
| Fish | Linux, macOS | Suggestions automatiques, syntaxe plus simple mais différente de Bash |
| PowerShell | Windows, disponible aussi sous Linux et macOS | Manipule des objets et non du texte |

Si vous administrez aussi des postes Windows, notre guide pour [débuter en PowerShell](https://guides-numeriques.fr/informatique/powershell-debutant/) vous montrera les équivalents. Et ces commandes vous serviront directement pour [utiliser Docker](https://guides-numeriques.fr/informatique/docker/), dont les conteneurs reposent presque toujours sur Linux.

## Comment apprendre les commandes Linux efficacement ?

Le terminal s'apprend en l'utilisant, pas en mémorisant des listes. Voici un parcours progressif :

1. **Semaine 1** : navigation, fichiers, lecture, aide intégrée. Obligez-vous à gérer vos fichiers depuis le terminal.
2. **Semaine 2** : grep, find, pipes et redirections. Analysez de vrais fichiers de journaux.
3. **Semaines 3 et 4** : droits, utilisateurs, processus, paquets, services et archives.
4. **Ensuite** : écrivez un script Bash par semaine pour une tâche réelle (sauvegarde, nettoyage, rapport).

Pour suivre ce parcours avec des exercices corrigés, [la formation au shell Linux d'EspritAcadémique](https://espritacademique.com/formations/shell-linux-apprendre-le-terminal-et-les-commandes/) propose 4 heures de pratique, sans prérequis. Elle aborde notamment :

- la configuration de la console et les principes du shell ;
- l'arborescence FHS, les chemins et la manipulation des fichiers ;
- la recherche avec grep et find, les entrées-sorties et les pipelines ;
- les permissions de base et spéciales (SUID, SGID, sticky bit, umask) ;
- les processus, l'archivage, les paquets et les services ;
- un module de ressources avec supports et scripts réutilisables.

Une fois à l'aise, [versionner vos scripts avec Git](https://guides-numeriques.fr/developpement/git-github/) est l'étape suivante logique, et la sécurité des systèmes Linux est un excellent point d'entrée pour [apprendre la cybersécurité](https://guides-numeriques.fr/informatique/cybersecurite-debutant/).

## En résumé

Quelques dizaines de commandes Linux suffisent pour être autonome : `ls`, `cd`, `cp`, `mv`, `rm` pour les fichiers, `grep` et `find` pour la recherche, les pipes et redirections pour chaîner, `chmod` et `chown` pour les droits, `ps`, `apt` et `systemctl` pour administrer. Pratiquez chaque jour sur de vraies tâches, lisez le manuel avec `man`, puis transformez vos commandes répétitives en scripts Bash.

## Sources et documentation officielle

- [Commandes de base en console (Wiki ubuntu-fr)](https://doc.ubuntu-fr.org/tutoriel/console_commandes_de_base)
- [Droits (Wiki ubuntu-fr)](https://doc.ubuntu-fr.org/droits)
- [bash(1) - Linux manual page (man7.org)](https://man7.org/linux/man-pages/man1/bash.1.html)
- [Filesystem Hierarchy Standard (Linux Foundation)](https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html)

## Questions fréquentes

### Quelle est la différence entre le terminal, la console et le shell ?

Le terminal est la fenêtre dans laquelle vous tapez vos commandes. La console désigne historiquement l'écran et le clavier physiques d'une machine, et par extension les terminaux texte accessibles avec Ctrl+Alt+F3 par exemple. Le shell est le programme qui interprète vos commandes : Bash est le plus répandu, Zsh et Fish sont des alternatives.

### Comment annuler une commande en cours dans le terminal Linux ?

Appuyez sur Ctrl+C : le signal d'interruption est envoyé au programme en cours, qui s'arrête. Ctrl+Z suspend le programme au lieu de l'arrêter ; vous pouvez ensuite le relancer en arrière-plan avec bg ou au premier plan avec fg. Si un programme ne répond plus du tout, utilisez kill avec son numéro de processus depuis un autre terminal.

### Que signifie chmod 755 ?

chmod 755 donne tous les droits (lecture, écriture, exécution, soit 7) au propriétaire, et les droits de lecture et d'exécution (5) au groupe et aux autres utilisateurs. C'est le réglage classique pour un dossier ou un script que tout le monde peut exécuter mais que seul son propriétaire peut modifier. Pour un fichier de données, on utilise plutôt 644.

### Les commandes Linux fonctionnent-elles sur macOS ?

En grande partie, oui. macOS est un système de type Unix et son terminal utilise Zsh par défaut : ls, cd, cp, mv, grep, find, chmod ou ps y fonctionnent. Certaines options diffèrent car macOS utilise les versions BSD de ces outils, et les commandes propres aux distributions Linux, comme apt ou systemctl, n'y existent pas.

### Comment utiliser les commandes Linux sous Windows ?

Le plus simple est d'installer WSL, le sous-système Windows pour Linux, avec la commande wsl --install dans un PowerShell ouvert en administrateur. Vous obtenez une vraie distribution Linux, Ubuntu par défaut, accessible depuis le Terminal Windows. Vous pouvez aussi installer Linux dans une machine virtuelle avec VirtualBox ou VMware Workstation.

### Combien de temps faut-il pour maîtriser le terminal Linux ?

Une à deux semaines de pratique quotidienne suffisent pour être à l'aise avec la navigation, les fichiers, la recherche et les droits. Comptez un à deux mois pour gérer sereinement processus, paquets, services et scripts Bash simples. Le plus efficace est d'utiliser le terminal pour de vraies tâches chaque jour plutôt que d'apprendre des listes de commandes par cœur.
