O11 - Nano : l’éditeur simple du terminal

Objectif

Éditer n’importe quel fichier (script, fichier de config système) avec nano : ouvrir, modifier, enregistrer, quitter, chercher/remplacer, copier/coller, puis le régler avec ~/.nanorc et en faire ton éditeur par défaut.

Pourquoi nano ?

C’est l’éditeur utilisé dans tes fiches et dans le cours de Thierry : simple, présent sur Pop!_OS et Debian (version 7.2 sur ton poste), et les raccourcis sont affichés en bas de l’écran. Pas de modes comme dans O10 - Vim : ce que tu tapes s’écrit directement.


1. Lire l’écran de nano

┌──────────────────────────────────────────────────────────────────┐
│  GNU nano 7.2            /etc/hosts               Modifié         │ ← nom du fichier, état
├──────────────────────────────────────────────────────────────────┤
│ 127.0.0.1       localhost                                         │
│ 127.0.1.1       pop-os                                            │ ← zone de texte :
│ █                                                                 │   on tape directement
│                                                                   │
├──────────────────────────────────────────────────────────────────┤
│                    [ Lecture de 9 lignes ]                        │ ← messages / questions
│ ^G Aide      ^O Écrire    ^W Chercher  ^K Couper    ^T Exécuter    │ ← raccourcis
│ ^X Quitter   ^R Lire fich ^\ Remplacer ^U Coller    ^/ Aller ligne │
└──────────────────────────────────────────────────────────────────┘
Symbole en basSignifieExemple
^touche Ctrl^X = Ctrl+X
M-touche Alt (Meta)M-U = Alt+U

Les libellés sont en français ou en anglais selon la langue du système ( Write Out = Écrire, Where Is = Chercher…). Les touches, elles, ne changent pas.


2. Le kit de survie

nano fichier.sh                          # ouvrir (ou créer) un fichier
sudo nano /etc/network/interfaces        # fichier système : avec sudo
nano -l fichier.sh                       # avec les numéros de ligne
nano +25 fichier.sh                      # ouvrir directement à la ligne 25
nano -v /etc/passwd                      # lecture seule (impossible de casser quoi que ce soit)
  1. nano fichier.txt       → tu tapes directement ton texte
  2. Ctrl+O puis Entrée     → enregistrer (Entrée confirme le nom du fichier)
  3. Ctrl+X                 → quitter
     (s'il reste des modifs non enregistrées : O = oui / N = non / Ctrl+C = annuler)

Ctrl+S enregistre aussi, sans demander le nom (nano 7). Pratique quand on fait plein de petites modifs.


3. Tous les raccourcis utiles

3.1 Fichier

RaccourciAction
Ctrl+O puis EntréeEnregistrer (on peut changer le nom avant Entrée → « enregistrer sous »)
Ctrl+SEnregistrer directement
Ctrl+XQuitter
Ctrl+RInsérer le contenu d’un autre fichier
Ctrl+GAide complète (Ctrl+X pour sortir de l’aide)

3.2 Se déplacer

RaccourciAction
Flèches, Début, Fin, PgPréc, PgSuivcomme partout
Ctrl+A / Ctrl+Edébut / fin de la ligne
Ctrl+_ (ou Alt+G)aller à la ligne n° (puis taper le numéro)
Alt+\ / Alt+/début / fin du fichier
Alt+]aller à la parenthèse/accolade correspondante
Ctrl+Cafficher la position du curseur (ligne, colonne)

3.3 Modifier : couper, copier, coller

RaccourciAction
Ctrl+Kcouper la ligne (plusieurs Ctrl+K à la suite = plusieurs lignes)
Alt+6copier la ligne
Ctrl+Ucoller
Alt+A (ou Ctrl+6)commencer une sélection → flèches → puis Ctrl+K (couper) ou Alt+6 (copier)
Alt+U / Alt+Eannuler / refaire
Alt+3commenter / décommenter la ligne (ou la sélection)
Tab / Shift+Tab sur une sélectionindenter / désindenter (aussi Alt+} / Alt+{)
Alt+Supprsupprimer la ligne entière

