Trucos y consejos para encontrar información en páginas man [cerrado]


80

¿Alguien tiene algún truco y consejo para encontrar información en las páginas de manual?


1
man --help/ man -hy su hermano más completo man mantiene consejos de búsqueda y navegación.
Anton Tarasenko

Respuestas:


51

Presta atención al número de sección: supongamos que quieres ayuda printf. hay al menos dos de ellos: en shell y en C. La versión bash de printf está en la sección 1, la versión C está en la sección 3 o 3C. Si no sabe cuál desea, escriba man -a printfy se mostrarán todas las páginas del manual.

Si lo que está buscando es el formato de printf con todos los códigos% y no aparece en la página de manual de printf, puede saltar a las páginas de manual relacionadas que figuran en el párrafo VER TAMBIÉN. Puede encontrar algo como formats(5), lo que sugiere que escriba man 5 formats.

Si está molesto porque eso man printfle da printf (1) y todo lo que quiere es printf (3), debe cambiar el orden de los directorios escaneados en la MANPATHvariable de entorno y colocar los del lenguaje C antes que los de los comandos de shell. Esto puede suceder también cuando las páginas de manual de Fortran o TCL / Tk se enumeran antes de las de C.

Si no sabe por dónde empezar, escriba man introo man -s <section> intro. Esto le da un resumen de los comandos de la sección solicitada.

Las secciones están bien definidas:

  • 1 es para comandos de shell,
  • 2 es para llamadas al sistema,
  • 3 es para interfaces de programación (a veces 3C para C, 3F para Fortran ...)
  • 5 es para formatos de archivo y otras reglas, como los formatos printf o regex.

Por último, pero no menos importante: la información entregada en las páginas de manual no es redundante, por lo tanto, lea detenidamente de principio a fin para aumentar sus posibilidades de encontrar lo que necesita.


11
En la mayoría de los sistemas, puede consultar man manpara ver una descripción completa de las diferentes secciones.
Steven D

1
Sería genial si hubiera un programa para buscar páginas por "palabras clave". Es decir, recientemente no podía recordar el nombre de la función c para encontrar una subcadena (the strstr()) , y no tenía Internet a mi alrededor.
Hola Angel

3
@ Hola-Angel man -k substringo apropos substringte hubiera ayudado.
Kusalananda

58

Escriba barra diagonal /y luego escriba la cadena para buscar. Luego sigue presionando npara llegar al siguiente elemento


37

man -k search

Esto le dará una lista de todas las páginas man relacionadas con 'buscar'.


2
Y enumerar todas las páginas de manual que se refieren a 'buscar' en la sección específica (número 3, por ejemplo) se podría utilizar este: man -k search -s 3 También se mencionan en superuser.com/a/677969/599957
Kenichi

Sé que comentarios como este están mal vistos, pero gracias, gracias, ¡gracias! Literalmente he estado buscando un comando como este por más tiempo del que me gustaría admitir ... ¡años!
MikeyE

19

Como @Steven D dice, no olvides las infopáginas.

Además, no te dejes intimidar por las infopáginas. Conozco a muchas personas que no usan las páginas de información debido al sistema de navegación incorporado. Mi solución favorita es canalizar las páginas de información a través de less:

info gpg |less

De esta manera, puedo navegar por las infopáginas con mi buscapersonas favorito. Las infopáginas ahora se comportarán igual que las manpáginas.


1
hey, ese es un gran consejo sobre la navegación
glenn jackman

18

La aproposutilidad es muy útil para encontrar la página de manual adecuada.


1
man -k== apropos, ¿no es así?
phunehehe

1
aproposes lo que uso todo el tiempo cuando busco algo que no tiene página de manual para sí mismo.
polemon

1
'man man' dice que 'man -k' es equivalente a 'apropos -r'. Creo que a propósito es un poco más poderoso. Generalmente uso 'man -k' ya que es un poco más corto.
Kristof Provost

16

El buscapersonas predeterminado para leer una página de manual es less. Hay documentación less aquí .

En particular:

  • Desplácese hacia arriba / abajo por una página: b/ space
  • Desplácese hacia arriba / hacia abajo media página: u/ d
  • Buscando hacia adelante / hacia atrás: // ?, luego escriba una expresión regular,
    • luego presione n para ir al siguiente partido o
    • shift+ Npara ir al partido anterior.
    • Si la página está cubierta de coincidencias poco interesantes, presione spacepara ir a la página siguiente.
  • Agregue un @antes de la expresión regular para buscar desde el principio.

