terminfo의 맨 페이지에 ms
에 지연을 지정하는 인코딩에 $<>
이 있고 그 안에 꺾쇠 괄호 안에 소수점 이하 1 자리의 소수 자릿수가 있음을 언급합니다.terminfo 매개 변수화 된 문자열의 지연
그리고 다음과 같은 파이썬 스크립트에서 $<
은 지연을 지정하는 데만 사용된다는 것을 확인했습니다. 즉, $<
이 지연을 지정하지 않는 데 사용 된 매개 변수화 된 문자열이 없음을 확인했습니다.
#!/usr/bin/env python3
# './test/data/stressTestTerms.txt' contains contains terminal names
# and directory './test/data/mirror' contains terminal databases of 2718 terminals
import subprocess
import re
def check_dollar_angular(caps):
string_caps = [cap for cap in caps.split(',') if '=' in cap]
# search for $<..> type delays in string caps
delay = r"\$<(\d+(\.(\d)+)?\*?/?|(\.(\d)+)?\*?/?)>"
caps_with_dollar = 0
delay_matches = 0
for cap in string_caps:
matches = list(re.finditer(delay, cap))
dollar_idx = cap.find('$<')
if dollar_idx != -1:
caps_with_dollar += 1
if any([True if match.start() == dollar_idx else False for match in matches]):
delay_matches += 1
if caps_with_dollar == delay_matches:
return True
else:
return False
if __name__ == "__main__":
with open('./test/data/stressTestTerms.txt') as terminal_names:
res = []
for each_terminal in terminal_names:
output = subprocess.run(
['infocmp', '-0', '-A', './test/data/mirror', each_terminal.strip()], stdout=subprocess.PIPE)
try:
output.check_returncode()
caps = output.stdout.decode('utf-8')
res.append(check_dollar_angular(caps))
except subprocess.CalledProcessError as e:
print(e)
if (not all(res)):
print(
"We have a terminal where in one of it's caps there is a dollar-angular but it doesn't signify delay")
else:
print(
"Success! no terminal found where '$<' is used for anything else other than specifying delay")
그래서 제 질문은 텍스트/시퀀스의 일부가 될 및 지연을 나타내지 $<
여부, 입니까? 예 : $<%p1%d
또는 $<A
과 같이 대소 문자가 존재할 수 있습니까 (예 : 현재 또는 미래의 터미널)? $<
을 사용하여 지정해야하는 것은 아니며 유효한 terminfo 시퀀스입니까? manual page