¿Hay alguna manera de seguir los enlaces mencionados en una página de manual? Por ejemplo, aquí está la página del manual para ps
; ¿Cómo accedo al enlace marcado en rojo?
¿Hay alguna manera de seguir los enlaces mencionados en una página de manual? Por ejemplo, aquí está la página del manual para ps
; ¿Cómo accedo al enlace marcado en rojo?
Respuestas:
Las páginas de manual se remontan a Unix First Edition . Si bien se había inventado el hipertexto , todavía estaba en la infancia; la web estaba a dos décadas de distancia, y el manual era un libro impreso real, a menudo con un comando por página si encajaban (por eso se llamaban páginas).
El formato utilizado para las páginas manuales ha evolucionado un poco desde entonces, pero la mayoría de las páginas no están realmente diseñadas para hipertexto, y el man
programa predeterminado no lo admite (es solo un visor de texto sin formato, con hacks para admitir algunos formatos básicos). Sin embargo, existen programas de visualización de páginas de manual que reconstruyen algunos hipervínculos, principalmente enlaces a otras páginas de manual, que tradicionalmente se escriben en la forma man(1)
donde man
está el nombre de la página de manual y 1
el número de sección :
Puede navegar por las páginas del manual de varios sistemas operativos, convertidos a HTML por man2html
o herramientas similares, en varios sitios en línea, por ejemplo:
Algún tiempo después de que las páginas man se convirtieran en el formato de documentación establecido en Unix y algún tiempo antes de que se inventara la web, el proyecto GNU introdujo el formato de documentación de información , más avanzado que el hombre, mientras que se ajustaba al marcado simple diseñado para terminales de texto. La principal innovación de la información en comparación con el hombre fue tener documentación de varias páginas con hipervínculos a otras páginas. La información sigue siendo el formato de documentación preferido para los proyectos GNU, aunque la mayoría de las páginas de información se generan a partir de una fuente Texinfo (o, a veces, otros formatos) que también pueden generar HTML. Cuando existe documentación de información para un programa, a menudo es el manual principal, mientras que las páginas del manual solo contienen información básica sobre los argumentos de la línea de comandos.
M-x man
(y C-h v mode-name
es Man
): al menos en un aspecto, es superior a WoMan
porque muestra tablas ( captura de pantalla ). Por supuesto, también está hipervinculado.
b
, de esa manera. Para un usuario de qué paradigma de interfaz esto podría ser intuitivo?
page(N)
enlaces en los hipervínculos. Me sorprendió bastante que no se mencionara en la respuesta de Gilles en esa calidad.
En primer lugar, no es un enlace. Es solo un subrayado. Las páginas de manual son solo documentos de texto con un poco de formato simple que un terminal puede manejar. El subrayado es solo un punto destacado, no hay ningún "enlace" involucrado.
El man
comando normal es solo un formateador de texto. De hecho, el man
comando ni siquiera muestra el texto, man
simplemente formatea la información almacenada en el archivo de la página de manual [1] y envía la salida formateada a otro programa (generalmente less
) que muestra la salida formateada en la pantalla. Estos programas de visualización no tienen concepto de enlaces.
Hay algunos lectores de documentación especiales que podrían ver un formato como ese y hacer una suposición educada de que tal resaltado podría indicar que hay una página de manual relacionada que podría abrirse y crear un enlace, pero no sé cuales hacen Tal vez pinfo
?
Si desea un formato web con hipervínculos, puede encontrar casi cualquier página de manual de UNIX en línea con enlaces agregados. Intente escribir man [anything]
en google y seguramente obtendrá uno en los primeros dos aciertos.
En el caso de su ejemplo, el resaltado visual es una pista de que ese es otro nombre de programa que tiene su propia página de manual que puede extraer fácilmente. Tratar man 1 top
. El 1 indica la sección de las páginas de manual para buscar. Vea esta pregunta para obtener una explicación de las secciones: ¿Qué significan los números en una página de manual?
[1] Si abre el man
archivo de página en un editor de texto, verá la man
página sin formato que no está formateada para facilitar la lectura. La man
página sin procesar se escribe en un lenguaje de marcado llamado troff
. Para obtener más información sobre troff
y cómo escribir una man
página, consulte: https://liw.fi/manpages/ .
man 1 top
? Quiero decir que debería ser algo así ps 1 top
porque encontré el enlace en la página del manual ps
. "man 1 top" no tiene sentido para mí. Por favor aclarar
top(1)
"enlace", debe abrir top
la página del manual desde la primera sección. Para obtener más información sobre las secciones, vea man (1). ps 1 top
no tiene ningún sentido, ya que solo ejecutará ps
comandos con algunos parámetros extraños.
readlink
aparece en la sección 1 y en la sección 2 y printf
en las secciones 1 y 3. Si solo escribe man command
, man intenta secciones en orden numérico y muestra lo primero que encuentra, o puede ser específico con man # command
lo que debe hacer para obtener la documentación para la readlink
llamada del sistema.
Esta es una respuesta muy tardía, pero use w3mman. w3mman es el localizador manual del sistema de w3m.
https://linux.die.net/man/1/w3mman
Puede probarlo instalando el paquete w3m. Creo que este paquete está registrado en los repositorios de software de la mayoría de las principales distribuciones de Linux / UNIX y Cygwin.
w3mman
también se proporciona con la w3m
instalación predeterminada de Macports . Es genial :) ¡Gracias!
Permíteme intentar interpretar tu pregunta un poco más en un sentido en el que trato de seguir tu flujo de trabajo. Lo que probablemente le gustaría tener es una combinación de teclas dentro de una man
página que lo lleve directamente a los comandos subrayados sobre los que está leyendo. Entonces, no tener que instalar otra cosa, ni abrir otra consola y olvidar la sintaxis exacta, por ejemplo.
Esta solución más simple es el signo de exclamación (si está utilizando less
para mostrar las páginas de manual) y desea ir al subrayado top
:
!man top
O
!man 1 top
Deberá cerrarlos presionando q
varias veces. Tenga en cuenta también que esto no funcionará si LESSSECURE=1
se configura como una variable ambiental que haría que se ejecute less
en modo seguro y no le permita usar !
. Te dirá algo como "Comando no disponible".
Aunque w3mman es una solución para seguir enlaces, no usa toda la pantalla (al menos en ubuntu 12.10)
Prefiero usar:
$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'
agregue el último comando a ~ / .bash_aliases o un script de inicio similar para obtenerlo en cada sesión.
El -P w3m se debe a que el primer navegador para hman es lynx o sensible-browser pero prefiero w3m
hman es una herramienta incluida en html2man. Ver esto
Si salir con confirmación es molesto para usted, en cuanto a mí, use esto
Específicamente para Ubuntu, hay Yelp. Está instalado de manera predeterminada y puede mostrar páginas de manual, aunque la invocación para hacerlo no es la misma que la del man
comando; un alias o una función de shell pueden funcionar alrededor del último punto (depende de su shell).
yelp 'man:exit'
Se establecerá de forma predeterminada en una sección de una manera que no sé. Recordatorio: para obtener la lista de secciones para un tema manual, use whatis
, como en whatis exit
.
Para solicitar a Yelp que muestre una página de manual de una sección específica, digamos 2, haga:
yelp 'man:exit(2)'
Problemas: yelp tiene errores y prepárate para obtener múltiples errores al invocarlo desde la línea de comandos. También, un alias o una función de shell personalizada pueden ayudar a redirigir todos los errores a/dev/null
Como dijeron, no fue diseñado para eso.
Puede usar info man
y luego presionar enter una vez que esté en la sección VER TAMBIÉN en su artículo.
info - leer documentos de información
Tengo un (par de) hack (es).
Ponga esto en su ~ / .bashrc o su ~ / .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
}
Captura de pantalla..
Asciinema ..
https://asciinema.org/a/130131
Ahora..
cuando escribe man vim
, por ejemplo, se abrirá esta página de manual en vim
man man vim
, por ejemplo, primero abrirá man
el manual y después de salir de vim, abrirá vim
el manualcuando presiona K(eso es mayúscula k
) cuando está en otra página de manual en la parte inferior (la sección VER TAMBIÉN ), saltará a este manual (desafortunadamente dentro de un buscapersonas menos , esto es porque lo hemos hecho let no_man_maps = 1
; si no haga eso, entonces vim forzará q
a ser :q
y no podrá grabar una macro fácilmente, y vim puede comportarse de manera extraña de otras maneras).
obtienes resaltado de sintaxis muy bonito ya que has cargado ftplugin / man.vim y el ft está (automáticamente) configurado en man
.
puede copiar y pegar, navegar libremente en vim e incluso modificar el búfer y :w ~/usefulfile
. Puede hacer todo lo que normalmente haría en vim, incluidas las macros de grabación, tirar al portapapeles con "+y
(si lo tiene +clipboard
), etc., etc.
Lo encuentro mucho más agradable que menos .
El único inconveniente menor que he encontrado (que todavía existe si usa menos como buscapersonas) es si desea tener múltiples manuales abiertos en una sesión de vim. Realmente no veo una manera de hacer esto.
Algunas notas
si intenta guardar el búfer, obtendrá E382: Cannot write, 'buftype' option is set
todavía puedes guardar como :w /tmp/man.man
.man
extensión, abrirlo configurará el tipo de archivo man
para usted.man
extensión, simplemente puede configurar el ft man
ejecutando:set ft=man
si necesita hacer cosas al abrir páginas man, puede usar autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'
, por ejemplo.
He puesto lo siguiente en mi vimrc para poder presionar Kpara intentar abrir el manual, y luego presionar Gpara volver al manual anterior:
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
pon esto en tu ~ / .bashrc o ~ / .zshrc
function man(){
declare -a args
for arg in "$@"; do
command man "$arg" > "/tmp/${arg}.man"
args+=("/tmp/${arg}.man")
done
vim "${args[@]}"
}
Captura de pantalla..
Asciinema ..
https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv
Esto resuelve el problema que piratea 1 y menos cara (ahora puede ver varios manuales en un búfer), pero es menos elegante.
Notas:
IMPORTANTE si quieres que hack2 funcione, entonces debes ponerlo :let no_man_maps = 1
en tu ~/.vimrc
. Esto se debe a que vim generará .../vim80/man.vim
y q
será reasignado a la fuerza :q
.
hay más limpieza involucrada (ahora almacena todos los manuales en /tmp/*.man )
ahora, sin embargo, puede ver varias páginas de manual en una sesión, como se indicó anteriormente
si presiona K, aún abrirá una nueva sesión de vim, sin embargo
autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"
o algo loco como eso ( no probado )Pude usar el --html
argumento para man
abrirlo en el navegador definido por la variable de entorno $ BROWSER, así que:
BROWSER=google-chrome man ps --help
Estoy usando Fedora. No estoy seguro si esto funciona para su distribución, por favor pruebe e informe en los comentarios.
groff
necesita ser instalado. El groff
comando puede estar allí mientras que el paquete del mismo nombre no lo está (el comando viene groff-base
, no el groff
paquete completo ). Yo sí man --html="surf file%c//%s" <command>
, y está bien. Sin embargo, existe un hipertexto muy limitado: - /.
man is an interface to the on-line reference manuals
(si no me equivoco) significa que debería extraer toda la información de alguna página web en Internet, ¿verdad? Entonces, ¿alguien tiene idea de qué es el enlace http: //?