O comportamento padrão do cd é escolher automaticamente quando é dado um nome de diretório incompleto?

17

Eu tenho três pastas chamadas ProjectA , ProjectB e ProjectC . Quando eu tab -complete cd to cd Project e pressiona Enter , ele escolhe ProjectC . Eu encontrei este também é o caso com outros casos semelhantes; o padrão é o último em ordem lexicográfica (mas isso também pode ser alterado / adicionado mais recentemente).

Este é o comportamento padrão esperado para cd ou defini algo acidentalmente aqui?

Estou executando o OSX 10.10.3 com o bash 4.3.

    
por Rob Holt 26.05.2015 / 08:00

1 resposta

18

Eu não encontro esse comportamento. Mas eu consegui reproduzi-lo. Talvez você tenha alterado acidentalmente a opção cdspell . Consulte o Manual de referência do Bash :

cdspell

If set, minor errors in the spelling of a directory component in a cd command will be corrected. The errors checked for are transposed characters, a missing character, and a character too many. If a correction is found, the corrected path is printed, and the command proceeds. This option is only used by interactive shells.

Eu tentei e sempre corrige o caminho no argumento dado a cd . Se houver várias possibilidades, como em sua pasta com ProjectA , ProjectB e ProjectC , o padrão será o último na ordem de diretórios. Você pode verificar isso por ls -U . Veja o exemplo:

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 desativar esse comportamento, use:

shopt -u cdspell
    
por 26.05.2015 / 08:15