Comment suivre les liens dans les pages de manuel de Linux?

92

Existe-t-il un moyen de suivre les liens mentionnés dans une page de manuel? Par exemple, voici la page de manuel pour ps; Comment puis-je accéder au lien marqué en rouge?

Capture d'écran de la page de manuel ps

c'est moi
la source
1
En outre, je vois ce man is an interface to the on-line reference manualsqui (si je ne me trompe pas) signifie qu'il devrait extraire toutes les informations d'une page Web sur Internet, n'est-ce pas? Donc, tout le monde a une idée de ce que le lien http: // est?
its_me
10
Ici, "en ligne" signifie "sur l'ordinateur" (par opposition à "sur papier"), pas "sur Internet".
Gilles
1
"On-Line": Vous vous souvenez peut-être de ces jeux de quêtes "Adventure" pour PC, lancés par une société (à l'époque) nommée Sierra On-Line. pages de manuel: le meilleur moyen de parcourir les pages de manuel est d'utiliser votre éditeur. De cette façon, la navigation, la recherche (etc.) du texte seront aussi fluides que chaque raccourci est dans votre mémoire musculaire depuis longtemps. Supposons également que vous travaillez sur un projet de programmation: vous pouvez copier des pages de manuel dans votre code. Rien de moins qu'une interaction transparente. Découvrez ceci et mon commentaire à la réponse de @Gilles .
Emanuel Berg

Réponses:

52

Les pages de manuel remontent à Unix First Edition . Bien que l' hypertexte ait été inventé, il en était encore à ses balbutiements; le Web était dans deux décennies et le manuel était un véritable livre imprimé, avec souvent une commande par page s'ils correspondaient (c'est pourquoi ils s'appelaient des pages).

Le format utilisé pour les pages de manuel a quelque peu évolué depuis, mais la plupart des pages ne sont pas vraiment conçues pour l'hypertexte, et le manprogramme par défaut ne le prend pas en charge (c'est juste un afficheur de texte brut, avec des hacks pour supporter un formatage de base). Il existe toutefois des programmes d'affichage de pages de manuel qui reconstruisent certains hyperliens, principalement des liens vers d'autres pages de manuel, qui sont traditionnellement écrits sous la forme man(1)manest le nom de la page de manuel et 1le numéro de section :

  • tkman , un visualiseur de pages de manuel avec des hyperliens
  • WoMan ( wiki , man comparsion , anciennement ), un navigateur de pages de manuel pour Emacs, liens hypertextes connexes
  • man2html , un convertisseur homme à HTML (plus un navigateur Web pour lire le résultat)

Vous pouvez parcourir les pages de manuel de plusieurs systèmes d'exploitation, converties en HTML par man2htmldes outils similaires, sur plusieurs sites en ligne, par exemple:

