LS_COLORS에서 'mi'를 설정하면 postgresql 및 python 탭 완성에 영향을 미치는 이유는 무엇입니까?

Aug 18 2020

따라서 사용자 지정 LS_COLORS설정이 있으며 다음과 같습니다.

mi=05;01;33:
or=05;01;33:

mils의 목록보기에서 오른쪽 열에 or있는 누락 된 파일 용이고 일반 ls 모드에서 누락 된 파일 용이거나 목록 모드에서 왼쪽에 있습니다. 위의 경우 둘 다 밝은 노란색으로 깜박이도록 설정합니다. 나는 그것을 깜박이는 것이 누락 된 링크를 스스로에게 알리는 가장 확실한 방법이라고 생각했기 때문에 그렇게 설정했습니다.

그러나 문제는 대화 형 모드에서 파이썬을 실행하고 탭 완성을 요청할 import rere.[tab key]입니다. 대신에 무엇이든 정상 목록 얻기의 miLS_COLORS제안에 적용됩니다합니다. 따라서 화면이 깜박이는 텍스트로 가득 차서 경계선을 합리적인 속도로 읽을 수 없게됩니다.

postgresql 대화 형 모드 콘솔에서 탭 완성을 사용할 때도 같은 일이 발생합니다. 파이썬과 똑같습니다. 하지만 대부분의 다른 프로그램이나 유사한 프로그램은 괜찮으며 bash 완성도 괜찮습니다.

이러한 프로그램 ls이 출력 형식을 지정하는 데 사용 됩니까? 나는 현재 mi문제를 해결하기 위해 다른 것으로 다시 변경 했으며을 통해 끊어진 링크를 볼 수 있기 때문에 실제로는 중요하지 않습니다 or. 하지만 왜 이런 일이 일어나고 있는지, 그리고 내가 그것을 멈출 수 있는지 정말 궁금합니다.

답변

1 Quasímodo Aug 18 2020 at 23:24

기본 모듈 을 나열하여 확인할 수 있듯이 GNU readline 이 사용되고 있습니다.

$ python3
>>> import sys
>>> sys.modules.keys()
dict_keys([...,'readline', 'atexit', 'rlcompleter'])

Readline은 차례대로 LS_COLORS. 부터 man 3 readline,


colors -stats (Off) On으로 설정되면 readline은 파일 유형을 나타내는 다른 색상을 사용하여 가능한 완료를 표시합니다. 색상 정의는 LS_COLORS 환경 변수의 값에서 가져옵니다.

확신 할 수 없다면 대화 형 파이썬 세션으로 돌아가서 다음을 입력하십시오.

>>> a<TAB><TAB>
abs(     all(     and      any(     as       ascii(   assert   async    await
>>> import readline
>>> readline.parse_and_bind("set colored-stats off")
>>> a<TAB><TAB>
abs(     all(     and      any(     as       ascii(   assert   async    await

컬러 - 기록을 중지 한 후, 제안 달성 ( bs(, ll(등)은 단말의 정상적인 색이어야한다. 접두사는 a여전히 색상을 상속 LS_COLORS받으며 마찬가지로 다음을 사용하여 비활성화 할 수 있습니다.

readline.parse_and_bind("set colored-completion-prefix off")