Esta es la mejor respuesta. Puntos extra por usar símbolos kbd. ;)
Chiramisu

Desplácese hacia arriba / abajo por una página también se puede hacer con ctrl+space/ f, lo que puede ser útil según los dedos que prefiera usar para la navegación.
joelostblom

8

Siempre revisa lo que hay en la sección VER TAMBIÉN. Los comandos que se muestran en esta sección en la infopágina se pueden seleccionar colocando el cursor en el comando deseado y luego presionando la tecla Intro. Con frecuencia encuentro otros comandos o funciones útiles de esa manera.


7

Si está más cómodo con su editor que con el buscapersonas predeterminado, puede configurarlo MANPAGERen su entorno. Por ejemplo, tengo esta línea en mi ~/.bashrc:

export MANPAGER="col -b | vim -c 'set ft=man nomod nolist ignorecase' -"

4

Supongo que usar la mayoría de los buscapersonas es una buena idea. Este localizador es muy poderoso, pero la característica principal para mí es mostrar páginas de manual en color. Esta característica mejora la percepción del texto plano y facilita la búsqueda de la información necesaria.

Mira la captura de pantalla adjunta, el texto se ve muy bien, ¿no?

buscapersonas


2
Has omitido la información más importante: cómo uso mostpara ver páginas de manual.
user1968963

2
@ACK_stoverflow: probablemente no sea una buena idea recomendar al tipo que haga, > ~/.bashrcya que sobrescribirá lo que ya está allí. Es mejor agregar ( >>) o agregar la lima manualmente en mi opinión.
vatsug

@vatsug Wow buena llamada, esto es lo que mi comentario debería haber dicho: Instalar y probarlo: aptitude install most; export MANPAGER="most"; man man. Para hacerlo permanente:echo 'export MANPAGER="most"' >> ~/.bashrc
ACK_stoverflow

4

En Linux man, puede hacer man -K string(tenga en cuenta la K mayúscula) para hacer una búsqueda de fuerza bruta de un término determinado

   -K, --global-apropos
          Search for text in all manual  pages.   This  is  a  brute-force
          search,  and is likely to take some time; if you can, you should
          specify a section to reduce the number of pages that need to  be
          searched.   Search terms may be simple strings (the default), or
          regular expressions if the --regex option is used.

muy útil cuando no sabes dónde buscar.


3

No ignores las infopáginas. Muchas herramientas de GNU tienen páginas de información mucho más extensas que las páginas de manual. A menudo, la sección VER TAMBIÉN dirá "La documentación completa para foo se mantiene como un manual de Texinfo". Esto es especialmente cierto para cualquier cosa en el paquete GNU coreutils.

Además, si es un usuario de emacs, no olvide que puede leer información y páginas de manual sin salir de su editor: M-x infoy M-x woman.


3

Para esas páginas de manual más largas y complejas, me resulta mucho más fácil leerlas lejos de una computadora (extraño, lo sé), por lo que tengo estas funciones en mi .bashrc

# Print man pages 
manp() { man -t "$@" | lpr -pPrinter; }

# Create pdf of man page - requires ghostscript and mimeinfo
manpdf() { man -t "$@" | ps2pdf - /tmp/manpdf_$1.pdf && \
    xdg-open /tmp/manpdf_$1.pdf ;}

2

De la respuesta de Kristof, si escribe (es decir) man -k chmodobtendrá una lista de posibilidades. Tenga en cuenta el número entre paréntesis, significa la sección que debe buscar en las páginas del manual:

En UNIX puedes probar:

man -s1 chmod mostrará la página del comando man chmod

man -s2 chmod mostrará la página del manual para la función C lib chmod ()

En Linux debes cambiar -spor-S


man 1 chmod man 2 chmod hace lo mismo.
Vista elíptica

2

Ver páginas de manual en una aplicación gráfica fácil de usar:

konqueror man:(command)

Para la tabla de contenido de nivel superior:

konqueror man:

caracteristicas:

  • Si ingresa un comando que tiene una coincidencia en varias secciones, lo llevará a una página de desambiguación
  • Es una aplicación gráfica, por lo que no tiene que recordar secuencias de teclas crípticas para navegar por la página.
  • Incluye hipervínculos a páginas relacionadas (incluidas las páginas "ver también")
  • Puede abrir páginas relacionadas en pestañas separadas

Por cierto, esto también funciona con info:(command). Algunos programas proporcionan mucha más información a través de "información" que a través de "man", y konqueror proporciona una interfaz mucho más agradable para navegar por estas páginas de información. Nota: Solo usar info:, también funciona para obtener una tabla de contenido de nivel superior.
nobar

