Créer une page de manuel simple

Cet article a été rédigé par le membre rédacteur pestak.




Vous avez écrit un petit script ou une petite application bien pratique pour votre usage quotidien ? Si vous voulez partager cet utilitaire, ou tout simplement vous rappeler la manière dont on l'utilise, il va falloir écrire la documentation qui va avec. Et qui dit documentation sous UNIX, dit manuel !

Cet article vous aidera justement dans la conception de votre première page de manuel. Cependant, ne vous attendez pas à connaître les tenants et les aboutissants du manuel et du langage Troff (voir ici pour en savoir plus) : cet article a pour but de vous initier, mais ne va pas plus loin. Cependant, nous vous proposerons des liens en fin de page pour aller plus loin.

Une page de manuel

Avant de nous lancer tête baissée dans l'écriture d'un page de manuel, intéressons nous plutôt à quelques caractéristiques.

Une page de manuel appartient à une des huit sections suivantes :

1. Les commandes utilisateurs
2. les appels systèmes
3. les fonctions bibliothèques
4. les fichiers périphériques
5. les fichiers d'administrations
6. les jeux (ah !)
7. divers
8. les commandes d'administration

Par exemple, man passwd expliquera comment utiliser la commande passwd, alors que man 5 passwd décrira le fichier /etc/passwd.

Une page de manuel est divisée en plusieurs parties : NAME, SYNOPSIS, DESCRIPTION, OPTIONSman <commande> pour s'en convaincre.
Pareillement, les caractéristiques d'un page de manuel abondent : mots en gras, mots soulignés, caractères entre crochets....
pour les principales. Mais sachez qu'il y a en bien d'autres, il suffit d'un

Notre première page

Voici en gros,à quoi ressemble une page de manuel.
Nous reviendrons sur les éléments qui composent cette page après sa lecture.


Code : Autre

.Dd Date
.Dt TITRE_DU_DOCUMENT 1
.Sh NOM
nom - description tres courtes
.Sh SYSNOPSIS
commande [--option | --autre_option] cible
.Sh DESCRIPTION
C'est ici que nous decrirons en detail la commande.
Essayez d'être le plus clair possible.
.Pp
Pour cela nous pouvons utiliser plusieurs paragraphes
séparés par la balise que voyez au dessus.
.Sh AUTRES
Comme nous l'avons vu tout a l'heure, 
une page peut contenir toutes sortes de parties.

Ceux qui utilisent LaTeX ne devraient pas trop être dépaysés !

Comme vous le voyez, la page est écrite à l'aide de balises qu'on appellent des macros troff.

Expliquons rapidement les quatre macros utilisées ici:

  • .Dd pour la date

  • Dt pour le titre du document. Le « 1 signifie que cette page de man appartient à la première section (Les commandes utilisateurs)

  • .Sh pour diviser en sections

  • .Pp pour diviser en paragraphes

Pour lire du texte en langage Troff, nous utiliseront l'utilitaire GNU-Troff:

« groff -Tascii -man fichier» générera la page fichier et permettra sa lecture.
A noter que groff est aussi capable de générer des pages dans d'autres formats.
Par exemple, « groff -Tps -man fichier » générera un fichier PostScript.

Un cas concret

J'ai pour l'occasion écrit un petit script Bash dont l'utilité est de lister dans un répertoire, les noms de fichiers qui contiennent des espaces, et de remplacer ces espaces par un «_».

Attention ce script mériterait d'être revu et amélioré, mais, il sera bien suffisant pour notre exemple.

Vous pouvez l'utiliser, le partager et le modifier comme bon vous semble !

 Enregistrez ce script sous le nom : $HOME/bin/espace (créer le dossier bin au besoin)


Code : Bash

#!/bin/bash
# espace - supprime les espaces dans les noms de fichiers
# usage : espace [-l|-f|-c] direction

