Finalmente me harto cuando se quiere leer acerca de fiesta 's ready de -sopción con man bash. Finalmente encontré el lugar correcto (alrededor de la línea 4500), pero fue frustrante como siempre, ya que ambas /reade incluso las /\s-s\sbúsquedas tienen demasiadas coincidencias.
Entonces, la pregunta es: ¿Cómo puedo leer páginas man largas de manera eficiente u obtener la misma información de otras maneras, localmente ? Como ejemplo específico, ¿cómo llegar a la documentación relevante después de ver read -s pwden un script de shell? Una buena respuesta podría ser un fragmento de script de shell, o una pista sobre alguna herramienta y cómo se usa, o algo completamente diferente, siempre que ayude a encontrar el lugar correcto para leer.
Nota: No estoy etiquetando con bash porque quiero que la pregunta sea sobre la lectura de páginas de manual en general, aunque posiblemente esa sea la página de manual enorme más común.

manpágina larga , uso un pequeño script que dejo en mi panel superior. yuugian.com/demo/gkman.txt Compartir y disfrutarbashsí mismo: al igual que usted, también necesito principalmente laSHELL BUILTINSparte del manual, que se encuentra en la línea 3500 . Entonces, sabiendo esto, la próxima vez solo diríaman bashy luego bajaría un 66 por ciento, escribiendo66%, luego unas pocas veces PgDn y estoy allí. Aunque elegí 66 porque se puede memorizar como "Ruta 66" , en realidad es un poco más que eso, aunque no es tan fácil de memorizar a menos que sea el comienzo de su número de teléfono, etc. :) Al menos la "Ruta 66 "es universal y conocido en todo el mundo.Respuestas:
Para obtener ayuda rápidamente sobre un Bash incorporado, use
help:es lo que quieres
Para el formato de página de manual, use
o mejor,
Si todavía insiste en buscarlo en la página de manual, encuentro que lo que rápidamente me lleva a la explicación de un comando es
Esto funciona porque cuando un comando se explica por primera vez, su nombre se sangra ligeramente desde el comienzo de la línea. En el caso particular de
read, esto requiere un poco de exploración antes de llegar a lareaddocumentación real porque (por razones obvias) la palabra "leer" se repite mucho en toda la página del manual. [[] Significa hacer coincidir un [que generalmente precede a los parámetros opcionales. (Normalmente dejo de lado / ^ \ s * y simplemente hago / <comando incorporado> [[])Otra alternativa
Si no le importa el cambio de formato, puede convertir su página de manual a un archivo DVI o PDF:
o
Por supuesto, dado un documento DVI o PDF, puede hacer una búsqueda de texto fácilmente.
fuente
helpes genial, me pregunto cómo nunca he oído hablar de él ...ps2pdfno es tan útil ya que aparentemente no puede crear índices de ningún tipo.Enfoque 1
man bashentonces/read \[entonces/-sEnfoque 2
Puede probar una herramienta de código abierto para explicar los argumentos de la línea de comandos llamada explicahell .
Se puede usar localmente. Lea la documentación en https://github.com/idank/explainshell
Advertencias: generalmente funciona, pero solo con los comandos que se encuentran en el repositorio de la página de manual de Ubuntu
En su caso, no puede reconocer el
-scambioread -s pwd.Enfoque 3
He encontrado otra herramienta que parece prometedora pero que no funciona en mi sistema.
explicar: Documentación breve para los comandos de Unix
fuente
/-s\bpara evitar golpes como--some-other-command(sin dejar de encontrar cadenas como-s,, que no obtendría si buscara/-scon un espacio).Lo que generalmente hago en este caso es simplemente ejecutar
man, buscar elSHELL BUILTIN COMMANDSencabezado, luego buscar el incorporado, es decirsin embargo, en bash puedes hacer
o, dependiendo del sistema, cualquiera de
En general, tengo un script llamado
he("ayuda breve") para hacer esto. Lo ejecutarías así:fuente
descahe. github.com/mikelward/scripts/blob/master/heNo hay una forma genérica de encontrar información en una página de manual, como tampoco existe una forma genérica de encontrar información en un libro. Depende de lo que estés buscando.
Cuando está buscando información sobre un shell incorporado, puede buscarlo al comienzo de una línea, guardar la sangría, y seguido de un espacio: buscar
^ *read␣(por ejemplo, tipo/^ *read␣Enter) (␣es un espacio). Esto funciona con dash, pdksh, mksh y bash. La página de manual de Zsh está dividida, por lo que debe leer lazshbuiltinspágina de manual. Ksh93 tiene símbolos especiales antes de los nombres de algunas incorporaciones, debe buscar^ *†*␣en UTF-8 o^ *-*␣en ASCII. Hay un par de falsos positivos, pero esto lo llevará rápidamente a la línea correcta. La búsqueda^ *read($| [-[])reduce la cantidad de falsos positivos.Puede acelerar la búsqueda diciéndole a su localizador a dónde desea ir. Por ejemplo,
PAGER='less "+/^ *read \["' man bashabre la página de manual de bash en la descripción delreadbuiltin incorporado. Puedes hacer de esto una función:fuente
mkshmanual,/ read(dos espacios, nombre de comando, un espacio) generalmente encuentra el lugar correcto (este es un truco que uso yo mismo y es rápido de escribir). Gracias por preguntar al respecto; Pondré hacer referencias (algo) separadas para todas las utilidades incluidas con mksh en mi TODO./ readtiende a tener muchos falsos positivos cuando su implementación de hombre justifica el texto.Para saltar directamente a la sección SHELL BUILTINS COMMANDS de la página de manual de bash, defino el siguiente alias en mi
$HOME/.bash_aliasesarchivo.fuente
Solo para ofrecer otra alternativa, si prefiere usar un navegador web que le permita buscar fácilmente en la página actual, puede usar algo como man.cgi usado en freeBSD.org, que también le permite ver páginas man de diferentes sistemas para ver cómo difieren. He visto similares en otros sitios, así que espero que haya otras variaciones.
El enlace de ayuda debajo de apropos ofrece información para obtener una copia del script para poner en su propio servidor con enlaces para descargar las colecciones de páginas de manual.
fuente
Llegué a crear una función bash para este propósito. Este fragmento se puede pegar, por ejemplo, al final de
~/.bashrc:Los comentarios explican un poco sobre lo que hace. La cadena de búsqueda predeterminada en particular busca palabra dada desde el principio de las líneas, omitiendo el espacio inicial. Ejemplos:
Nota: Esta secuencia de comandos no tiene el concepto de secciones de la página de manual ... Veré si la modifico más tarde, pero establecer
MANSECTla variable de entorno de man ayuda.fuente
trap 'rm -f "$tmp"'man "$1" | vim -R - "+/$2"haría algo similar?$2, así que no.trap. Sin embargo, no encontré una forma limpia de hacerlo en una función sin crear una subshell.+/REGEXAl reunir las piezas de la otra discusión aquí, aquí hay una función rápida que puede dejar en su cuenta
.bashrcque lo llevará directamente a la función incorporada (si existe). De lo contrario, se abremannormalmente:fuente
Desde cualquier distribución de Linux, debería poder usarla
info bashsi desea tener párrafos separados por tipo de acción donde la información es idéntica a las páginas de manual.fuente