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-l
o-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
readline
expandido--help|grep
sobre alguna tecla o secuencia de teclas presionar. Para que eso se apliquebash
solo (y no a otras aplicaciones comogdb
usar readline), puede usar elbind
comando bash builtin, que esbash
la API de configuraciónreadline
, por ejemplo en su~/.bashrc
:O agregue a su
~/.inputrc
(archivo de configuración de readline):(hay otros shells como
rc
oes
que usan readline y donde hacer ese enlace podría tener sentido, pero AFAICT, no configuran larl_readline_name
variable antes de invocar,readline
por lo que no podrá agregar algunas$if
declaraciones para ellos (se mostrarían comoother
todas 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
less
para 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
bash
función es similar a la funciónqh
en 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 presionarn
para avanzar a la siguiente línea que contiene el término de búsqueda,n
nuevamente para la siguiente, y así sucesivamente. Para volver a una instancia anterior, presioneN
. Utilice losHome
,End
,Page Up
,Page Down
,Up Arrow
, yDown Arrow
teclas para la navegación en general. Presioneq
oQ
para salirless
y 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