OVH Cloud OVH Cloud

[man] définition du PAGER

7 réponses
Avatar
David LE BOURGEOIS
Bonsoir à tous.


Pour exporter une manpage dans un fichier texte, le manuel du man,
propose :

man foo | col -b > foo.mantxt

Personnellement, j'utilisais :

PAGER='col -b' man foo > foo.mantxt

Mais, c'est deux solutions répètent le pied de page du manuel toutes
les 65 lignes. Après avoir cherché un peu et effectués quelques essais,
je viens de trouver une manière de ne conserver uniquement que le
dernier pied de page :

PAGER='col -b > foo.mantxt' man foo

Seulement, je ne m'explique pas le pourquoi de ce phénomène.
Que se passe-t-il dans le fonctionnement de la commande man ? J'ai
surement dû manquer quelque chose.



Merci pour vos lumières.



--
David LE BOURGEOIS

Citation aléatoire (fortune) :

Il y a mille inventions pour faire parler les femmes,
mais pas une seule pour les faire taire. Guillaume Bouchet

7 réponses

Avatar
David LE BOURGEOIS

Pour exporter une manpage dans un fichier texte, le manuel du man,
propose :

man foo | col -b > foo.mantxt

Personnellement, j'utilisais :

PAGER='col -b' man foo > foo.mantxt

Mais, c'est deux solutions répètent le pied de page du manuel toutes
les 65 lignes. Après avoir cherché un peu et effectués quelques essais,
je viens de trouver une manière de ne conserver uniquement que le
dernier pied de page :

PAGER='col -b > foo.mantxt' man foo

Seulement, je ne m'explique pas le pourquoi de ce phénomène.
Que se passe-t-il dans le fonctionnement de la commande man ? J'ai
surement dû manquer quelque chose.


Là, je suis un peu perdu sur le fonctionnement de man.
Si je tape :

man -P 'col -b' man

Lorsque je remonte dans mon terminal avec les touches shift et PgUP, je
ne vois qu'une seule fois le pied de page. Alors que si j'envoie le
résultat dans un tube vers cat, j'obtiens plusieurs pieds de page :

~ $ man -P 'col -b' man | grep "[0-9]$"
September 2, 1995 1
September 2, 1995 2
September 2, 1995 3
September 2, 1995 4


Je voudrais arriver à afficher le contenu de la manpage, au format
texte, avec uniquement un pied de page à la fin.

Encore merci si quelqu'un peut m'aider.

--
David LE BOURGEOIS

Avatar
Laurent Wacrenier
David LE BOURGEOIS écrit:
Que se passe-t-il dans le fonctionnement de la commande man ? J'ai
surement dû manquer quelque chose.


Rien de standart. Sur quel système ?

Avatar
Ol
On Wed, 17 Dec 2003 21:49:34 +0100, David LE BOURGEOIS wrote:

Je voudrais arriver à afficher le contenu de la manpage, au format
texte, avec uniquement un pied de page à la fin.


Une solution qui vaut ce quelle vaut, en utilisant vim :

export MANPAGER="col -b | view -c 'set ft=man nomod nolist' -"
Cf : <http://vim.sourceforge.net/tips/tip.php?tip_id7>

Te permet d'utiliser vim comme PAGER, ensuite tu peux si tu le désire
enregistrer le fichier texte via :
:sav path_absolue_du_fichier

ou lancer une impression via :
:ha

(testé avec vim 6.x sous linux)

--
Ol

Avatar
David LE BOURGEOIS

David LE BOURGEOIS écrit:

Que se passe-t-il dans le fonctionnement de la commande man ? J'ai
surement dû manquer quelque chose.



Rien de standart. Sur quel système ?


Oups, j'ai pas précisé.

Unix Aix 4 et 5
Linux RedHat 8.0
Linux Mandrake 7.0 et 8.0

--
David LE BOURGEOIS


Avatar
David LE BOURGEOIS

