GIT 완성 시 이상한 문자가 나타남

GIT 완성 시 이상한 문자가 나타남

나는 bash를 실행 중입니다.

GNU bash, 버전 4.3.25(1)-릴리스(x86_64-apple-darwin13.4.0)

OS X 10.10.1에서. 약 일주일 전에 자동 완성 기능이 작동을 멈췄지만 git에서만 작동하는 것을 발견했습니다. Git 자동 완성에 이 스크립트를 사용합니다.

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

작동이 중지된 지 며칠이 지나도 문자 's'로 시작하는 명령(예: status, show, stash)에 대해 자동 완성 기능이 계속 작동하는 것을 확인했습니다. 그런 다음 이 명령을 자동 완성하려고 합니다.

git c

출력은 다음과 같습니다.

사용자:~$ git c^[[m^[[K

c^[[m^[[Kat 파일
c^[[m^[[Kheck-attr
c^[[m^[[Kheck-무시
c^[[m^[[Kheck-mailmap
c^[[m^] [[Kheck-ref-format
c^[[m^[[Kheckout
c^[[m^[[Kheckout-index
c^[[m^[[Kherry
c^[[m^[[Kherry-pick
c^[ ]] [m^[[Kitool
c^[[m^[[Klean
c^[[m^[[클론
c^[[m^[[Kolumn c^[[m^[[Kommit c^[[m^) [[Kolone
c^[[m^[[Kolumn c^
[[m^[[Kommit c^[[m^[[] Kommit-tree
c^[[m^[[Konfig
c^[[m^[] Kount-객체
c^[[m^[[Kredential
c^[[m^[[Kredential-cache
c^[[m^[] [Kredential-osxkeychain
c^[[m^[[Kredential-store
c^[[ m^[[Kvsexportcommit
c^[[m^[[Kvsimport
c^[[m^[[Kvsserver]

보시다시피, 일부 이상한(이스케이프 처리된?) 문자가 각 명령의 첫 번째 문자 뒤에 삽입됩니다("s"를 제외한 다른 모든 문자에서도 동일한 현상이 발생함). 이러한 문자로 인해 자동 완성 기능이 예상대로 작동하지 않습니다.

이 문제의 원인을 아는 사람이 있습니까? 나는 이것을 디버깅하는 방법조차 모르므로 어떤 조언이라도 환영합니다.

답변1

이 이상한 이스케이프 시퀀스는 색상 변경 명령입니다.

코드를 완료하려면 다음 명령을 실행하여 사용 가능한 명령을 나열하십시오.

git help -a|egrep '^  [a-zA-Z0-9]'

출력은 git help -a다음과 같습니다.

grep 추가 원격 추가 --대화형 해시 개체 원격 -ext am 도움말 원격 -fd... fsck -개체 수신 패킷 쓰기 트리 gc reflog get-tar-commit-id relink

grep이 해당 줄의 일치하는 부분을 컬러로 인쇄하도록 구성된 경우 첫 번째 열의 명령 이름에는 첫 번째 문자가 강조 표시됩니다.

$ git help -a|egrep --color=always '^  [a-zA-Z0-9]' | cat -v | head -n 1
^[[01;31m^[[K  a^[[m^[[Kdd                      grep                     remote

Bash는 이 출력을 보면 ^[[01;31m^[[K, a^[[m^[[Kddgrepremote가능한 명령이라고 생각합니다. 첫 번째는 나타나지 않으며, 마지막 두 개는 정확하고 두 번째는 깨졌습니다.

구성해야합니다grep출력이 터미널에 없을 때는 색상을 사용하지 마십시오. 이미 별칭을 사용하고 있는 경우 egrep( egrep --color=alwaysgrep과 동일 fgrep) 별칭을 로 변경합니다 --color=auto. GREP_OPTIONS어딘가에 변수가 설정 되어 있으면 그곳에서 --color=always변경 하세요 --color=auto.

관련 정보