¿Cómo volcar una página de manual?

46

¿Cómo puedo 'cat' una página de manual como 'cat' un archivo para obtener solo un volcado de los contenidos?

LanceBaynes
fuente

Respuestas:

41

En primer lugar, los archivos man generalmente son solo archivos de texto gziped en algún lugar de su sistema de archivos. Dado que su kilometraje variará al encontrarlos y probablemente deseaba la versión procesada y formateada que le da man en lugar de la fuente, puede volcarlos con la manherramienta. Al mirar man man, veo que puede cambiar el programa utilizado para ver páginas de manual con la -Pbandera como esta:

man -P cat command_name

Tampoco vale nada que mandetecte automáticamente cuándo canaliza su salida en lugar de verlo en la pantalla, por lo que si va a procesarlo con otra cosa, puede saltar directamente a ese paso de la siguiente manera:

man command_name | grep search_string

o volcar a un archivo:

man command_name > formatted_man_page.txt
Caleb
fuente
1
El uso de -P no hace que el archivo de salida sea perfectamente legible. Está garabateado con todos los caracteres Ctrl-H. Yo solía hacer hombre cmd>! man.cmd y abra man.cmd y haga '% s / ^ H .// g' para eliminar los molestos caracteres de control para representar negrita y cursiva. Pero esto todavía tiene algún problema cuando hay otros caracteres especiales. Todavía estoy buscando un buen método para evitar la edición manual de la salida.
Chan Kim
@ChanKim Estás haciendo algo mal o tienes alguna configuración no estándar que se interpone en tu camino porque los dos métodos aquí en realidad producen resultados limpios formateados en texto sin caracteres de control adicionales. ¿Estás seguro de que no tienes manalias a algo o banderas forzadas en tu shell que separan tu función de la normal man?
Caleb
1
@Caleb, confirmo el problema de OP. CentOS versión 6.7 (Final), / usr / bin / man gcc> j, edite 'j', todos los ctrl-H están ahí. La mejor respuesta que he encontrado está en commandlinefu.com/commands/view/2417/…
Charles Roth
1
man command_name > formatted_man_page.txtcausará alguna palabra duplicada.
Zigii Wong
52

Para obtener un archivo de página de manual ASCII, sin los molestos intentos de subrayado / subrayado de subrayado, y secuencias extrañas para hacer negrita:

man ksh | col -b > ksh.txt
Bruce Ediger
fuente
66
Te mereces más votos a favor
Labo
2
Hola, ¿por qué la salida man piped contiene caracteres duplicados? y ¿Cómo col-b elimina su? Gracias por adelantado.
saurabheights
2
@saurabheights: man intenta hacer subrayados y texto en negrita y tal vez algunas otras cosas con espacios de fondo, caracteres duplicados, secuencias de escape, etc. etc. Trucos que podrían funcionar si imprime la salida del hombre en una matriz de puntos u otra impresora, o la muestra como texto en una terminal. No he leído la fuente col, pero probablemente solo examina el byte estándar por byte y no pasa espacios atrás, etc. a stdout. La página man de col se lee como alguien la escribió específicamente para filtrar la salida man.
Bruce Ediger
1
Ok, eso tiene sentido. Tales caracteres (ocultos) pueden causar los caracteres duplicados. Gracias Bruce
saurabheights
Realmente te mereces los votos a favor del modo. ¿"Col" para la columna?
Álgebra
24

Las páginas de manual suelen ser troffarchivos preprocesados, y puede acceder al texto sin formato con,

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt

groffes un contenedor para troff.

Más información aquí .

Es posible que primero necesite usar gzip para descomprimir los archivos de la página de manual, y aún tendrá mucha información de formato en la salida.

OchoBitTony
fuente
44
+1 por hablar sobre groff / troff y el formato de las páginas man
lgeorget
11

Hago esto todo el tiempo. Esta línea de comando me hace feliz:

man man | col -bx > man.txt

col -b elimina los espacios de retroceso.

col -bx también reemplaza las pestañas con espacios, que es mi gran preferencia.

Si quiero que el texto se formatee al ancho de mi preferencia mientras leo, entonces cambio el comando a esto:

MANWIDTH=10000 man man | col -bx > man.txt
sotosoc
fuente
man man | col -bx > man.txttrabajó para mi. Gracias.
JaredH
6

Simplemente use el mancomando: puede canalizar la salida a otras cosas tal como puede hacerlo con catun archivo.

TomH
fuente
1
Me gusta la simplicidad.
Joel Sjögren
3

Si solo desea catuna página de manual, simplemente puede canalizarla a cat:

man ls | cat

Si desea volcar su contenido en un archivo:

man ls > ls_manpage_dump.txt
Sheharyar
fuente