현재 터미널에 대해 특정(이름이 지정된) 이스케이프 시퀀스를 생성하는 방법은 무엇입니까?

현재 터미널에 대해 특정(이름이 지정된) 이스케이프 시퀀스를 생성하는 방법은 무엇입니까?

최근에 (현재 termcap/terminfo 설정에 따라) 터미널 제어 코드를 "정상적으로" 출력할 수 있는 트릭을 보았지만 찾을 수 없습니다. 내가 올바르게 기억한다면 다음과 같은 작업을 수행할 수 있습니다.

echo "$(some_command home)"

에코되는 것은 이스케이프 시퀀스의 실제 바이트이며 이로 인해 $TERM커서가 뒤로 이동하게 됩니다. 그 명령은 무엇입니까?

답변1

내가 보는 명령은 tput내 질문처럼 사람들이 사용할 수 있습니다.

echo -n "$(tput home)"

물론 이 특별한 예는 중복됩니다. tput자체 stdout에 쓸 매개변수 로 stdout을 실행하는 것은 낭비입니다. echo문자열을 생성해야 하는 경우 이 방법이 더 적합할 수 있습니다 echo -n "$(tput thing1)some text$(tput thing2)other text. 하지만 @icarus가 아래 주석에서 지적했듯이 이렇게 하면 문자열이 손실됩니다.타이밍트릭을 알아라 tput.

따라서 가능할 때마다 유틸리티를 직접 호출하는 것이 가장 좋습니다.

tput clear
tput blink
echo "DANGER WILL ROBINSON"
tput bel
sleep 5
reset     # NOTE: this might be symlinked to tput also!

핵심/내장 도구는 아니지만 ncurses의 일부로 제공되므로 널리 사용해야 합니다. 내가 하나 찾았어좋은 소개/개요이는 몇 가지 배경 정보를 제공하고 관련 명령도 표시합니다. 그리고이 점내보낼 수 있는 모든 명명된 "기능"의 편리한 목록이 포함되어 있습니다.

관련 정보