Quelque temps après que les pages de manuel soient devenues le format de documentation établi sous unix et avant que le Web ne soit inventé, le projet GNU a introduit le format de documentation info , plus avancé que man, tout en s’appuyant sur un balisage simple conçu pour les terminaux texte. L'innovation majeure de l'info par rapport à l'homme était d'avoir une documentation de plusieurs pages avec des hyperliens vers d'autres pages. Info est toujours le format de documentation préféré pour les projets GNU, bien que la plupart des pages Info soient générées à partir d'une source Texinfo (ou parfois d'autres formats) pouvant également générer du HTML. Lorsqu'il existe une documentation sur un programme, il s'agit souvent du manuel principal, tandis que les pages de manuel ne contiennent que des informations de base sur les arguments de la ligne de commande.

Gilles
la source
5
Très bonne réponse! Il est également intéressant de noter qu’il existe un autre mode pour les pages de manuel dans Emacs, celui (au moins je) passe juste M-x man(et C-h v mode-namereste Man): au moins dans un aspect, il est supérieur à celui WoMancar il affiche des tableaux ( capture d’écran ). Bien sûr, il existe également un lien hypertexte.
Emanuel Berg
1
L’interface utilisateur du programme d’information semble tout à fait fausse et contre-intuitive. Je n'ai vu personne utiliser cela.
Pavel Šimerda
@ PavelŠimerda> L'interface utilisateur du programme d'information semble totalement fausse et contre-intuitive. <Emm, comparé à quoi? To less (1) (qui est le pager par défaut pour man (1) dans GNU) - cette chose, dans laquelle vous devez vous rappeler comment revenir en arrière , car <backspace> n'est pas lié (et <pgup> pourrait ne pas fonctionner du tout) ? La clé primaire est b, de cette façon. Pour un utilisateur de quel paradigme d'interface, cela pourrait être intuitif?
Dmitry Alexandrov
@ PavelŠimerda> Je n'ai vu personne utiliser cela. <Toujours utiliser les informations (1) pour la lecture quand manpages dans un fait enfermer terminal de texte pour la raison exacte, que , contrairement à moins (1) , il ne convertit muets page(N)liens en liens hypertextes. Était assez surpris que ce ne soit pas mentionné dans la réponse de Gilles dans cette qualité.
Dmitry Alexandrov
37

Tout d'abord, ce n'est pas un lien. C'est juste un soulignement. Les pages de manuel ne sont que des documents texte avec un peu de formatage simple qu'un terminal peut gérer. Le soulignement est juste un point culminant, il n'y a pas de "lien" impliqué.

La mancommande normale est juste un formateur de texte. En fait, la mancommande n’affiche même pas le texte, elle manformate simplement les informations stockées dans le fichier de page de manuel [1] et envoie la sortie formatée à un autre programme (généralement less) qui affiche la sortie formatée à l’écran. Ces programmes d'affichage n'ont aucun concept de liens.

Certains lecteurs de documentation spéciaux pourraient peut-être examiner cette mise en forme et se faire une idée précise qu'une telle mise en évidence pourrait indiquer qu'une page de manuel connexe pourrait être affichée et créer un lien, mais je ne sais pas. qui font. Peut pinfo- être ?

Si vous souhaitez une mise en forme Web avec des liens hypertexte, vous pouvez trouver presque toutes les pages de manuel UNIX en ligne avec des liens ajoutés. Essayez de taper man [anything]dans Google et vous en obtiendrez certainement un dans les deux premiers résultats.

Dans le cas de votre exemple, la mise en surbrillance visuelle est un indice qu'il s'agit d'un autre nom de programme qui a sa propre page de manuel que vous pouvez facilement extraire. Essayez man 1 top. Le 1 indique la section des pages de manuel dans laquelle chercher. Consultez cette question pour obtenir une explication des sections: Que signifient les chiffres d'une page de manuel?


[1] Si vous ouvrez le manfichier de page dans un éditeur de texte, vous verrez la manpage brute qui n'est pas formatée pour en faciliter la lecture. La manpage brute est écrite dans un langage de balisage appelé troff. Pour plus d'informations sur troffet comment écrire une manpage, voir: https://liw.fi/manpages/ .

Caleb
la source
Une idée pourquoi c'est man 1 top?? Je veux dire que cela devrait ressembler à quelque chose ps 1 topparce que j'ai trouvé le lien sur la page de manuel pour ps. "man 1 top" n'a pas de sens pour moi. Précisez s'il vous plaît.
its_me
Il existe également certaines ressources qui rendent les pages de manuel disponibles sur Internet, avec des références remplacées par des href, qui sont cliquables.
Gabe.
1
Si vous voulez suivre top(1)"lien", vous devez ouvrir topla page de manuel à partir de la 1ère section. Pour plus d'informations sur les sections, voir man (1). ps 1 topn'a aucun sens, puisque vous exécuterez juste une pscommande avec des paramètres étranges.
RVS
2
@Aahan c'est man 1 top parce que vous voulez voir la page de manuel de la commande top dans la 1ère section des pages de manuel en ligne. La référence top (1) signifie simplement cela, top dans la 1ère section des pages de manuel. Pour voir cela, vous tapez "man 1 top" à l'invite. Voir "homme homme"
gabe.
1
@Aaran: Les sections "du manuel couvrent différents sujets. La section 1 contient les commandes de l'utilisateur (tout ce que vous tapez à l'invite). La section 2 concerne les appels système, etc. Certaines chaînes apparaissent plusieurs sections. Sur la machine sur laquelle je suis readlinkfigure à présent dans les sections 1 et 2, et printfdans les sections 1 et 3. Si vous tapez simplement man command, manipulez les sections dans l’ordre numérique et affichera la première recherche, ou vous pouvez être précis man # command, ce que vous devez faire pour obtenir la documentation. pour l' readlinkappel système
dmckee
12

C'est une réponse très tardive mais utilisez w3mman. w3mman est le pageur manuel du système de w3m.

https://linux.die.net/man/1/w3mman

Vous pouvez l'essayer en installant le paquet w3m. Je crois que ce paquet est enregistré dans les répertoires de logiciels de la plupart des principales distributions Linux / UNIX et de Cygwin.

Akawaguc
la source
1
Une réponse tardive qui ajoute une réponse à la question qui n'est pas encore mentionnée, ce n'est jamais un problème! Bienvenue chez Unix & Linux StackExchange!
Bernhard
w3mmanest également fourni avec l' w3minstallation par défaut de Macports . C'est génial :) Merci!
Sampablokuper
8

