터미널의 인쇄물에서 약간의 조작을 수행하는 데 사용되는 \033[999D
및 bash 시퀀스 \033[2K\r
를 발견했습니다. 그러나이 순서는 무엇을 의미합니까? 웹에서 이러한 시퀀스의 의미를 찾는 데 도움이되는 목록 / 요약을 어디에서 찾을 수 있습니까?
터미널의 인쇄물에서 약간의 조작을 수행하는 데 사용되는 \033[999D
및 bash 시퀀스 \033[2K\r
를 발견했습니다. 그러나이 순서는 무엇을 의미합니까? 웹에서 이러한 시퀀스의 의미를 찾는 데 도움이되는 목록 / 요약을 어디에서 찾을 수 있습니까?
답변:
이 링크 http://www.termsys.demon.co.uk/vtansi.htm을 참조하십시오 . Anthon이 말했듯 \033
이 이스케이프 문자의 C 스타일 8 진 코드입니다. 이것은 [999D
커서를 999 열 뒤로 이동 시키며, 아마도 줄의 시작 부분에 도달하는 무차별 한 방법 일 것입니다. [2K
현재 줄을 지 웁니다. \r
는 캐리지 리턴으로 커서를 현재 줄의 시작 부분으로 다시 이동 시키며 터미널 제어 시퀀스가 아닌 C 스타일 이스케이프 시퀀스입니다.
다른 사람들이 지적했듯이 이러한 제어 시퀀스는 bash
자체적 으로 수행 하는 것이 아니라 텍스트가 나타나는 터미널 장치 / 에뮬레이터입니다. 옛날 옛적에이 시퀀스들은 완전히 다른 하드웨어에 의해 해석되는 것이 일반적이었습니다. 원래 각각은 완전히 다른 코드 세트에 응답합니다. 이 문제를 해결하기 위해 여러 터미널과 호환되는 코드를 작성하는 데 사용되는 라이브러리 termcap
및 terminfo
라이브러리. 이 tput
명령은 terminfo
라이브러리에 대한 인터페이스 ( termcap
지원도 컴파일 가능)이며 호환 가능한 시퀀스를 만드는보다 강력한 방법입니다.
즉, ANSI X3.64 또는 ECMA-48 표준도 있습니다. 모든 최신 터미널 구현이 이것을 사용합니다. terminfo
및 termcap
구현이 불완전 또는 비 표준 확장을 포함 할 수있다 그러나 대부분의 경우는 일반적인 ANSI 시퀀스가 작동 할 것이라고 가정하는 것이 안전합니다, 아직 관련입니다.
xterm
자주 묻는 질문 현대 터미널 에뮬레이터 사이의 차이점에 대한 몇 가지 흥미로운 정보를 제공합니다 (많은 단지 모방하려고 xterm
자신을)하는 방법과 xterm
순서는 위의 링크에서 언급 된 VT100 터미널과 관련이있다. 또한 제어 시퀀스 의 명확한 목록을xterm
제공합니다 .
물론 리눅스 콘솔 man console_codes
은에 대한 비교와 함께 제어 시퀀스의 결정적인 목록을 찾을 수있는 리눅스 콘솔 xterm
이다.
tput
대신 명령을 사용하여 이식성을 높이기 위해 iirc를 사용할 수 있습니다 (단말기의 특정 기능을 덜 사용함 ). VT100 (페이지가 말한 것)은 많은 사람들이 지원하지만 모든 것이 지원되는 것은 아닙니다. 그러나 TERM 변수는 다른 터미널로 설정 될 수 있으며 이는 일부 명령의 영향에 영향을 줄 수 있습니다.
tput
것이 더 강력한 방법입니다. 그러나 특정 VT100 터미널이 아닌 ANSI 호환성이므로 현재는 보편적 xterm
으로 사용되지 않지만 모드를 허용하지 않는 모드 로 설정할 수 있다고 생각 합니다. 나는 이것에 대해 더 많은 정보로 업데이트 할 것입니다.
TERM=xterm
했지만 모든 것을 구현 xterm
하지는 않습니다.
는 \033
이스케이프 문자이며, 그 순서는 떠들썩한 파티 특정 아니지만의 (떠들썩한 파티) 프로그램을 실행하는 단말 (직렬 회선 또는 네트워크)를 통해 하드웨어 또는 소프트웨어 ()에 의해 해석했다. 이러한 시퀀스 가 많이 있습니다 .
각각의 기능은 종속 된 터미널에 따라 다르며 터미널의 상태를 변경하는 이전 순서에 따라 달라질 수도 있습니다.
이것들은 종종 bash prompt에서 색상 을 설정하는 데 사용 되지만 해당 페이지에서 특정 예제를 찾지 못했습니다.
'\ 033 [999D'는 웃기다. 일부 터미널은 이스케이프 시퀀스를 적게 구현하므로 '\ 033 [1G', '\ 033 [1; 1H', '\ 033 [1; 1f'또는 '\ r'중 어느 것도 동작하지 않는 경우에 필요할 수 있습니다. 그러나 누가 열 열 텍스트 표시를 사용해야합니까? 이 시퀀스는 Linux에서 console_codes (4) 매뉴얼 페이지를 갖습니다 . bjh21에는 모든 코드 의 자세한 목록이 있습니다 . '\ 033'을 (를) 구문 분석하는 프로그램에 따라보다 명확한 대체 '\ e'를 사용할 수 있습니다.
터미널 컨트롤 명령을 실행 하는 올바른 방법은 ncurses와 같은 추상화 계층을 사용하는 것이지만 직접 사용하는 것은 아니지만 문자열 리터럴에서도 작동합니다.
\033[999D
이전 줄을 백업 한다고 가정했습니다 . 하지만 단지 코딩 사기의 결과 일 수있다, 또한 얻을 수있다) bash
, 직접 예를 이스케이프 코드를 해석하는$'\033[999D'
"033 term escape list"또는 " 033 tput "을 검색하고 누군가 대답하기 전에 http://wiki.bash-hackers.org/scripting/terminalcodes 를 참조 하십시오 .;