¿Es el comportamiento estándar de cd elegir automáticamente cuando se le da un nombre de directorio incompleto?

17

Tengo tres carpetas llamadas ProjectA, ProjectBy ProjectC. Cuando tab-Complete cda cd Projecty pulse Enter, se opta ProjectC. He encontrado este es también el caso con otros casos similares; Por defecto es el último en el orden lexicográfico (pero esto también puede ser cambiado más recientemente / agregado).

¿Es este el comportamiento predeterminado esperado para cd, o he configurado algo por accidente aquí?

Estoy corriendo OSX 10.10.3, la fiesta 4,3.

Rob Holt
fuente

Respuestas:

18

No encuentro ese comportamiento. Pero pude reproducirlo. Tal vez cambiaste la opción por accidente cdspell. Consulte el Manual de referencia de Bash :

cdspell

Si se establece, se corregirán los errores menores en la ortografía de un componente de directorio en un comando de CD. Los errores verificados son caracteres transpuestos, un carácter faltante y un carácter demasiado. Si se encuentra una corrección, la ruta corregida se imprime y el comando continúa. Esta opción sólo es utilizado por shells interactivos.

Lo intenté y siempre corrige la ruta en el argumento dado cd. Si hay múltiples posibilidades, como en su carpeta con ProjectA, ProjectBy ProjectC, por defecto es la última en el orden del directorio. Puedes verificar eso por ls -U. Mira el ejemplo:

user@host:~$ ls -Ul
total 0
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectA
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectB
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectC
user@host:~$ cd Project<tab><tab>
ProjectA/ ProjectB/ ProjectC/
user@host:~$ cd Project
ProjectC
user@host:~/ProjectC$

Para deshabilitar ese comportamiento, use:

shopt -u cdspell
caos
fuente
Interesante, pero ¿por qué elige el último en orden de directorio? Esto no parece estar documentado.
Faheem Mitha
No puedo encontrar una fuente para eso. En el código fuente de bash hay una función llamada spnameque devuelve el nombre de archivo correctamente escrito. Se inspira enthe code in "The UNIX * Programming Environment", Kernighan & Pike, Prentice-Hall 1984, pages 209 - 213.
el caos
Suena como un error de documentación. Probablemente deberías informarlo a bash. Si lo hace, podría incluir un enlace al error en su respuesta.
Faheem Mitha
@chaos Ah, sí, veo que he shopt -s cdspellconfigurado mi .bashrc(hice muchas copias y pegué haciendo que una cruz osx / linux sea compatible .bashrcy obviamente debería haber prestado más atención). En realidad me gusta, simplemente no pude hacer una búsqueda para encontrar por qué. ¡Gracias!
Rob Holt