########################LES OPTIONS#########################
#-l : liste les noms de fichier avec au moins un espace #
#-c : pareil que l'option -l, puis demande si l'on remplace#
#les
espaces par des "_" #
#-f :remplace sans confirmation #
#pas d'option = -l #
#############################################################

# David LEGRAND : david.legrand.charente@gmail.com
##Gestion des erreurs

erreur_1()
{
echo "Je ne comprends pas ce que vous voulez !"
echo "Usage : espace [-l|-f|-c] direction"
echo
exit 1
}

erreur_2()
{
echo "le chemin n'est pas bon"
echo
exit 2
}

## vérification des paramètres
echo
case $# in
0)
erreur_1 ;;

1)
dir="$1"
option="liste" ;;

2)
case $1 in

"-l") option="liste";;
"-c") option="confirme";;
"-f") option="force";;
*) erreur_1;;
esac
dir="$2" ;;

*) erreur_1 ;;
esac
[ -d $dir ] || erreur_2

##La commande s'exécute
case $option in
liste)
ls $dir | sed -n -e '/ /p'
echo ;;

confirme)
ls $dir | sed -n -e '/ /p'
echo "On remplace ?"
read reponse
case $reponse in
O | o | Y | y)
rename "s/ /_/g" $dir/*
# il faudra gérer les erreurs (ex: nom deja pris,...)
echo ;;
*) ;;
esac ;;

force)
rename "s/ /_/g" $dir/*
echo
# il faudra gérer les erreurs
;;

esac
exit 0

Écrivons sur le champ la page Troff qui va bien :

Code : Autre

.Dd 11 mars 2009
.Dt ESPACE 1
.Sh NOM
espace - gere les espaces dans les noms de fichiers
.Sh SYNOPSIS
espace [-l | -c | -f] dossier
.Sh DESCRIPTION
espace permet de lister et/ou de supprimer les espaces dans
le nom des fichiers du dossier cible.
.Sh OPTIONS
-l
Liste dans un dossier, les noms de fichiers contenants au moins
un espace.
.Pp
-c
Liste dans un dossier, les noms de fichiers contenant un espace,
puis propose de les remplacer par un '_'
.Pp
-f
Remplace les espaces sans confirmation.
.Sh FICHIERS
$HOMES/bin/espace
.Sh AUTHEUR
David LEGRAND  :  david.legrand.charente@gmail.com

Enregistrez ce fichier sous le nom :  /usr/local//man/man1/espace.1

Maintenant pour tester son accès :

Code : Console

# gzip /usr/local/man/man1/espace.1
# MANPATH=/usr/share/man:/usr/local/man
# export MANPATH
$ man espace

NOM
     espace - gere les espaces dans les noms de fichiers

SYNOPSIS
     espace [-l | -c | -f] dossier

DESCRIPTION
     espace permet de lister et/ou de supprimer les espace
dans le nom des fichiers du dossier cible.

OPTIONS
     -l Liste dans un dossier, les noms de fichiers contenant
un espace.

     -c Liste dans un dossier, les noms de fichiers contenant
un espace, puis propose de les remplacer par un '_'

     -f Remplace les espaces sans confirmation.

FICHIERS
     $HOMES/bin/espace

AUTHEUR
     David LEGRAND  :  david.legrand.charente@gmail.com

Si cette page vous convient, ajoutez la à l'index avec la commande (makewhatis /usr/local/man) sous Fedora par exemple et avec mandb sous Ubuntu/Debian.

Quelques macros de mise en forme :

Mettre le texte en gras : .B
En gras et en roman : .BR
Mettre le texte en italique : .I
En italique et en roman : .IR
Un commentaire : ."
Pour aller plus loin



Article ajouté le 2009-03-13 , consulté 243 fois

Commentaires



Poster un commentaire





http://





Merci de recopier le nombre présent à gauche dans la case de texte ci-dessous ( Pourquoi ? )





Liens

Voir les articles de la catégorie " Linux et Bash "

Imprimer cet article

Retour aux articles