¿Cómo puedo usar al hombre sin menos?


21

Por defecto, se manusa lesspara generar texto. ¿Cómo puedo decirle que solo salga a stdout? Mi emulador de terminal tiene una barra de desplazamiento y una función de búsqueda y quiero usarlas en lugar de las teclas de flecha.

Respuestas:


31

En realidad se utiliza lo que se especifica en el MANPAGERo la PAGERvariable de entorno.

Dependiendo de su manimplementación y versión, también podría haber un interruptor de línea de comando para especificar el localizador.

Con la implementación de man-db utilizo todas las formas siguientes de trabajo:

MANPAGER=cat man man

PAGER=cat man man

MANOPT='-P cat' man man

man -P cat man

Para configurarlo permanentemente, simplemente agréguelo a su ~/.bashrc(u otro archivo de inicialización utilizado por su shell):

export MANPAGER=cat

Eso también funciona con algunas manimplementaciones anteriores , mientras que MANOPTes específico de man-db:

export MANOPT='-P cat'

(Mejor no lo establezca de PAGEResa manera. Esa también es utilizada por muchas otras aplicaciones).

También podría haber un archivo de configuración global. man-db tiene /etc/man_db.confo /etc/manpath.config. Ahí puedes configurar:

DEFINE    pager    cat

Pero desafortunadamente eso se toma en consideración solo si MANPAGERni PAGERse establece.


2
Buena respuesta. Re: ~/.bashrc, También podría envolver la exportación en un condicional por lo que sólo establece el localizador si es el terminal apropiado / emulador: if [ "x$TERM" = "xxterm" ]; then export MANPAGER=cat; fi; obviamente reemplazar xtermcon el emulador apropiado.
Kevin

1
En realidad, es bueno y, por diseño, manpath.config se tiene en cuenta más adelante. Tanto PAGER como MANPAGER son de nivel de usuario, donde el archivo de configuración es de nivel de sistema. Si el nivel del sistema tuviera prioridad, los usuarios no podrían anular en absoluto.
Paul de Vrieze

@PauldeVrieze, tienes razón MANPAGER. Usé la palabra "desafortunadamente" por el hecho de que el comportamiento también se aplica PAGER, que es una configuración genérica (utilizada por muchas herramientas) y preferiría que no anule una configuración específica (utilizada por una sola herramienta), incluso si eso uno es el nivel del sistema.
manatwork

Si desea anular una configuración específica para una sola herramienta, siempre puede hacerlo creando un alias, una función de shell o un script de contenedor. Cualquiera de esos equivaldría a: PAGER=cat manpor ejemplo:alias man='PAGER=cat MANPAGER=cat man'
Paul de Vrieze, el

6

Simplemente canalizar la salida de mana cat?

man ls | cat   # useful use of cat

66
Tenga en cuenta que, según la manimplementación, que 1) genera un error, 2) muestra códigos de formato de troff en el terminal, 3) elimina todo el formato, 4) funciona como se esperaba.
manatwork

2
Nunca lo he visto hacer más que 4.
Keith Thompson

@KeithThompson macOS manparece usar el localizador establecido MANPAGERincluso cuando la salida es un archivo o una tubería. Y si el buscapersonas es less, entonces todo está bien porque se lesscomporta como catcuando la salida es una tubería ... Pero si usa algo más (como Vim, que yo uso), entonces no es tan bueno.
muru

1

Pruebe estos comandos para generar salida man sin un buscapersonas.

  • man ls | cat (ancho fijo generado)

  • man -P cat ls (ancho variable generado)

Estaba en un sistema GNU Linux


1

Otro ángulo: similar a la respuesta de Tony.

También puede redirigir la salida de hombre a un archivo y verlo con su editor de texto favorito o incluso agregarle marcadores, comentarios, etc.

man bash  > bashman.txt

Tengo una copia de la página de manual de bash, así como solo las secciones sobre control de flujo de bash y marcas de prueba de bash guardadas como archivos de texto en mi directorio bin para poder cargarlas directamente en mi editor de texto (kate) para referencia mientras estoy escribir guiones bash.


Advertencia: dependiendo de su sistema y la página del manual, el comando anterior puede dar como resultado información de formato y caracteres de control en el archivo.

Para evitar esto, haga lo sugerido en LESS='+/^TIPS' man man:

To  get a  plain  text  version  of a man page, without backspaces and
underscores, try

  # man foo | col -b > foo.mantxt

1
@Wildcard - Gracias. No sabía sobre eso.
Joe
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.