Permettez-moi d’essayer d’interpréter votre question un peu plus dans le sens où j’essaie de suivre votre flux de travail. Ce que vous voudriez probablement, c’est une combinaison de touches dans une manpage qui vous mènera directement aux commandes soulignées que vous lisez. Donc, ne pas avoir à installer autre chose, ni ouvrir une autre console et oublier la syntaxe exacte par exemple.

Cette solution la plus simple est le point d’exclamation (si vous utilisez lesspour afficher les pages de manuel) et que vous souhaitez accéder au texte souligné top:

!man top

Ou

!man 1 top

Vous devrez tous les fermer en appuyant qplusieurs fois. Notez également que cela ne fonctionnera pas si LESSSECURE=1est définie en tant que variable d'environnement qui ferait fonctionner lessen mode sécurisé et ne vous permettrait pas de l'utiliser !. Il vous dira quelque chose comme "Commande non disponible".

Anne van Rossum
la source
1

Bien que w3mman soit une solution pour suivre les liens, n'utilise pas tout l'écran (du moins sur Ubuntu 12.10)

Je préfère utiliser:

$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'

ajoutez la dernière commande à ~ / .bash_aliases ou à un script de démarrage similaire pour l'obtenir à chaque session.

Le -P w3m est parce que le premier navigateur à hman est Lynx ou sensible-browser mais je préfère w3m

hman est un outil fourni avec html2man. Voir ce

Si sortir avec confirmation vous gêne, utilisez-moi ceci

Albfan
la source
Mon erreur, le paquet doit être html2man
albfan
1

Yelp est spécialement conçu pour Ubuntu. Il est installé par défaut et est par défaut capable d'afficher des pages de manuel, bien que l'invocation pour le faire ne soit pas la même que celle de la mancommande; un alias ou une fonction shell peut contourner ce dernier point (dépend de votre shell).

yelp 'man:exit'

Il s’agira par défaut d’une section de manière inconnue. Rappel: pour obtenir la liste des sections d’une rubrique manuelle, utilisez whatis, comme dans whatis exit.

Pour demander à Yelp d’afficher une page de manuel d’une section spécifique, disons 2, procédez comme suit:

yelp 'man:exit(2)'

Problèmes: yelp a des bugs et soyez prêt à générer plusieurs erreurs lors de son appel depuis la ligne de commande. Là aussi, un alias ou une fonction shell personnalisée peut aider à rediriger toutes les erreurs vers/dev/null

Hibou57
la source
1

Comme ils l'ont dit, ce n'était pas conçu pour ça.

Vous pouvez utiliser info manpuis appuyer sur Entrée une fois que vous êtes sous VOIR AUSSI section sur votre élément.

info - lire les documents d'information

sentiers binaires
la source
1

J'ai un (deux) hack (s).

bidouille 1

Mettez ceci dans votre ~ / .bashrc ou votre ~ / .zshrc

function man(){
    for arg in "$@"; do
        vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
    done
}

Capture d'écran..

manuel dans la capture d'écran vim

Asciinema ..

https://asciinema.org/a/130131

