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?
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)
où man
est le nom de la page de manuel et 1
est le numéro de section :
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/ .
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.
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".
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
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
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
J'ai un (deux) piratage (s).
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..
Asciinema ..
https://asciinema.org/a/130131
Maintenant..
lorsque vous tapez man vim
, par exemple, il ouvrira cette page de manuel dans vim
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
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).
vous obtenez une très jolie coloration syntaxique puisque vous avez chargé ftplugin/man.vim et que ft est (automatiquement) réglé sur man
.
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:
si vous essayez d'enregistrer le tampon, vous obtiendrez E382: Cannot write, 'buftype' option is set
vous pouvez toujours enregistrer comme :w /tmp/man.man
.man
extension, puis l'ouvrir ouvrira le type de fichier à man
pour vous.man
extension, vous pouvez simplement définir le ft sur man
en exécutant :set ft=man
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.
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
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..
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:
[~ # ~] 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
.
il y a plus de nettoyage impliqué (maintenant vous stockez chaque manuel dans /tmp/*. man)
vous pouvez désormais afficher plusieurs pages de manuel en une seule session, comme indiqué ci-dessus
si vous appuyez sur K, vous ouvrirez toujours une nouvelle session vim, cependant
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é )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.