On Wed, 17 Dec 2003 21:49:34 +0100, David LE BOURGEOIS wrote:


Je voudrais arriver à afficher le contenu de la manpage, au format
texte, avec uniquement un pied de page à la fin.



Une solution qui vaut ce quelle vaut, en utilisant vim :

export MANPAGER="col -b | view -c 'set ft=man nomod nolist' -"
Cf : <http://vim.sourceforge.net/tips/tip.php?tip_id7>

Te permet d'utiliser vim comme PAGER, ensuite tu peux si tu le désire
enregistrer le fichier texte via :
:sav path_absolue_du_fichier

ou lancer une impression via :
:ha

(testé avec vim 6.x sous linux)



C'est une solution intéressante.
Mais le but n'est pas d'imprimer et encore moins d'être interactif. En
fait, je veux juste le format texte brut du manuel, sans les pieds de
page, sans intervention manuelle (dans un script par exemple).

~ $ MANPAGER="col -b > /tmp/a" man xterm
~ $ MANPAGER="col -b" man xterm > /tmp/b
~ $ diff /tmp/a /tmp/b | wc -l
2044

Je voudrais comprendre pourquoi les données changent selon que la
destination soit dans la variable MANPAGER, ou qu'elle soit sur la ligne
de commande.

Merci d'avance.


--
David LE BOURGEOIS

Citation aléatoire (fortune) :

<Bartman> Je fais de l'irc avec un client en Perl.
<Bartman> Ca marche bien :-)
-:- Signoff Bartman (dead socket)

- #francaise


Avatar
Stephane Chazelas
2003-12-18, 18:23(+01), David LE BOURGEOIS:
[...]

Je voudrais comprendre pourquoi les données changent selon que la
destination soit dans la variable MANPAGER, ou qu'elle soit sur la ligne
de commande.


Que dit

strace -s999 -qfeexecve man xterm 2>&1 > /dev/null | grep -w sh

Avec les differentes valeurs de MANPAGER ?

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Avatar
David LE BOURGEOIS
Que dit

strace -s999 -qfeexecve man xterm 2>&1 > /dev/null | grep -w sh

Avec les differentes valeurs de MANPAGER ?



~ $ export MANPAGER="col -b"
~ $ strace -s999 -qfeexecve man xterm
execve("/usr/bin/man", ["man", "xterm"], [/* 41 vars */]) = 0
--- SIGCHLD (Child exited) ---
PTRACE_ATTACH: Operation not permitted
Too late?
[Control-C]
~ $ export MANPAGER="col -b > /tmp/a"
~ $ strace -s999 -qfeexecve man xterm
execve("/usr/bin/man", ["man", "xterm"], [/* 41 vars */]) = 0
--- SIGCHLD (Child exited) ---
PTRACE_ATTACH: Operation not permitted
Too late?
[Control-C]
~ $ sudo su -

~ # export MANPAGER="col -b"
~ # strace -s999 -qfeexecve man xterm 2>&1 > /dev/null |
grep -w sh
[pid 5501] execve("/bin/sh", ["sh", "-c", "(cd /usr/X11R6/man ; (echo
-e ".pl 11i"; /usr/bin/bzip2 -c -d /usr/X11R6/man/man1/xterm.1.bz2) |
/usr/bin/gtbl | /usr/bin/groff -Tlatin1 -mandoc | col -b)"], [/* 35 vars
*/]) = 0
~ # export MANPAGER="col -b > /tmp/a"
~ # strace -s999 -qfeexecve man xterm 2>&1 > /dev/null |
grep -w sh
[pid 5532] execve("/bin/sh", ["sh", "-c", "(cd /usr/X11R6/man ; (echo
-e ".pl 11i"; /usr/bin/bzip2 -c -d /usr/X11R6/man/man1/xterm.1.bz2) |
/usr/bin/gtbl | /usr/bin/groff -Tlatin1 -mandoc | col -b > /tmp/a)"],
[/* 35 vars */]) = 0


--
David LE BOURGEOIS