3.4 Chercher et remplacer

RaccourciAction
Ctrl+Wchercher (taper le mot puis Entrée)
Alt+W / Alt+Qoccurrence suivante / précédente
Ctrl+\ (ou Alt+R)rechercher et remplacer

Déroulé d’un remplacement :

Ctrl+\  →  « Chercher (à remplacer) : »  ancien  Entrée
        →  « Remplacer par : »           nouveau Entrée
        →  pour chaque résultat :  O = oui · N = non · T = tous · Ctrl+C = stop
                                   (système en anglais : Y = yes · N = no · A = all)

Dans la question « Chercher », Alt+C = respecter la casse, Alt+R = utiliser une expression régulière (voir Récap - administration Linux shell).

3.5 Affichage

RaccourciAction
Alt+Nafficher / cacher les numéros de ligne
Alt+Sretour à la ligne visuel des lignes longues (softwrap)
Alt+Pafficher les espaces et tabulations (utile pour Python/YAML)
Alt+Xcacher / afficher la barre de raccourcis
Alt+Mactiver / désactiver la souris

4. Copier-coller avec le reste du bureau

Les raccourcis Ctrl+K/Ctrl+U utilisent le presse-papiers de nano, pas celui du système. Pour échanger avec ton navigateur, VS Code, etc. :

Je veux…Comment
coller dans nano un texte copié ailleursCtrl+Shift+V (raccourci du terminal)
copier un texte de nano vers ailleursle sélectionner à la souris puis Ctrl+Shift+C (si la souris de nano est active, maintenir Shift pendant la sélection)

5. Les options au lancement

OptionEffet
-lnuméros de ligne
-vlecture seule (view)
-msouris
-Bcrée une sauvegarde fichier~ avant d’enregistrer
-iauto-indentation
-Eles tabulations deviennent des espaces
-T 4largeur d’une tabulation = 4
+Nouvrir à la ligne N

6. Configurer ~/.nanorc

Plutôt que de retaper les options, on les écrit une fois dans ~/.nanorc (créé s’il n’existe pas - tu n’en as pas encore).

nano ~/.nanorc
# ~/.nanorc — les commentaires commencent par #
set linenumbers          # numéros de ligne en permanence
set mouse                # clic pour placer le curseur, molette pour défiler
set autoindent           # garde l'indentation de la ligne précédente
set tabsize 4            # tabulation = 4 colonnes
set tabstospaces         # Tab insère des espaces (indispensable en Python / YAML)
set softwrap             # les lignes longues reviennent à la ligne à l'écran
set constantshow         # affiche toujours la position du curseur en bas
set indicator            # barre de défilement à droite
set backup               # garde la version précédente (fichier~) à chaque enregistrement

Coloration syntaxique

Elle est déjà active sur Pop!_OS (le fichier système /etc/nanorc charge les règles de /usr/share/nano/). Si elle manque (Arch, VM minimale), ajoute dans ~/.nanorc :

include "/usr/share/nano/*.nanorc"

sudo nano n'utilise pas forcément TA config

Avec sudo, nano tourne en root et peut lire la config de root, pas ton ~/.nanorc. Solution propre : sudoedit.

sudoedit /etc/hosts            # = sudo -e : édite une copie avec TON éditeur et TA config, puis la remet en place

Bonus : nano ne tourne pas en root → moins de risque.


7. Cas d’usage BTS

SituationCommande
Écrire un scriptnano bonjour.sh → L07 - Scripting Bash
Configurer le réseau d’une VM Debiansudo nano /etc/network/interfaces → L06 - Configurer le réseau sous Linux
Changer le nom de la machinesudo nano /etc/hosts
Durcir SSHsudoedit /etc/ssh/sshd_config → L08 - SSH, SCP et SFTP
Config Apache / HAProxySV01 - Apache, PHP et MariaDB · SV03 - HAProxy (reverse proxy et répartition de charge)
Message de commit Gitgit config --global core.editor nano → O04 - Git et GitHub

