불완전한 디렉토리 이름이 주어지면 cd가 자동으로 선택되는 것이 표준 동작입니까?


17

나는라는 세 개의 폴더가 ProjectA, ProjectB하고 ProjectC. 나는 때 tab- 완전한 cdcd Project누르십시오 Enter, 그것을 선택합니다 ProjectC. 나는 이것이 다른 유사한 경우에도 해당한다는 것을 알았다. 사전 순서의 마지막으로 기본 설정되지만 가장 최근에 변경 / 추가 될 수도 있습니다.

이 기본 동작이에 대한 cd것입니까, 아니면 실수로 설정 한 것입니까?

bash 4.3과 함께 OSX 10.10.3을 실행하고 있습니다.

답변:


18

나는 그 행동에 직면하지 않습니다. 그러나 나는 그것을 재생할 수있었습니다. 실수로 옵션을 변경했을 수 있습니다 cdspell. Bash Reference Manual을 참조 하십시오 .

CDSpell

설정하면, cd 명령에서 디렉토리 구성 요소의 철자가 작은 오류가 정정됩니다. 확인 된 오류는 전치 된 문자, 누락 된 문자 및 너무 많은 문자입니다. 수정 사항이 있으면 수정 된 경로가 인쇄되고 명령이 진행됩니다. 이 옵션은 대화식 쉘에서만 사용됩니다.

나는 그것을 시도하고 항상 주어진 인수에서 경로를 수정합니다 cd. 여러하여 폴더에있는 같은 가능성이있는 경우 ProjectA, ProjectB그리고 ProjectC디렉토리 순서의 마지막 인 하나, 기본값은. 로 확인할 수 있습니다 ls -U. 예를보십시오 :

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$

해당 동작을 비활성화하려면 다음을 사용하십시오.

shopt -u cdspell

흥미롭지 만 왜 디렉토리 순서에서 마지막 항목을 선택합니까? 문서화되지 않은 것 같습니다.
Faheem Mitha

그 출처를 찾을 수 없습니다. bash의 소스 코드에는 spname철자가 올바른 파일 이름을 반환 하는 함수 가 있습니다. 그것은 영감the code in "The UNIX * Programming Environment", Kernighan & Pike, Prentice-Hall 1984, pages 209 - 213.
혼돈

문서 버그처럼 들립니다. 아마도 bash 에보 고해야합니다. 그렇다면 답변에 버그에 대한 링크를 포함시킬 수 있습니다.
Faheem Mitha

@ chaos Ah 예, shopt -s cdspell내 설정을 보았습니다 .bashrc(osx / Linux 크로스 호환을 위해 많은 복사 및 붙여 넣기 작업을 수행했으며 .bashrc분명히 더 많은주의를 기울여야했습니다). 나는 실제로 그것을 좋아한다. 나는 단지 이유를 찾는 검색을 할 수 없었다. 감사!
Rob Holt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.