web-dev-qa-db-fra.com

Comment suivre les liens dans les pages de manuel Linux?

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

Screenshot of the ps man page

101
its_me

Les pages de manuel remontent à nix First Edition . Alors que hypertexte avait été inventé, il était encore à ses balbutiements; le Web était à deux décennies de distance, et le manuel était un véritable livre imprimé, souvent avec une commande par page si elles convenaient (c'est pourquoi on les appelait des pages).

Le format utilisé pour les pages de manuel a quelque peu évolué depuis lors, mais la plupart des pages ne sont pas vraiment conçues pour l'hypertexte, et le programme par défaut man ne le prend pas en charge (c'est juste une visionneuse de texte brut, avec des hacks à prendre en charge une mise en forme de base). Il existe cependant des programmes de visualisation des 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)man est le nom de la page de manuel et 1 est le numéro de section :

  • tkman , un visualiseur de page de manuel GUI avec des hyperliens
  • WoMan ( wiki , man comparsion , formerly ), un navigateur de page de manuel pour Emacs, prenant en charge les hyperliens
  • man2html , un convertisseur homme vers 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 man2html ou des outils similaires, sur un certain nombre de sites en ligne, par exemple:

Quelque temps après que les pages de manuel soient devenues le format de documentation établi sous Unix et quelque temps avant l'invention du Web, le projet GNU a introduit le info format de documentation, plus avancé que l'homme tout en respectant un balisage simple conçu pour les terminaux texte. L'innovation majeure par rapport à l'homme était d'avoir une documentation multi-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) qui peut également générer du HTML. la documentation info d'un programme existe, 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.

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 petit formatage simple qu'un terminal peut gérer. Le soulignement est juste un point culminant, il n'y a aucun "lien" impliqué.

La commande normale man est juste un formateur de texte. En fait, la commande man n'affiche même pas le texte, man formate 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.

Il existe des lecteurs de documentation spéciaux qui pourraient être en mesure de regarder un formatage comme celui-ci et de faire une supposition éclairée qu'un tel point culminant pourrait indiquer qu'il existe une page de manuel connexe qui pourrait être relevée et créer un lien, mais je ne sais pas lesquels font. Peut-être pinfo?

Si vous souhaitez une mise en forme Web avec des hyperliens, 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 hits.

Dans le cas de votre exemple, la mise en évidence visuelle est un indice qu'il s'agit d'un autre nom de programme qui possède sa propre page de manuel que vous pouvez facilement afficher. Essayez man 1 top. Le 1 indique la section des pages de manuel à consulter. Voir cette question pour une explication des sections: Que signifient les nombres dans une page de manuel?


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

39
Caleb

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

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

Vous pouvez l'essayer en installant le package w3m. Je crois que ce package est enregistré dans les dépôts de logiciels de la plupart des principales distributions Linux/UNIX et Cygwin.

13
akawaguc

Permettez-moi d'essayer d'interpréter un peu plus votre question dans un sens où j'essaie de suivre votre flux de travail. Ce que vous aimeriez probablement avoir, c'est une combinaison de touches dans une page man qui vous mène 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 less pour afficher les pages de manuel) et que vous souhaitez accéder au top souligné:

!man top

Ou

!man 1 top

Vous devrez tous les fermer en appuyant plusieurs fois sur q. Notez également que cela ne fonctionnera pas si LESSSECURE=1 est défini comme variable d'environnement qui ferait tourner less en mode sécurisé et ne vous permettrait pas d'utiliser !. Il vous dira quelque chose comme "Commande non disponible".

11
Anne van Rossum