Se puede lograr un efecto similar usando el gmanpaquete que establece un servidor web de página de manual en localhost / cgi-bin / man / man2html .
nobar

Alternativas en AskUbuntu: askubuntu.com/questions/253705/…
nobar

... yelpes un reemplazo directo más liviano para konqueror, aunque tiene la deficiencia de no presentar una tabla de contenido o una página de desambiguación para los nombres utilizados en varias secciones. Debe diferenciarlos explícitamente agregando .(section), por ejemplo yelp man:open.2. También puede usar <kbd> Ctrl-L </kbd> para abrir la barra de ubicación.
nobar

2

Dayum, gente! ¿Qué pasa con las respuestas complicadas? ¿Qué pasó con la simplicidad como la clave de la brillantez y qué no? La mayoría de sus teclas vi / vim funcionarán perfectamente:

/o ?- Buscar hacia adelante o hacia atrás (como algunos de los chicos ya han mencionado). En el caso de la primera, una n minúscula se desplazará a través de las coincidencias hacia adelante, una N mayúscula irá hacia atrás. Lo contrario es cierto para el último: el signo de interrogación.

Búsquedas un poco más complejas a través de expresiones regulares. La diferencia entre man(o less) y VIM es que tiene que usar el carácter escape () para declarar metacaracteres en su expresión cuando usa este último. La buena noticia es que cuando usa el primero ( mano less), no tanto. Lo que puede poner fácilmente esto para usar en la búsqueda, por ejemplo, una iptablespágina del manual de múltiples términos, así: /(iptables|rules). Si no está familiarizado con las expresiones regulares, esto significa "Buscar instancias de palabras iptablesOrules". Después de ingresar esto y seguir presionando n, se desplazará a través de los resultados alternativos de la búsqueda con los resultados muy bien resaltados para usted con diferentes colores (dos, en realidad. Jaja). Si está intentando hojear la página y desea concentrarse en términos o conceptos específicos: ¡no se perderá nada!

Y, por supuesto, para una navegación más rápida, sus vireservas regulares siguen en pie (sin juego de palabras): ggo G- principio / final del documento; (¡Corrección! En manpuedes usar todas las teclas mencionadas a continuación sin usar Ctrl. Eso es visolo). Ctrl + u or d- Desplazarse hacia arriba o hacia abajo; Ctrl + b or f- Lo mismo, solo en saltos más grandes. "Página hacia atrás o hacia adelante"; eo y- desplácese por una sola línea, pero creo que la mayoría de las personas preferirían simplemente usar las teclas de flecha. Sin embargo, si quieres quedarte "1337" y "nunca dejar la fila de casa" (como yo hago jajaja), ese es el camino a seguir.

Lo que estoy tratando de decir es que UNIX tiene dos tipos principales de controles de programa de teclado, que son ambas partes de la readlinebiblioteca: vi y emacs. Mejora tus habilidades en cualquiera de los dos (pero, preferiblemente, en ambos) y hará tu vida mucho menos complicada. La mayoría de los programas CLI en UNIX emplean cualquiera de ellos. BASHusa los controles de emacs de manera predeterminada, pero se puede configurar fácilmente en "modo vi" escribiendo set -o vi. Lo mismo puede decirse de las expresiones regulares, pero eso estará fuera de tema. Incluso iría tan lejos como para decir que ambos son la "lingua franca" de UNIX.


2

Similar pero ligeramente diferente de la respuesta de Rob Hoelz,

Agregue lo siguiente en su ~/.vimrc:

let $GROFF_NO_SGR=1
runtime ftplugin/man.vim

Ahora vimmanes un excelente visor de páginas de manual, y :Mandesde Vim (o simplemente presionando Kuna palabra clave) es un excelente navegador de páginas de manual.


1

La mayoría de nosotros establecemos la variable PATH. Esto le mostrará cómo hacer que la ruta de búsqueda del hombre coincida automáticamente con su ruta de búsqueda de comandos.

Supongamos que agrega su ruta para incluir sus utilidades personales, específicas del trabajo e instaladas localmente, como export PATH=$PATH:~/bin:/workgroup/bin:/opt/local/bin:. Como efecto secundario, man foono mostrará las páginas de manual almacenadas en ~ / man, / workgroup / man o / opt / local / man.

Para resolver esto, uso el manpathcomando para configurar automáticamente la ruta de búsqueda de la página del manual. Por ejemplo, mi ~ / .bashrc tiene lo siguiente. Esto funciona para mí en cientos de sistemas diferentes que ejecutan todo, desde FreeBSD 4.x, Darwin y CentOS 5:

