Me encuentro haciendo <command> --help | grep <feature>muy muy a menudo todos los días. Me preguntaba si era posible hacer que algo así se ^^expanda "--help | grep"y luego hago esto:
ls ^^ size
Eso ejecutaría lo siguiente:
ls --help | grep size
bash
bash-expansion
yukashima huksay
fuente
fuente

qh () { type -all "$1" ; { "$1" --help || man "$1" ;} | egrep -i -- "$2" ;}# por lo tanto, podría: qh ls size, qh ls "algo | otro" etc. el (opcional)type -all "$1"también agregará la información sobre $ 1: dice si lanzará un alias, una función, un comando, etc. Y da información del hombre "$ 1" si el comando $ 1 no tenía la opción "--help" (esto sucede a veces)-a, pero no dice nada sobre-lo-all, pero la función funciona.Con
zsh, usarías un alias global :Con
bash, es posible que pueda usar la expansión de historial, que es una que ocurre lo suficientemente temprano en el análisis de sintaxis de shell que puede funcionar para sustituir una tubería:Imprima la historia con el texto que desea sustituir y un carácter especial que probablemente no usará de otra manera (como
£aquí que está en mi teclado):Luego, usando la expansión del historial para recuperar eso:
O podría haber
readlineexpandido--help|grepsobre alguna tecla o secuencia de teclas presionar. Para que eso se apliquebashsolo (y no a otras aplicaciones comogdbusar readline), puede usar elbindcomando bash builtin, que esbashla API de configuraciónreadline, por ejemplo en su~/.bashrc:O agregue a su
~/.inputrc(archivo de configuración de readline):(hay otros shells como
rcoesque usan readline y donde hacer ese enlace podría tener sentido, pero AFAICT, no configuran larl_readline_namevariable antes de invocar,readlinepor lo que no podrá agregar algunas$ifdeclaraciones para ellos (se mostrarían comoothertodas las aplicaciones) que usan readline sin decirle el nombre de su aplicación)).Tenga en cuenta que debe ingresar el segundo
^dentro de medio segundo (por defecto) después del primero para que ocurra la sustitución.fuente
Puede usar enlaces de línea de lectura:
agregar una línea como
a su ~ / .inputrc
Luego presione ^ X ^ R en su término, y el enlace se activará.
La incrustación
ls ^^ahora dará como resultadols --help | grep.fuente
Utilizando
lesspara ver el mensaje de ayudaPuede resultarle útil ver el contexto circundante de las líneas que coinciden con su consulta de búsqueda.
La sintaxis para llamar a esta
bashfunción es similar a la funciónqhen la respuesta de @ tgwtdt, siendo el primer argumento el comando a examinar y el segundo argumento el término de búsqueda. Por ejemplo:Esto abre el mensaje de ayuda completo
less, resalta cada instancia del término de búsqueda y se desplaza a la primera instancia del término de búsqueda. Luego puede presionarnpara avanzar a la siguiente línea que contiene el término de búsqueda,nnuevamente para la siguiente, y así sucesivamente. Para volver a una instancia anterior, presioneN. Utilice losHome,End,Page Up,Page Down,Up Arrow, yDown Arrowteclas para la navegación en general. PresioneqoQpara salirlessy regresar a la línea de comando.fuente
Me gustó la solución de @tgwtdt, así que la mejoré un poco.
Esto hace lo mismo, pero hace un poco para manejar los errores y también trata de procesar los elementos integrados.
qh usa () en lugar de {}, entonces qh1 () y out son locales (en una subshell).
fuente