Bien que w3mman soit une solution pour suivre les liens, n'utilise pas tout l'écran (au 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 sur html2man. Voir ceci

Si la sortie avec confirmation vous ennuie, comme moi, utilisez this

2
albfan

Comme ils l'ont dit, il n'a pas été conçu pour cela.

Vous pouvez utiliser info man puis appuyez sur Entrée une fois que vous êtes sous VOIR AUSSI section sur votre article.

info - lire les documents d'information

2
binarytrails

Spécifiquement pour Ubuntu, il y a Yelp. Il est installé par défaut et est par défaut capable d'afficher les pages de manuel, bien que l'invocation pour ce faire, ne soit pas la même que celle de la commande man; un alias ou une fonction Shell peut contourner ce dernier point (dépend de votre Shell).

Yelp 'man:exit'

Il sera par défaut à une section d'une manière que je ne sais pas. 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 à partir d'une section spécifique, disons 2, procédez comme suit:

Yelp 'man:exit(2)'

Problèmes: Yelp a des bogues et soyez prêt à obtenir plusieurs erreurs lors de son appel à partir de la ligne de commande. Là aussi, un alias ou une fonction Shell personnalisée peut aider à rediriger toutes les erreurs vers /dev/null

2
Hibou57

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

pirater 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..

manual in vim screenshot

Asciinema ..

https://asciinema.org/a/130131

Maintenant..

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

    • si vous tapez man man vim, par exemple, il ouvrira d'abord le manuel de man et après avoir quitté vim, il ouvrira le manuel de vim
  2. lorsque vous appuyez sur K (c'est la majuscule k) lorsque vous êtes sur une autre page de manuel en bas (la section VOIR AUSSI), vous passerez à ce manuel (malheureusement à l'intérieur de un téléavertisseur de moins - c'est parce que nous avons let no_man_maps = 1; si vous ne le faites pas, vim forcera q à :q et vous ne pourrez pas enregistrer facilement une macro, et vim peut se comporter de façon désordonnée par d'autres moyens).

    • quitter ce deuxième manuel que vous avez entré vous ramènera au manuel précédent que vous consultiez
  3. vous obtenez une très jolie coloration syntaxique puisque vous avez chargé ftplugin/man.vim et que 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, tirer sur le presse-papiers avec "+y (si tu as +clipboard), etc.

Je le trouve beaucoup plus agréable que moins.

Le seul revers mineur que j'ai trouvé (qui existe toujours si vous utilisez moins comme téléavertisseur) est si vous voulez avoir plusieurs manuels ouverts en une seule session vim. Je ne vois pas vraiment de moyen de le faire.

Quelques notes:

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

    • J'aime que vous ne puissiez pas enregistrer car cela empêche de l'enregistrer accidentellement
  2. vous pouvez toujours enregistrer comme :w /tmp/man.man

    • si vous l'enregistrez avec un .man extension, puis l'ouvrir ouvrira le type de fichier à man pour vous
    • si vous ne l'enregistrez pas avec un .man extension, vous pouvez simplement définir le ft sur man en exécutant :set ft=man
  3. si vous devez faire des choses lors de l'ouverture des pages de manuel, vous pouvez utiliser autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!', par exemple.

  4. J'ai mis ce qui suit dans mon vimrc pour pouvoir appuyer sur K pour essayer d'ouvrir le manuel, puis appuyez sur G pour 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

pirater 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..

multiple manuals in vim

Asciinema ..

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

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

Remarques:

  1. [~ # ~] important [~ # ~] si vous voulez hack2 pour fonctionner, vous devez mettre :let no_man_maps = 1 dans ton ~/.vimrc. En effet, vim va source .../vim80/man.vim et q seront remappés de force vers :q.

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

  3. vous pouvez désormais afficher plusieurs pages de manuel en une seule session, comme indiqué ci-dessus

  4. si vous appuyez sur K, vous ouvrirez toujours une nouvelle session vim, cependant

    • si vous le souhaitez, 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>" ou quelque chose de fou comme ça ( non testé )
2
Dylan

J'ai pu utiliser le --html argument à man afin de l'ouvrir dans le navigateur défini par la variable d'environnement $ BROWSER, donc:

BROWSER=google-chrome man ps --help

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

1
tutuDajuju