Finalmente me harto cuando se quiere leer acerca de fiesta 's read
y de -s
opción con man bash
. Finalmente encontré el lugar correcto (alrededor de la línea 4500), pero fue frustrante como siempre, ya que ambas /read
e incluso las /\s-s\s
bú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 pwd
en 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.
man
página larga , uso un pequeño script que dejo en mi panel superior. yuugian.com/demo/gkman.txt Compartir y disfrutarbash
sí mismo: al igual que usted, también necesito principalmente laSHELL BUILTINS
parte del manual, que se encuentra en la línea 3500 . Entonces, sabiendo esto, la próxima vez solo diríaman bash
y 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 laread
documentació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
help
es genial, me pregunto cómo nunca he oído hablar de él ...ps2pdf
no es tan útil ya que aparentemente no puede crear índices de ningún tipo.Enfoque 1
man bash
entonces/read \[
entonces/-s
Enfoque 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
-s
cambioread -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\b
para evitar golpes como--some-other-command
(sin dejar de encontrar cadenas como-s,
, que no obtendría si buscara/-s
con un espacio).Lo que generalmente hago en este caso es simplemente ejecutar
man
, buscar elSHELL BUILTIN COMMANDS
encabezado, 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
desc
ahe
. 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 lazshbuiltins
pá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 bash
abre la página de manual de bash en la descripción delread
builtin incorporado. Puedes hacer de esto una función:fuente
mksh
manual,/ 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./ read
tiende 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_aliases
archivo.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
MANSECT
la 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.+/REGEX
Al reunir las piezas de la otra discusión aquí, aquí hay una función rápida que puede dejar en su cuenta
.bashrc
que lo llevará directamente a la función incorporada (si existe). De lo contrario, se abreman
normalmente:fuente
Desde cualquier distribución de Linux, debería poder usarla
info bash
si desea tener párrafos separados por tipo de acción donde la información es idéntica a las páginas de manual.fuente