¿Cómo puedo aprovechar las posibilidades de completar pestañas?


18

Cuando presiono tab en una consola obtengo esta salida

¿Mostrar todas las 2957 posibilidades? (sí o no)

¿Hay alguna forma de usar grepestas 2957 posibilidades? Me gustaría buscar todos los comandos con la palabra "svn" en ellos.

Respuestas:


21

La solución es el bash incorporado compgen. Para grep 'svn' de todos los comandos disponibles y los alias de comandos accesibles a través de $PATH, escriba.

compgen -ac | grep svn

¿Desea buscar desde un determinado prefijo (por ejemplo, todos los comandos que comienzan con ecrypt)? Usa expresiones regulares. .

compgen -ac | grep "^ecrypt"

excelente respuesta, pero ¿qué pasa si uno quiere aprovechar las posibilidades de completar pestañas? Es decir, que no siempre es provocada por el nombre del comando, sino también por los parámetros de comando, etc.
UncleZeiv


1

Esto debería ser equivalente:

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done

1
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn

Muy similar a la respuesta de totaam, aparte de esto limita su alcance a los ejecutables (como lo hace Bash). Pero JJE compgenes otra milla mejor.


1

tal vez {,.}*svn*ayuda aquí, por ejemplo ls -l /usr/bin/{,.}*svn*<tab>.

Pero, ¡mira el Zsh! Aquí: http://www.jukie.net/bart/blog/zsh-tab-completion son algunos ejemplos excelentes de cómo puede ayudar a reducir los resultados de finalización de pestañas. Esto incluye también la negación, por ejemplo, si desea todos los resultados de finalización de tabulación sin la palabra "foobar", o todos los resultados con dígitos pares en primer lugar, finalización de tabulación subdirectorio y mucho más. La razón por la que cambié a zsh fue compartir la historia entre todos los terminales abiertos.


0

No conocía compgen, y habría sugerido:

ls -d ${PATH//:/\/*svn* } 2>/dev/null

para bash

${VAR//pattern/replace} replaces in VAR pattern with replace. // is used to replace every pattern, not just the first, which would be just /.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.