### PATH & MANPATH
# My personal utilities
export PATH=$PATH:$HOME/bin

### Set the manpath based on the PATH, after man(1) parses man.conf
# - No need to modify man.conf or manually modify MANPATH_MAP
# - Works on Linux, FreeBSD & Darwin, unlike /etc/manpaths.d/
# See "SEARCH PATH FOR MANUAL PAGES" in man(1)
# Just set the man search path. Don't print output to screeen.
manpath >/dev/null

Algunos sistemas (como Apple Leopard) configuran MANPATH automáticamente, pero eso significa que su sistema usará la variable MANPATH en lugar de usar manpath. Como resultado, las páginas de manual para 'MacPorts' (/ opt / local / man) se ignoran. Quiero controlar esto yo mismo, así que desarme MANPATH:

unset MANPATH
manpath >/dev/null

1

Si está buscando información sobre una bashorden interna (como time, disown, set, o [[), en lugar de penosamente a través de la detallada bashpáginas de información o man bash, se puede introducir help {builtin-keyword}y obtener información básica de sintaxis rápidamente.


1

Si está molesto porque man printf le da printf (1) y todo lo que quiere es printf (3), puede decirle a man que desea que printf de la sección 3 ponga la sección antes de printf, así: man 3 printfsin tener que cambiar el orden de directorios escaneados en la variable de entorno MANPATH y coloque los del lenguaje C antes que los de los comandos de shell.


1

Yo solo uso grep. Si me preguntara qué hizo la -sopción del readcomando, probaría estos comandos en orden hasta que obtuviera una respuesta:

info read |grep \\-s

man read |grep \\-s

help read |grep \\-s

En este caso, solo el infocomando proporcionó una respuesta clara. Esta excelente respuesta brinda detalles sobre los diferentes sistemas de ayuda.


1

man -a printfsolo está predeterminado man 1en mi máquina Linux Mint. whatis printfme da la información pertinente


1

Para buscar eficientemente el cambio de un solo carácter, por ejemplo -u, a menudo puede usar:

/^ *-u($|\s)

Ahorra mucho tiempo si muchas opciones tienen '-u' como prefijo.


Además, esta expresión regular sería útil: /-u($|[,\s]) en caso de que el carácter de opción esté enmarcado con una coma. Pero si quieres ver todas las entradas de la opción de carácter 'u' (como -u]en la [--udp|-u]del netstatmanual) que necesita algo como esto: /-u($|[^a-z]) Y si vi, o vimse utiliza como buscapersonas: /-u\($\|[^a-z]\)
Kenichi

0

El comando apropos (1) se utiliza para buscar páginas de manual. Sin embargo, la mayoría de las implementaciones de apropos (1) solo buscan en la sección NOMBRE, lo cual es muy limitante.

NetBSD tiene una implementación de búsqueda de texto completo de apropos (1), que es capaz de buscar el contenido completo de las páginas man. También hay una interfaz basada en la web para ello: man-k.org , que puede probar.


0

ingrese la descripción de la imagen aquíSi le resulta difícil leer las páginas de manual debido a todo el texto de color blanco, puede colorearlas. La mayoría de las páginas man abren con less. Para less, uso la siguiente configuración de color .bashrcdesde aquí :

man() {
    LESS_TERMCAP_md=$'\e[01;31m' \red
    LESS_TERMCAP_me=$'\e[0m' \
    LESS_TERMCAP_se=$'\e[0m' \
    LESS_TERMCAP_so=$'\e[01;44;33m' \yellow on blue
    LESS_TERMCAP_ue=$'\e[0m' \
    LESS_TERMCAP_us=$'\e[01;32m' \green
    command man "$@"
}

Esto es para bash y zsh. Para most, fish, xtermy rxvtver el enlace anterior.

Para más lectura:


0

Y para aquellas personas a las que les gusta leer páginas man e información en una pantalla táctil, puede canalizar man / info a yad o zenity y hacer uso de todas las ventajas de gtk3 como el desplazamiento con el dedo nativo. También funciona muy bien con la pantalla y el mouse refulares:

man cat |yad --text-info 

También puede usar zenity o puede agregar opciones yad como:

man cat |yad --text-info --height=500 --width=800 --center --wrap --show-uri --no-markup &

Consejo: al mostrar uri, puede hacer clic en los enlaces web dentro de las páginas man con el mouse / dedo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.