Réflexe avant de toucher un fichier de config

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak     # copie de secours

En cas de problème : sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config.


8. Choisir son éditeur par défaut

Certaines commandes ouvrent toutes seules un éditeur : crontab -e, sudo visudo, git commit, systemctl edit. Lequel ? Celui indiqué par la variable EDITOR (ou, à défaut, celui du système).

flowchart LR
  CMD["crontab -e<br/>visudo, git commit..."] --> Q{"Variable EDITOR<br/>définie ?"}
  Q -->|"oui"| E["cet éditeur"]
  Q -->|"non"| D["éditeur par défaut du système<br/>(Pop!_OS : nano · Arch : souvent vi)"]
# 1. Pour toi, partout : ajouter à la fin de ~/.bashrc (ou ~/.zshrc si tu es sous zsh)
echo 'export EDITOR=nano' >> ~/.bashrc
echo 'export VISUAL=nano' >> ~/.bashrc
source ~/.bashrc                              # recharger sans fermer le terminal
 
# 2. Pop!_OS / Debian : éditeur par défaut du système (déjà nano sur ton poste)
sudo update-alternatives --config editor
 
# 3. Arch : visudo ouvre vi si EDITOR n'est pas transmis → forcer nano pour cette fois
sudo EDITOR=nano visudo

Pour crontab -e, Debian/Ubuntu demande l'éditeur la 1re fois. Pour changer d'avis : select-editor.


9. Nano ou Vim ?

NanoVim
Prise en main5 minutesquelques heures (vimtutor)
Modesaucun : on tapeNormal / Insertion / Visuel / Commande
Raccourcisaffichés en basà connaître
Installé par défautPop!_OS, Debian, Ubuntu (pas toujours sur Arch)vi presque partout, même sur les systèmes minimaux
Rapidité une fois maîtrisécorrectetrès grande
Pour le BTSéditer les configs, écrire les scriptssavoir s’en sortir quand il n’y a que lui

👉 Utilise nano au quotidien, et garde le kit de survie Vim en tête.


10. Exercices

Exo 1. Crée ~/test-nano.txt avec 3 lignes (un, deux, trois), enregistre et quitte.

Exo 2. Déplace la ligne un tout en bas du fichier.

Exo 3. Sur une copie de /etc/ssh/sshd_config, remplace tous les yes par no, puis quitte sans enregistrer.

Exo 4. Crée ton ~/.nanorc avec au moins les numéros de ligne et les tabulations en espaces, puis vérifie en ouvrant un script.


11. Erreurs fréquentes / dépannage

ProblèmeCauseSolution
[ Error writing /etc/... : Permission denied ]fichier système ouvert sans sudoCtrl+X → N, puis sudoedit fichier (ou sudo nano fichier)
[ Directory '...' does not exist ]faute dans le cheminvérifier avec ls + Tab pour compléter
nano a disparu et le terminal affiche [1]+ StoppedCtrl+Z a mis nano en pausetaper fg pour revenir
Fichier fichier.save apparunano a été coupé brutalement (SSH tombé…) : c’est une sauvegarde de secourscomparer avec l’original puis supprimer
Script Python / YAML cassé (indentation)mélange tabulations / espacesset tabstospaces dans ~/.nanorc, Alt+P pour voir les espaces
La ligne finit par > ou $ sur le bordligne plus large que l’écranAlt+S (softwrap)
nano: command not foundpas installé (Arch, VM minimale)sudo apt install nano · sudo pacman -S nano - ou utiliser vi (O10 - Vim)

12. Antisèche

Je veux…Raccourci
enregistrer / quitterCtrl+O Entrée / Ctrl+X
chercher / suivantCtrl+W / Alt+W
remplacerCtrl+\
couper / copier / coller une ligneCtrl+K / Alt+6 / Ctrl+U
sélectionnerAlt+A puis flèches
annuler / refaireAlt+U / Alt+E
aller à la ligne NCtrl+_
numéros de ligneAlt+N
aideCtrl+G

Voir aussi