¿Se puede modificar la finalización del comando para `cd` para mostrar solo directorios e ignorar archivos?

12

Cuando estoy en un directorio en bash, y presiono cd Space Tab, muestra todo en el directorio como una posibilidad. ( Show all 1000 possibilities?) Esto es realmente engorroso cuando estoy en un directorio con muchos archivos regulares y relativamente pocos directorios.

Entonces, ¿es posible hacer que las opciones de autocompletar cdsolo incluyan directorios?

Sé que puedo obtener una lista de directorios dentro de un directorio haciendo

ls -d */

pero no estoy seguro de cómo proceder desde allí.

Estoy usando CentOS 6.6 Final .

chiliNUT
fuente

Respuestas:

25

Solo agrega

complete -d cd

en su ~/.bashrc(u otro archivo de configuración bash).

jimmij
fuente
¡funciona! Gracias. Tuve que escribir bashdespués para volver a cargar mi ~/.bashrcarchivo
chiliNUT
Eso es interesante. Este es el comportamiento predeterminado en mi instalación de Debian, pero escribir completeno se muestra -d cdni nada parecido. Aparentemente se ha hecho de alguna otra manera aquí.
Tom Zych
@TomZych Hay un script de finalización de bash popular , es muy probable que su distribución lo haya instalado de forma predeterminada.
jimmij
2
Para volver a leer el ~/.bashrctipo . ~/.bashrc. Esto puede no iniciar un sub-shell.
ctrl-alt-delor
1
@richard One también puede volver a escribir / pegar este comando en el shell interactivo actual.
jimmij
2

Esto debería suceder automáticamente en una instalación típica en muchas distribuciones.
Si no es así, probablemente te falte el bash-completionpaquete:

  • Ubuntu: sudo apt-get install bash-completion
  • Arco: sudo pacman -S bash-completion
usuario541686
fuente