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?
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?
Réponses:
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 man
programme 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)
où man
est le nom de la page de manuel et 1
le numéro de section :
Vous pouvez parcourir les pages de manuel de plusieurs systèmes d'exploitation, converties en HTML par man2html
des 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.
M-x man
(et C-h v mode-name
reste Man
): au moins dans un aspect, il est supérieur à celui WoMan
car il affiche des tableaux ( capture d’écran ). Bien sûr, il existe également un lien hypertexte.
b
, de cette façon. Pour un utilisateur de quel paradigme d'interface, cela pourrait être intuitif?
page(N)
liens en liens hypertextes. Était assez surpris que ce ne soit pas mentionné dans la réponse de Gilles dans cette qualité.
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 man
commande normale est juste un formateur de texte. En fait, la man
commande n’affiche même pas le texte, elle 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.
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 man
fichier de page dans un éditeur de texte, vous verrez la man
page brute qui n'est pas formatée pour en faciliter la lecture. La man
page brute est écrite dans un langage de balisage appelé troff
. Pour plus d'informations sur troff
et comment écrire une man
page, voir: https://liw.fi/manpages/ .
man 1 top
?? Je veux dire que cela devrait ressembler à quelque chose ps 1 top
parce 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.
top(1)
"lien", vous devez ouvrir top
la page de manuel à partir de la 1ère section. Pour plus d'informations sur les sections, voir man (1). ps 1 top
n'a aucun sens, puisque vous exécuterez juste une ps
commande avec des paramètres étranges.
readlink
figure à présent dans les sections 1 et 2, et printf
dans 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' readlink
appel système
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.
w3mman
est également fourni avec l' w3m
installation par défaut de Macports . C'est génial :) Merci!
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 man
page 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 less
pour 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 q
plusieurs fois. Notez également que cela ne fonctionnera pas si LESSSECURE=1
est définie en tant que variable d'environnement qui ferait fonctionner less
en mode sécurisé et ne vous permettrait pas de l'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 (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
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 man
commande; 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
Comme ils l'ont dit, ce n'était pas conçu pour ça.
Vous pouvez utiliser info man
puis appuyer sur Entrée une fois que vous êtes sous VOIR AUSSI section sur votre élément.
info - lire les documents d'information
J'ai un (deux) hack (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, cela ouvrira cette page de manuel dans vim
man man vim
, par exemple, il ouvrira d'abord man
le manuel et, après avoir quitté vim, il ouvrira vim
le manuel.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 :q
et vous ne pourrez pas enregistrer une macro facilement, et vim peut se comporter de manière maladroite d’une autre manière).
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
.
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:
si vous essayez de sauver le tampon, vous obtiendrez E382: Cannot write, 'buftype' option is set
vous pouvez toujours enregistrer comme :w /tmp/man.man
.man
extension, son ouverture définira 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 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.
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
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 le piratage 1 et moins visage (maintenant vous pouvez afficher plusieurs manuels dans un tampon), mais il est moins élégant.
Remarques:
IMPORTANT si vous voulez que hack2 fonctionne, vous devez mettre :let no_man_maps = 1
votre ~/.vimrc
. Ceci est dû au fait que vim sera source .../vim80/man.vim
et q
qu’il sera forcément redirigé vers :q
.
il y a plus de nettoyage impliqué (maintenant vous stockez chaque manuel dans /tmp/*.man )
vous pouvez maintenant, cependant, afficher plusieurs pages de manuel au cours d'une session, comme indiqué ci-dessus
si vous appuyez sur K, vous ouvrirez quand même 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>"
ça ou quelque chose de fou comme ça ( non testé )J'ai pu utiliser l' --html
argument to man
pour 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.
groff
doit être installé. La groff
commande peut être là alors que le package du même nom ne l’est pas (la commande est fournie groff-base
, pas le groff
package complet ). Oui man --html="surf file%c//%s" <command>
, et c'est bien. Il existe cependant un hypertexte très très limité: - /.
man is an interface to the on-line reference manuals
qui (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?