Jetez un oeuil à la commande col(1)
, col
peut enlever ces caractères d'effacement. Pour les impatients,
voici la commande :
$ groff -t -e -mandoc -Tascii manpage.1 | col -bx> manpage.txt
Les options -t
et -e
disent à groff
d'utiliser les préprocesseurs tbl
et eqn
.
C'est inutile pour les pages de manuel ne nécessitant pas de
préprocesseur mais cela ne gêne pas, si ce n'est une surcharge
du processeur. D'un autre côté, ne pas utiliser -t
alors qu'il est nécessaire fera que les tableaux seront très
mal formatés. Vous pourrez même trouver ("deviner" serait un
terme plus exact) la commande nécessaire pour traiter tel ou
tel document groff (pas uniquement des pages de manuel) par le
biais de grog
:
$ grog /usr/man/man7/signal.7
groff -t -man /usr/man/man7/signal.7
En fait, grog
signifie "GROff Guess", et cet outil
fait bien ce qu'il dit (en anglais, guess = deviner...) : il tente de
deviner la commande nécessaire pour formater un document groff
en fonction de son contenu. S'il était parfait, nous n'aurions
jamais plus besoin d'options. Mais s'il arrive qu'il détermine
un mauvais jeu de macros, je ne l'ai par contre jamais
vu se tromper sur les préprocesseurs à employer.
Voici un petit script Perl réalisé par l'auteur de ce document, qui peut supprimer les en-têtes et les pieds de page, ce qui permet de gagner quelques longueurs de papier lorsque l'on imprime de longues et complexes pages de manuel. Sauvez-le dans un fichier nommé strip-header et mettez-le en mode 755.
#!/usr/bin/perl -n
# pour qu'il avale tout le fichier en une seule fois:
undef $/;
# on enleve les sauts de page:
s/\n{4}\S.{50,}\n{6}\S.{50,}\n{3}/\n/g;
# le premier en-tete et le dernier pied de page:
s/\n\S.{50,}\n//g;
# transorme deux ou plus lignes vides consecutives en une seule:
s/\n{3,}/\n\n/g;
# et voila ce qui reste...
print;
Il faut appeler ce programme en tant que premier filtre après la comande man, car il se base sur le nombre de sauts de ligne issus de groff. Par exemple :
$ man bash | strip-headers | col -bx> bash.txt