draft: apropos
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"title": "apropos",
|
||||||
|
"_updated_at": "2026-05-17 07:46:54"
|
||||||
|
}
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
Bonjour ! Je vais améliorer cet article pédagogique sur `apropos`. Voici plusieurs problèmes que j'ai repérés et que je corrige :
|
||||||
|
|
||||||
|
**Erreurs à corriger :**
|
||||||
|
- L'astuce dit `-m` mais utilise `-s` dans l'exemple (c'est `-s` qui est correct pour les sections)
|
||||||
|
- « le paramètre `-m` » devrait être `-s`
|
||||||
|
- « le recherche » → « la recherche »
|
||||||
|
- « et conditionnée » → « est conditionnée »
|
||||||
|
- « mot clé » → « mots-clés »
|
||||||
|
|
||||||
|
**Améliorations pédagogiques :**
|
||||||
|
- Ajout d'une intro qui explique le « pourquoi » (à quoi sert vraiment `apropos`)
|
||||||
|
- Explication de la numérotation des sections du manuel (essentielle pour comprendre `-s`)
|
||||||
|
- Mention de l'équivalence avec `man -k`
|
||||||
|
- Ajout d'une astuce sur la recherche par expression régulière (`-r`)
|
||||||
|
- Structure plus claire avec des sous-titres
|
||||||
|
- Ajout d'un encadré sur la base de données `mandb` (point souvent source de confusion)
|
||||||
|
|
||||||
|
Voici la version améliorée :
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# apropos
|
||||||
|
|
||||||
|
## À quoi ça sert ?
|
||||||
|
|
||||||
|
Vous cherchez une commande mais vous ne vous souvenez plus de son nom ? Vous savez ce que vous voulez faire, mais pas comment l'appeler ? C'est exactement le rôle d'`apropos`.
|
||||||
|
|
||||||
|
La commande `apropos` recherche dans les **noms** et les **descriptions courtes** des pages du manuel système (les pages `man`) tous les mots-clés passés en arguments. C'est l'équivalent de `man -k`.
|
||||||
|
|
||||||
|
> 💡 **Bon à savoir** : `apropos` ne fouille pas le contenu complet des pages de manuel, seulement la ligne `NAME` (nom + description courte). Pour une recherche dans le corps des pages, il faut se tourner vers d'autres outils comme `man -K` (avec un K majuscule).
|
||||||
|
|
||||||
|
## Un premier exemple
|
||||||
|
|
||||||
|
Cherchons toutes les commandes liées à la copie :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ apropos copy
|
||||||
|
debconf-copydb (1) - copier une base de données debconf
|
||||||
|
bcopy (3) - copy byte sequence
|
||||||
|
copy_file_range (2) - Copy a range of data from one file to another
|
||||||
|
copysign (3) - copy sign of a number
|
||||||
|
cp (1) - copy files and directories
|
||||||
|
cpio (1) - copy files to and from archives
|
||||||
|
dd (1) - convert and copy a file
|
||||||
|
rsync (1) - a fast, versatile, remote (and local) file-copying tool
|
||||||
|
scp (1) - secure copy (remote file copy program)
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Comprendre la sortie
|
||||||
|
|
||||||
|
Chaque ligne suit le format : `commande (section) - description`.
|
||||||
|
|
||||||
|
Le **numéro entre parenthèses** correspond à la section du manuel :
|
||||||
|
|
||||||
|
| Section | Contenu |
|
||||||
|
|---------|---------|
|
||||||
|
| 1 | Commandes utilisateur (shell) |
|
||||||
|
| 2 | Appels système (kernel) |
|
||||||
|
| 3 | Fonctions de bibliothèque (C, etc.) |
|
||||||
|
| 4 | Fichiers spéciaux (`/dev/...`) |
|
||||||
|
| 5 | Formats de fichiers et conventions |
|
||||||
|
| 6 | Jeux |
|
||||||
|
| 7 | Divers (protocoles, conventions) |
|
||||||
|
| 8 | Commandes d'administration |
|
||||||
|
|
||||||
|
Cette numérotation explique pourquoi on voit dans l'exemple à la fois `cp (1)` (la commande shell) et `copy_file_range (2)` (l'appel système). Pas pratique quand on cherche juste une commande à taper dans son terminal…
|
||||||
|
|
||||||
|
## Les astuces utiles
|
||||||
|
|
||||||
|
### 🎯 Limiter la recherche à une section
|
||||||
|
|
||||||
|
Pour n'afficher que les commandes du shell (section 1), utilisez l'option `-s` :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ apropos -s 1 copy
|
||||||
|
cp (1) - copy files and directories
|
||||||
|
cpio (1) - copy files to and from archives
|
||||||
|
dd (1) - convert and copy a file
|
||||||
|
rsync (1) - a fast, versatile, remote (and local) file-copying tool
|
||||||
|
scp (1) - secure copy (remote file copy program)
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Beaucoup plus lisible ! Vous pouvez aussi cibler la section 8 pour les commandes d'admin, ou la section 2 si vous codez en C et cherchez un appel système.
|
||||||
|
|
||||||
|
### 🔍 Rechercher avec plusieurs mots-clés (ET logique)
|
||||||
|
|
||||||
|
Par défaut, la recherche de plusieurs mots-clés est conditionnée par un **OU** logique. La commande `apropos copy file` retourne donc les pages contenant `copy` **ou** `file` — autant dire la moitié du manuel.
|
||||||
|
|
||||||
|
Pour exiger que **tous** les mots-clés soient présents, utilisez `-a` (comme *and*) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ apropos -s 1 -a copy file
|
||||||
|
cp (1) - copy files and directories
|
||||||
|
cpio (1) - copy files to and from archives
|
||||||
|
dd (1) - convert and copy a file
|
||||||
|
install (1) - copy files and set attributes
|
||||||
|
mcopy (1) - copy MSDOS files to/from Unix
|
||||||
|
rcp (1) - secure copy (remote file copy program)
|
||||||
|
rsync (1) - a fast, versatile, remote (and local) file-copying tool
|
||||||
|
scp (1) - secure copy (remote file copy program)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🧩 Rechercher avec une expression régulière
|
||||||
|
|
||||||
|
Pour des recherches plus fines, l'option `-r` (activée par défaut sur la plupart des distributions) permet d'utiliser une regex :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ apropos '^cp' # commandes commençant par "cp"
|
||||||
|
$ apropos 'copy|move' # contenant "copy" ou "move"
|
||||||
|
```
|
||||||
|
|
||||||
|
L'option `-w` permet à l'inverse d'utiliser des jokers shell (`*`, `?`).
|
||||||
|
|
||||||
|
## ⚠️ « apropos: nothing appropriate » ?
|
||||||
|
|
||||||
|
Si `apropos` ne trouve rien alors que vous êtes sûr·e que la commande existe, c'est probablement que la **base de données des pages de manuel** n'est pas à jour. `apropos` ne lit pas les pages à la volée : il interroge un index pré-construit.
|
||||||
|
|
||||||
|
Pour le régénérer :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo mandb
|
||||||
|
```
|
||||||
|
|
||||||
|
C'est typiquement le cas après l'installation d'un nouveau paquet sur certains systèmes minimaux (conteneurs Docker, par exemple).
|
||||||
|
|
||||||
|
## Pour aller plus loin
|
||||||
|
|
||||||
|
- `whatis commande` : affiche uniquement la description courte d'une commande précise (recherche exacte sur le nom)
|
||||||
|
- `man -k` : strictement équivalent à `apropos`
|
||||||
|
- `man -K` : recherche dans le **contenu** complet des pages (beaucoup plus lent)
|
||||||
@@ -1311,3 +1311,4 @@
|
|||||||
{"ts":"2026-05-17 07:40:33","url":"/journal_geek/billets/i","ref":"","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 15_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.60 Safari/537.36"}
|
{"ts":"2026-05-17 07:40:33","url":"/journal_geek/billets/i","ref":"","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 15_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.60 Safari/537.36"}
|
||||||
{"ts":"2026-05-17 07:43:42","url":"/informatique/linux/cfp/changer-le-nom-de-machine","ref":"","ua":"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"}
|
{"ts":"2026-05-17 07:43:42","url":"/informatique/linux/cfp/changer-le-nom-de-machine","ref":"","ua":"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"}
|
||||||
{"ts":"2026-05-17 07:44:00","url":"/informatique/linux/cfp/create-raid","ref":"","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"}
|
{"ts":"2026-05-17 07:44:00","url":"/informatique/linux/cfp/create-raid","ref":"","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"}
|
||||||
|
{"ts":"2026-05-17 07:45:26","url":"/favicon.ico","ref":"https://www.abonnel.fr/","ua":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0"}
|
||||||
|
|||||||
Reference in New Issue
Block a user