tab completion
Python 코드를 실행하려고 할 때 bash 셸에서 이상한 동작이 발생합니다.
여러 문자 뒤에 접두사 인수를 사용하면 -
탭 완성을 사용하여 파일을 선택할 수 있지만 문자 하나만 사용하면 완전히 실패합니다. 여기 몇 가지 예가 있어요.
#failed
python prepare_yaml_files.py -i in<tab><tab>
#succeed: though `-in` is not valid
python prepare_yaml_files.py -in in<tab><tab>
#succeed: valid argument
python prepare_yaml_files.py --in in<tab><tab>
왜 이런 일이 발생하는지 알고 싶습니다. .bashrc
이 문제를 해결 하려면 몇 가지 기본 설정을 지정해야 합니까 ?
답변1
내 추측으로는 잘못된 자동 완성 스크립트가 발생했다는 것입니다. 데비안을 살펴본 결과 /usr/share/bash-completion/completions/python
로 끝나는 파일 이름만 자동 완성되거나 이전 단어가 의 변형이거나 단일 문자 옵션인 경우에만 .py
자동 완성 됩니다 .py
..pyo
python
-X
여기서는 인터프리터에 대한 모든 인수가 명령을 실행하기 전에 제공되고 여전히 스크립트 이름을 제공해야 한다고 가정합니다 . 따라서 .py
일치하는 파일만 표시됩니다..py[oc]
를 사용하여 프로그래밍 가능한 자동 완성을 완전히 비활성화할 수 있습니다 shopt -u progcomp
. 더 나은 수정을 위해서는 자동 완성 스크립트를 편집해야 합니다.
내가 보고 있는 규칙은 다음과 같습니다. 완전히 설명했는지는 모르겠습니다.
$이전 사례 [...] !(?(*/)python*([0-9.])|-?)) [[ $cword -lt 2 || ${words[cword-2]} != -@(Q|W) ]] \ && _filedir ;;