Estoy tratando de encontrar un comando para buscar un patrón que contenga guiones dentro de todas las páginas de manual.
Lo miré man man
y encontré estas 3 opciones:
-K
,--global-apropos
Busque texto en todas las páginas del manual. Esta es una búsqueda de fuerza bruta, y es probable que tome algún tiempo; si puede, debe especificar una sección para reducir la cantidad de páginas que deben buscarse. Los términos de búsqueda pueden ser cadenas simples (el valor predeterminado) o expresiones regulares si
--regex
se utiliza la opción.
-w
,--where
,--path
,--location
En realidad, no muestra las páginas del manual, pero imprime las ubicaciones de los archivos fuente nroff que se formatearían.
-S list
`-s list
`t--sections=list
La lista es una lista separada por dos puntos o comas de secciones de manual específicas de orden para buscar. Esta opción anula la
$MANSECT
variable de entorno. (La-s
ortografía es para compatibilidad con el Sistema V.)
Intenté combinarlos para buscar el patrón, mark-modified-lines
que es una opción de línea de lectura descrita en man bash
:
$ man -s1 -Kw mark-modified-lines
Pero no encuentra ninguna página:
No manual entry for mark-modified-lines
Y el comando sale con el código 16
.
Pensé que tal vez la sintaxis del comando era incorrecta, pero no lo parece, ya que este comando encuentra correctamente las 5 páginas de manual en mi sistema que contienen la palabra guitar
:
$ man -s1 -Kw guitar
/usr/share/man/man1/ffmpeg-all.1.gz
/usr/share/man/man1/ffserver-all.1.gz
/usr/share/man/man1/ffplay-all.1.gz
/usr/share/man/man1/ffmpeg-filters.1.gz
/usr/share/man/man1/ffprobe-all.1.gz
Pensé que tal vez los guiones en la palabra causaban un problema. En man bash
, encontré la --regex
opción que se describe a continuación:
--regex
Muestre todas las páginas con cualquier parte de sus nombres o sus descripciones que coincidan con cada argumento de página como una expresión regular, como con
apropos(1)
. Como generalmente no hay una forma razonable de elegir una "mejor" página al buscar una expresión regular, esta opción implica-a
.
Traté de usar esta opción y reemplazar la palabra mark-modified-lines
con la expresión regular mark.modified.lines
, donde los guiones se reemplazan con el metacarácter .
que debe coincidir con cualquier carácter:
$ man -s1 -Kw --regex 'mark.modified.lines'
Todavía no imprime ninguna página, aunque sé que el texto está escrito en la bash
página del manual.
El metacarácter .
en la expresión regular parece ser analizado como se esperaba, ya que este comando:
$ man -s1 -Kw --regex 'mark.mo'
Huellas dactilares:
/usr/share/man/man1/x11perfcomp.1.gz
/usr/share/man/man1/xditview.1.gz
Y estas 2 páginas de manual ( x11perfcomp
, xditview
) coinciden con la expresión regular mark.mo
. Más específicamente, man x11perfcomp
contiene esta línea:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
Y man xditview
contiene esta línea:
Mark Moraes (University of Toronto)
^^^^^^^
Sin embargo, man -s1 -Kw --regex 'mark.mo'
no imprime la página de manual de bash:
/usr/share/man/man1/bash.1.gz
Mientras esperaba que lo haría, ya que contiene esta línea:
mark-modified-lines (Off)
^^^^^^^
¿Es posible buscar un patrón que contenga guiones dentro de las páginas del manual?