¿Por qué los títulos de las secciones de las páginas del manual no son completamente codiciables?

13

Esto se probó en El Capitán y en High Sierra de un colega, en la Terminal estándar (bash).

user@hostname ~ $ man ls | grep "BU"
BUGS
user@hostname ~ $ man ls | grep "BUG"
user@hostname ~ $ 
user@hostname ~ $ man ls | grep "IEEE"
     files in order to be compatible with the IEEE Std 1003.2 (''POSIX.2'')
     The ls utility conforms to IEEE Std 1003.1-2001 (''POSIX.1'').

Para aclarar: "FALLOS" es un título de sección en esa (y varias otras) páginas de manual. Para títulos de sección, grepping solo parece funcionar para los primeros 2 caracteres; Esto es consistente en algunos títulos de secciones diferentes que probamos. Para el resto del contenido, grep parece funcionar como se esperaba.

Me puse en una caja de Linux sin sabor BSD (Amazon Linux) y no parece mostrar el mismo comportamiento.

¿Qué está pasando aquí?

    
pregunta Jonathan Merklin 25.06.2018 - 22:39

1 respuesta

15

Puede ver lo que sucede si ve los códigos en bruto dentro de una página de manual. Una forma de hacerlo es exportar la página de manual a un archivo e inspeccionar su contenido directamente:

man ls > man.ls
nano man.ls

La palabra "FALLOS" se ve así en el archivo:

B^HBU^HUG^HGS^HS

Verás que los encabezados contienen caracteres de formato, por lo que no aparece la palabra "BUGS".

Si desea acceder a los contenidos de texto sin formato de la página del manual, puede usar el comando

man -P cat <thepage>

La opción -P establece el buscapersonas en otro unix y cat ignorará la información de formato, dando una salida de texto sin formato. Sin embargo, esto no parece funcionar en macOS, por lo que la salida necesita un paso manual col -b en la tubería:

man ls | col -b | grep BUGS
    
respondido por el Scot 25.06.2018 - 22:58

Lea otras preguntas en las etiquetas