![입력 에드가 비어 있습니다](https://linux55.com/image/164184/%EC%9E%85%EB%A0%A5%20%EC%97%90%EB%93%9C%EA%B0%80%20%EB%B9%84%EC%96%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
출력이 tput ed
비어 있고 이유를 이해할 수 없습니다. 다른 기능은 잘 작동합니다. 출력에도 빠진 것이 ed
없으므로 infocmp
tput이 일치해야 합니다. 그렇죠?
$ printf '%q' "$(tput ed)"
''
$ printf '%q' "$(tput home)"
$'\033'\[H
저는 Mac OS 10.14.6 및 iTerm2에서 zsh를 사용하고 있습니다. 용어=xterm-256color.
답변1
Apple은 ncurses에 대한 termcap 지원을 구성합니다(기본 terminfo에 추가로):
- 구성 상태구성 옵션을 보여주는 파일입니다.
- infocmp 호출_nc_read_file_entry데이터를 얻으려면.
- 전화를 걸어설정 항목, 이는 다음으로 이동합니다.
_nc_read_entry
, 이는 호출됩니다._nc_read_tic_entry
, 이는 실제로 호출됩니다._nc_read_file_entry
- 문제가 있는 경우
_nc_read_tic_entry
, 그 다음에_nc_read_entry
termcap 지원으로 대체(참조read_entry.c
).
10년 전의 코드이기 때문에 _nc_read_tic_entry에서 발생할 수 있는 문제는 얼마 전에 수정되었을 수도 있습니다.
예를 들어, MacPorts를 설치했는데 제대로 작동하지만 Apple 버전은 그렇지 않습니다. 문제를 조사하는 데 사용한 최상위 스크립트는 다음과 같습니다.
#!/bin/sh
unset TERMINFO
unset TERMINFO_DIRS
export TERM=xterm-256color
#export PATH=/usr/bin:$PATH
echo TERMCAP
infocmp -CrTt1 | grep -E ':..=.*:' | sed -e 's/^ ://' -e 's/=.*//' | xargs -n 1 /tmp/test-tput
echo TERMINFO
infocmp -1 | grep -E '^ .*=.*,' | sed -e 's/^ //' -e 's/=.*//' | xargs -n 1 /tmp/test-tput
PATH
( 둘 중 하나를 선택하려면 주석 처리/주석 해제 ) 이를 두 번째 스크립트라고 합니다./tmp/test-tput
표시값:
#!/bin/bash
tput "$1" >/dev/null 2>/dev/null || exit
echo -n "CAP:$1 "
tput "$1" 2>/dev/null
echo
ncurses 5.7의 동작은 다음과 같습니다.1999년
+ modify tput to accept termcap names as an alternative to terminfo
names (patch by Jeffrey C Honig).
그리고 고정2009년:
+ change order of lookup in progs/tput.c, looking for terminfo data
first. This fixes a confusion between termcap "sg" and terminfo
"sgr" or "sgr0", originally from 990123 changes, but exposed by
20091114 fixes for hashing. With this change, only "dl" and "ed" are
ambiguous (Mandriva #56272).
사과ncurses 5.7그 수정보다 약 1년 앞서요.
답변2
더 많은 인터넷 검색과 문서(주로 용어 정보) 검색 끝에 마침내 이전 버전으로 돌아가야 한다는 것을 깨달았습니다.용어 모자코드:모자 이름모든 terminfo 기능이 지원되는 것은 아닙니다.
ed=$(tput ed || tput cd)