Maintenant..

  1. lorsque vous tapez man vim, par exemple, cela ouvrira cette page de manuel dans vim

    • si vous tapez man man vim, par exemple, il ouvrira d'abord manle manuel et, après avoir quitté vim, il ouvrira vimle manuel.
  2. lorsque vous appuyez sur K(c'est le capital k) lorsque vous êtes sur une autre page de l' homme au fond (la VOIR AUSSI section), vous sautera à ce manuel (malheureusement à l' intérieur d' un téléavertisseur moins - c'est parce que nous avons let no_man_maps = 1, si vous ne le faites pas faites cela, alors vim forcera qà être :qet vous ne pourrez pas enregistrer une macro facilement, et vim peut se comporter de manière maladroite d’une autre manière).

    • sortir de ce second manuel que vous avez entré vous ramènera au manuel précédent que vous étiez en train de visionner
  3. vous obtenez une très jolie coloration syntaxique puisque vous avez chargé ftplugin / man.vim et que le ft est (automatiquement) réglé sur man.

  4. vous pouvez copier et coller, naviguer librement dans vim et même modifier le tampon et :w ~/usefulfile. Vous pouvez faire tout ce que vous feriez normalement dans vim, y compris les macros d’enregistrement, le presse-papier avec "+y(si vous en avez +clipboard), etc., etc.

Je trouve ça beaucoup mieux que moins .

Le seul inconvénient mineur que j'ai constaté (qui existe toujours si vous utilisez moins comme téléavertisseur) est si vous souhaitez que plusieurs manuels soient ouverts au cours d'une session vim. Je ne vois pas vraiment le moyen de faire ça.

Quelques notes:

  1. si vous essayez de sauver le tampon, vous obtiendrez E382: Cannot write, 'buftype' option is set

    • J'aime que vous ne puissiez pas enregistrer car cela évite de le sauvegarder accidentellement
  2. vous pouvez toujours enregistrer comme :w /tmp/man.man

    • si vous enregistrez avec une .manextension, son ouverture définira le type de fichier manpour vous
    • si vous ne l'enregistrez pas avec une .manextension, vous pouvez simplement définir le ft sur manen exécutant:set ft=man
  3. Si vous avez besoin de faire certaines choses lorsque vous ouvrez des pages de manuel, vous pouvez utiliser autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!', par exemple.

  4. J'ai mis le texte suivant dans mon vimrc pour pouvoir appuyer sur Kpour essayer d'ouvrir le manuel, puis sur Gpour revenir au manuel précédent:


augroup man
    autocmd!
    autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
    autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END

bidouille 2

mettez ceci dans votre ~ / .bashrc ou ~ / .zshrc

function man(){
    declare -a args
    for arg in "$@"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

Capture d'écran..

plusieurs manuels dans vim

Asciinema ..

https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv

Cela résout le problème que le piratage 1 et moins visage (maintenant vous pouvez afficher plusieurs manuels dans un tampon), mais il est moins élégant.

Remarques:

  1. IMPORTANT si vous voulez que hack2 fonctionne, vous devez mettre :let no_man_maps = 1votre ~/.vimrc. Ceci est dû au fait que vim sera source .../vim80/man.vimet qqu’il sera forcément redirigé vers :q.

  2. il y a plus de nettoyage impliqué (maintenant vous stockez chaque manuel dans /tmp/*.man )

  3. vous pouvez maintenant, cependant, afficher plusieurs pages de manuel au cours d'une session, comme indiqué ci-dessus

  4. si vous appuyez sur K, vous ouvrirez quand même une nouvelle session vim, cependant

    • si vous voulez, vous pouvez lier un autocmd (en utilisant un autocmd comme celui ci-dessus) pour faire quelque chose comme autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"ça ou quelque chose de fou comme ça ( non testé )
Dylan
la source
excuses pour asciinema mal coloré. Les couleurs sont beaucoup plus agréables dans mon terminal.
Dylan
0

J'ai pu utiliser l' --htmlargument to manpour l'ouvrir dans le navigateur défini par la variable d'environnement $ BROWSER.

BROWSER=google-chrome man ps --help

J'utilise Fedora. Vous ne savez pas si cela fonctionne pour votre distribution, veuillez tester et signaler dans les commentaires.

tutuDajuju
la source
L'option semble reconnue sur Ubuntu 12.04, mais elle échoue.
Hibou57
OK, le paquet groffdoit être installé. La groffcommande peut être là alors que le package du même nom ne l’est pas (la commande est fournie groff-base, pas le groffpackage complet ). Oui man --html="surf file%c//%s" <command>, et c'est bien. Il existe cependant un hypertexte très très limité: - /.
Hibou57