ANSI 이스케이프 코드

ANSI escape code
ANSI X3.64(ISO/IEC 6429)
Htop.png
시스템 모니터htop, ncurses 어플리케이션의 출력(를 사용)SGR 및 기타 ANSI/ISO 제어 시퀀스).
표준.
분류ISO/IEC 2022 기반 제어 코드 및 제어 시퀀스 세트
기타 관련 부호화기타 제어기능 표준: ITU T.101, JIS X 0207, ISO 6630, DIN 31626, ETS 300 706

ANSI 이스케이프 시퀀스는 인밴드시그널링의 표준으로 비디오텍스트 단말기와 단말 에뮬레이터의 커서 위치, 색상, 글꼴스타일링 및 기타 옵션을 제어합니다.대부분 ASCII 이스케이프 문자와 괄호 문자로 시작하는 특정 바이트 시퀀스가 텍스트에 포함됩니다.단말기는 이러한 시퀀스를 문자 그대로 표시하는 텍스트가 아닌 명령어로 해석합니다.

ANSI 시퀀스는 벤더 고유의 시퀀스를 대체하기 위해 1970년대에 도입되어 1980년대 초에 컴퓨터 기기 시장에 널리 보급되었다.표준화된 기능을 제공하기 위해 개발, 과학, 상업용 텍스트 기반 애플리케이션 및 게시판 시스템에 사용됩니다.

하드웨어 텍스트 단말기는 21세기에 점점 더 희귀해졌지만, 대부분의 터미널 에뮬레이터와 명령 콘솔이 ANSI 표준의 적어도 일부를 해석하기 때문에 ANSI 표준의 관련성은 지속되고 있습니다.

역사

비디오 단말기의 거의 모든 제조사는 벤더 고유의 이스케이프 시퀀스를 추가하여 화면의 임의의 위치에 커서를 두는 등의 조작을 실시했습니다.예를 들어 VT52 단말기가 있습니다.VT52 단말기는 이 단말기를 통해 커서를 화면상의 x, y 위치에 배치할 수 있습니다.ESC문자, aY문자, 다음으로 x,y location + 32와 같은 수치로 나타내는 2개의 문자(따라서 ASCII 공백 문자로 시작하여 제어 문자를 피합니다).Hazeltine 1500에도 유사한 기능이 있으며,~,DC1X와 Y의 위치를 쉼표로 구분합니다.이 점에서 두 단말기는 동일한 기능을 가지고 있었지만, 다른 제어 시퀀스를 사용하여 호출해야 했습니다.

이러한 시퀀스는 터미널마다 다르기 때문에 termcap("terminal capabilities")이나 tput과 같은 유틸리티와 같은 정교한 라이브러리를 만들어 프로그램이 어떤 터미널에서도 동일한 API를 사용할 수 있도록 해야 했습니다.게다가 이러한 단말기의 상당수는, 문자의 바이너리치로서 숫자(행이나 열등)를 송신할 필요가 있었습니다.일부 프로그래밍 언어나 ASCII 를 내부적으로 사용하지 않는 시스템에서는, 숫자를 올바른 문자로 변환하는 것이 어려운 경우가 자주 있었습니다.

ANSI 표준은 모든 단말기에서 사용하는 명령어세트를 작성하고 모든 수치 정보를 ASCII 번호로 전송하도록 요구함으로써 이러한 문제에 대처하려고 했습니다.이 시리즈의 첫 번째 표준은 1976년에 [1]채택된 ECMA-48이었다.이것은 일련의 문자 부호화 표준의 연속이었고, 첫 번째 표준은 ISO 646의 기원이 된 7비트 표준인 1965년의 ECMA-6이었습니다."ANSI 이스케이프 시퀀스"라는 이름은 ANSI가 ANSI X3.64를 채택한 1979년부터 유래합니다.ANSI X3L2 위원회는 ECMA 위원회 TC 1과 협력하여 거의 동일한 표준을 작성했습니다.이 두 표준은 ISO 6429라는 국제 [1]표준으로 통합되었습니다.1994년, ANSI는 국제 표준을 위해 표준을 철회했다.

DEC VT100 terminal
DEC VT100 비디오디스플레이 단말기

이러한 시퀀스를 지원하는 최초의 인기 비디오 단말기는 [2]1978년에 도입된 디지털 VT100입니다.이 모델은 시장에서 큰 성공을 거두어 다양한 VT100 클론을 촉발시켰으며, 그 중 가장 [3]초기 모델이자 가장 인기 있는 모델은 1979년 훨씬 저렴한 가격의 제니스 Z-19였습니다.그 외의 제품에는, Qume QVT-108, Televideo TVI-970, Wyse WY-99GT, 옵션의 「VT100」, 「VT103」, 또는 「ANSI」모드가 포함되어 있어, 그 외의 브랜드에서는 호환성이 다릅니다.이러한 인기는 점점 더 많은 소프트웨어(특히 게시판 시스템 및 기타 온라인 서비스)로 이어졌고, 탈출 시퀀스가 작동했다고 가정하고, 이를 지원하는 거의 모든 새로운 단말기와 에뮬레이터 프로그램으로 이어졌다.

1981년 ANSI X3.64는 FIPS 간행물 86에 의해 미국 정부에서 사용하기 위해 채택되었다.이후 미국 정부는 산업 표준의 복제를 중단하였고, FIPS pub.86은 [4]철회되었다.

ECMA-48은 여러 번 업데이트되었으며 1991년부터 현재 5번째 에디션입니다.ISO IEC에서도 표준 ISO/IEC 6429[5]채택되고 있습니다.JIS X 0211은 일본 공업 규격으로 채택되어 있습니다.

관련 표준에는 ITU T.61(Teletex 표준) 및 ISO/IEC 8613(주로 ISO/IEC 8613-6 또는 ITU T.416)이 포함됩니다.두 시스템은 ANSI 시스템과 많은 이스케이프 코드를 공유하며 컴퓨터 단말기에 반드시 의미 있는 확장자는 아닙니다.두 시스템 모두 즉시 사용되지 않게 되었지만 ECMA-48은 이 시스템에서 사용되는 확장을 예약으로 표시합니다.

플랫폼 지원

Unix 계열 시스템

Xterm terminal emulator
Xterm 터미널 에뮬레이터

이러한 시스템에서는 단말기(또는 에뮬레이터)가$TERM환경 변수입니다.termcap이나 termfo 등의 데이터베이스 라이브러리는 검색을 실행하여 단말기의 기능과 이 기능을 사용하기 위한 특정 이스케이프 시퀀스를 도출합니다.이러한 기능은 초기 ANSI에서 벗어날 수 있습니다.

이러한 라이브러리는 주로 유닉스 상에서 개발되었지만, 1980년대 중반까지 유닉스 계열 운영 체제에서 실행되는 프로그램들은 거의 항상 ANSI [citation needed]시퀀스를 지원하는 터미널이나 에뮬레이터를 사용하고 있다고 가정할 수 있었다. 이는 이러한 플랫폼에서 실행되는 프로그램에 의해 ANSI의 광범위한 사용을 이끌어냈다.예를 들어, 많은 게임과 셸 스크립트, 그리고 컬러 디렉토리 목록과 같은 유틸리티는 ANSI 시퀀스를 직접 작성하기 때문에 그것들을 해석하지 않는 단말기에서 사용할 수 없습니다.vi나 GNU Emacs와 같은 텍스트 에디터를 포함한 많은 프로그램들은 termcap이나 termfo를 사용하거나 termcap이나 termfo를 사용하는 저주 등의 라이브러리를 사용합니다.따라서 이론적으로는 비 ANSI 터미널을 지원하는 것은 매우 드물기 때문에 현재 이러한 [citation needed]터미널에서 동작할 가능성은 거의 없습니다.

로컬 프로그램 및 리모트머신 및 텍스트시스템 콘솔과 통신하기 위한 터미널 에뮬레이터는 거의 항상 ANSI 이스케이프 코드를 지원합니다.여기에는 X11 기반 또는 Wayland 기반 윈도우 시스템을 사용하는 시스템의 xterm, rxvt, GNOME Terminal, Konsole 등의 터미널 에뮬레이터와 MacOS의 Terminal.appiTerm2 등의 서드파티 터미널 에뮬레이터가 포함됩니다.

CP/M

1980년대 Kaypro II, CP/M-80 PC.기본적으로 ADM-3A를 에뮬레이트하고 터미널 모드(시연)도 지원했습니다.

CP/M 기계는 다양했고 프린터와 같이 서로 경쟁하는 여러 단말기가 존재했으며, 각 단말기에는 자체 제어 시퀀스가 있었습니다.일부 초기 시스템은 헤드리스(외부 단말기가 필요)였으며, 네이티브 스크린을 갖춘 개인용 컴퓨터는 일반적으로 단말기를 에뮬레이트했습니다.애플리케이션 개발자는 다양한 인기 단말기를 지원하고 이를 구성하기 위한 설치 프로그램을 제공해야 했습니다.CP/M 하드웨어 추상화 레이어(BIOS)에도 불구하고 동일한 마이크로프로세서라도 경쟁하는 디스크 포맷으로 인해 벤더는 플랫폼 고유의 버전을 제공했습니다.이 버전은 네이티브 터미널용으로 미리 구성되어 있습니다(예를 들어 다양한 머신 고유의 WordStar 어댑테이션이 출시되었습니다).

헤드리스 Altair 8800은 일반적으로 모델 33 ASR 등의 텔레타입이나 TeleVideo 920C 등의 외부 단말기에 연결되어 각각의 [6]시퀀스를 출력해야 합니다.Osborn 1과 Kaypro II 컴퓨터는 각각 [7][8]TeleVideo 920C와 ADM-3A 제어 코드의 서브셋을 에뮬레이트했습니다.TRS-80 Model 4와 Xerox 820도 리어 시글러 ADM-3A를 [9][10]에뮬레이트했습니다.Zenis Z-89, Heathkit H8Amstrad PCW CP/M-80 컴퓨터대부분 VT52와 호환되는 Zenis Z19(Heathkit H19) 터미널 코드를 구현했습니다. Z-89 설명서에도 [11][12]ANSI를 지원하는 것으로 설명되어 있습니다.

Microsoft Z-80 SoftCard for the Apple II는 UCSD 기반의 Apple Pascal이 지원하는 Datamedia 1520 시퀀스에 대응하는 Videx Videoerm의 제한된 서브셋을 에뮬레이트했습니다.CP/M에는 외부 단말기를 조정하거나 다른 제어 코드를 발행하는 로컬 애플리케이션을 실행하는 CONFIGIO 명령이 있습니다.지원되는 외부 단자는 Soroc IQ 120/140Hazeltine 1500/[13][14]1510이었습니다.

DOS, OS/2 및 Windows

MS-DOS 1.x는 ANSI 또는 기타 이스케이프 시퀀스를 지원하지 않았습니다.기본 BIOS에서는 일부 제어 문자(BEL, CR, LF, BS)만 해석되므로 모든 종류의 전체 화면 응용 프로그램을 실행할[a] 수 없습니다.디스플레이 효과는 속도가 느리기로 악명 높은 BIOS 호출이나 IBM PC 하드웨어를 직접 조작하여 수행해야 했습니다.

DOS 2.0에서는 ANSI 이스케이프 시퀀스를 위한 디바이스 드라이버를 추가하는 기능이 도입되었습니다.사실상의 표준은 ANSI입니다.SYS. 단, ANSI 의 다른 것.COM,[15] NANSI.SYS[16] 및 ANSIPLUS.EXE도 사용됩니다(BIOS를 바이패스하기 때문에 상당히 빠릅니다).속도가 느리고 기본적으로 설치되어 있지 않다는 사실로 인해 소프트웨어가 이를 이용하는 일은 거의 없었습니다.대신 어플리케이션은 [citation needed]필요한 텍스트 표시를 얻기 위해 하드웨어를 계속 직접 조작했습니다.ANSI.SYS 및 이와 유사한 드라이버는 Windows 9x에서 Windows Me까지 및 NTVDM에서 실행되는 16비트 레거시 프로그램용 NT에서 파생된 시스템에서 계속 작동합니다.

많은 DOS 클론은 시퀀스를 해석할 수 있었고 별도의 ANSI 드라이버를 로드할 필요가 없었습니다.PTS-DOS[17][18]Concurrent DOS, Multiuser[19] DOS 및 REAL/32는 내장 지원(및 다수의 확장 기능)을 갖추고 있습니다.OS/2에는 시퀀스를 유효하게 하는 ANSI 명령어가 있습니다.

Windows Console은 ANSI 이스케이프 시퀀스를 지원하지 않았으며 Microsoft도 이를 활성화하는 방법을 제공하지 않았습니다.JP Software의 TCC(구 4NT), Michael J. Mefford의 ANSI와 같은 콘솔 창의 일부 대체 또는 추가.COM, Jason Hood[20] ANSICON, Maximus5의 ConEmu는 프로그램에 의해 인쇄된 ANSI 이스케이프 시퀀스를 해석했습니다.colorama라는[21] 이름의 Python 패키지는 내부적으로 인쇄 중인 텍스트의 ANSI 이스케이프 시퀀스를 해석하여 win32 호출로 변환하여 단말기 상태를 수정하고 ANSI를 사용하여 Python 코드를 Windows로 쉽게 포팅할 수 있도록 합니다.Cygwin은 Cygwin 파일 기술자를 사용하여 콘솔에 입력된 모든 출력과 유사한 변환을 수행합니다.필터링은 Cygwin1.dll의 출력 기능에 의해 실행되며 POSIX C 코드를 Windows로 이식할 수 있습니다.

2016년에 마이크로소프트는 Windows [22]NT가 출시된 지 20년이 지난 후 예기치 않게 ANSI 이스케이프 시퀀스를 지원하는 Windows 10 버전 1511 업데이트를 출시했습니다.이는 Linux용 Windows Subsystem과 함께 실행되어 Unix와 같은 터미널 기반 소프트웨어가 Windows Console에서 시퀀스를 사용할 수 있게 되었습니다.기본적으로 꺼짐으로 설정되지만 윈도우즈 PowerShell 5.1에서 사용하도록 설정되었습니다.PowerShell 6을 통해 필요한 ESC 문자를 문자열에 삽입할 수 있습니다.`e 2019년에 도입된 Windows Terminal은 기본적으로 시퀀스를 지원하며 Microsoft는 Windows Console을 Windows [24]Terminal로 교체할 예정입니다.[23]

아타리 ST/TT/팔콘 시리즈

Atari TOS는 ANSI 이스케이프 코드를 지원하는 것이 아니라 VT52에서 채택된 명령어시스템을 사용하여 색상을 [25]지원했습니다.

아미가OS

AmigaOS는 ANSI 코드 시퀀스를 화면 출력용으로 해석할 뿐만 아니라 Amiga도OS 프린터 드라이버도 이러한 기능을 해석합니다(Amiga 전용 확장 기능 포함).OS)를 사용해, 실제로 [26]접속되어 있는 특정의 프린터에 필요한 코드로 변환합니다.

Amiga CLI(쉘) 창 스타일 제어[citation needed] 시퀀스
영향
ESC [nu] 창의 행 최대 길이를 n으로 설정합니다.
ESC [n t] 창의 최대 줄 수를 n으로 설정합니다.
ESC [n x 창의 왼쪽 가장자리에서 n픽셀의 텍스트를 시작합니다.
ESC [n y] 창의 위쪽 가장자리에서 n픽셀의 텍스트를 시작합니다.

VMS/OpenVMS

VMS는 앞서 말한 VT100과 같은 디지털의 텍스트 기반 비디오 단말기를 사용하여 제어되도록 설계되어 있기 때문에 소프트웨어는 ANSI 이스케이프 시퀀스를 직접 쓰는 경향이 있습니다(ANSI 이외의 [27][failed verification]단말에서는 동작하지 않습니다).

묘사

C0 제어 코드

거의 모든 사용자가 일부 단일 바이트 문자의 기능을 가정합니다.처음에는 ASCII의 일부로서 정의되어 있던 디폴트 C0 제어 코드세트는 ISO 6429(ECMA-48)로 정의되어 ANSI 이스케이프 시퀀스에 의해 호출되는 C1 세트와 같은 표준의 일부가 됩니다(ISO 2022에서는 ISO 6429 C1 세트는 ISO 6429 C1 세트로 사용할 수 있습니다., ISO 6429 C0 세트는 항상 ESC1 세트로 설정되어 있지 않은 채로 사용할 수 있습니다).이는 전송되는 데이터 양을 줄이거나 이스케이프 시퀀스에서 사용할 수 없는 일부 기능을 수행하기 위해 사용됩니다.

일반적인 C0 제어 코드(전체 목록이 아님)
^ C0 아바르 이름. 영향
^G 7 이음이 들립니다.
^H 8 BS 백스페이스 커서를 왼쪽으로 이동합니다(단, 커서가 줄의 시작 위치에 있는 경우 "뒤로 줄 바꿈"될 수 있습니다).
^나 9 HT 커서를 8의 다음 배수까지 오른쪽으로 이동합니다.
^J 0x0A LF 회선 피드 다음 줄로 이동하여 화면 하단에 있는 경우 디스플레이를 위로 스크롤합니다.보통 수평으로 이동하지 않지만 프로그램에서는 이 기능에 의존해서는 안 됩니다.
^L 0x0C FF 폼 피드 프린터를 다음 페이지의 맨 위로 이동합니다.보통 수평으로 이동하지 않지만 프로그램에서는 이 기능에 의존해서는 안 됩니다.비디오 단말기에 미치는 영향은 다양합니다.
^M 0x0D CR 캐리지 리턴 커서를 열 0으로 이동합니다.
^[ 0x1B ESC 탈출하다 모든 이스케이프 시퀀스를 시작합니다.

이스케이프 시퀀스의 길이는 다양합니다.ANSI 준거 이스케이프 시퀀스의 일반적인 형식은 ANSI X3.41(ECMA-35 또는 ISO/IEC [28]: 13.1 2022에 상당)에 의해 정의됩니다.이스케이프 시퀀스는 0x20 ~0x7F(모든 비제어 ASCII 문자) 범위의 바이트로만 구성되며, 앞을 내다보지 않고 해석할 수 있습니다.제어 문자, 높은 비트가 설정된 바이트 또는 유효한 시퀀스의 일부가 아닌 바이트가 끝을 정의하기 전에 발견되었을 때의 동작입니다.

Fe 이스케이프 시퀀스

뒤에 0x40 ~0x5F 범위의 바이트가 이어지는 경우 이스케이프 시퀀스는 타입입니다.Fe해석은 해당 C1 제어코드 [28]: 13.2.1 규격에 위임된다.따라서 ANSI X3.64/ECMA-48로부터의 C1 제어 코드에 대응하는 모든 이스케이프 시퀀스는 이 [5]: 5.3.a 형식을 따른다.

표준에서는 8비트 환경에서 유형에 따른 제어 기능이Fe이스케이프 시퀀스(C1 제어 코드 세트의 시퀀스)는 0x80 ~0x9F [5]: 5.3.b 범위의 단일 바이트로 나타낼 수 있습니다.이는 ISO 8859 시리즈와 같이 ISO 2022에서 만들어진 8비트 코드의 규정을 준수하는 문자 인코딩에서 가능합니다.단, UTF-8이나 CP-1252 등의 최신 디바이스에서 사용되는 문자 인코딩에서는 이러한 코드가 다른 목적으로 사용되는 경우가 많기 때문에 일반적으로 사용되는 것은 2바이트 시퀀스뿐입니다.UTF-8의 경우, C1 ControlsLatin-1 Supplement 블록을 통해 C1 제어 코드를 나타내면 다른 2바이트 코드(예: U+008E의 경우 0xC2,0x8E)가 발생하지만 이러한 방식으로 공간이 절약되지 않습니다.

일부 타입 Fe(C1 set element) ANSI 이스케이프 시퀀스(전체 리스트가 아님)
코드 C1 아바르 이름. 영향
ESC N 0x8E SS2 1교대 2 대체 문자 집합 중 하나에서 단일 문자를 선택합니다.SS2는 G2 문자 집합을 선택하고 SS3는 G3 문자 [29]집합을 선택한다.7비트 환경에서는 그 후에 [28]: 9.4 1개 이상의 GL 바이트(0x20~0x7F)가 그 세트의 문자를 지정합니다.8비트 환경에서는 GR 바이트(0xA0~0xFF)[28]: 8.4 가 될 수 있습니다.
ESC O 0x8F SS3 싱글 시프트 3
ESC P 0x90 DCS 디바이스 제어 문자열 [5]: 5.6 시퀀스의 ST. Xterm 사용으로 종료되는 것은 사용자 정의 키 정의, Termcap/[29]Termfo 데이터 요청 또는 설정입니다.
ESC[ 0x9B CSI 제어 시퀀스 인트로듀서 0x40 ~ 0x7E [5]: 5.4 범위의 바이트로 끝나는 대부분의 유용한 시퀀스를 시작합니다.
ESC \ 0x9C 세인트 문자열 터미네이터 다른 [5]: 8.3.143 컨트롤의 문자열을 종료합니다.
ESC ] 0x9D OSC 운영 체제 명령어 ST로 끝나는 [5]: 8.3.89 운영 체제의 제어 문자열을 시작합니다.
ESC X 0x98 SOS 문자열의 시작 ST로 [5]: 5.6 끝나는 텍스트 문자열 인수를 사용합니다.이러한 문자열 제어 시퀀스의 용도는 애플리케이션[5]: 8.3.2, 8.3.128 또는 프라이버시 규율에 [5]: 8.3.94 의해 정의됩니다.이러한 함수는 거의 구현되지 않으며 인수는 [29]xterm에 의해 무시됩니다.일부 Kermit 클라이언트에서는 서버가 Kermit 명령을 APC 시퀀스에 포함시킴으로써 클라이언트에서 자동으로 실행할 수 있습니다.서버를 신뢰할 [30]수 없는 경우 이는 잠재적인 보안 위험입니다.
ESC ^ 0x9E PM 프라이버시 메시지
ESC _ 0x9F APC 응용 프로그램명령어

CSI(Control Sequence Introducer) 시퀀스

Control Sequence Introducer(CSI; 제어 시퀀스인트로듀서) 명령어에서는ESC [0x30~0x3F(ASCII) 범위의 임의의 숫자(파라미터 바이트 없음 포함)가 뒤에 이어집니다.0–9:;<=>?0x20~0x2F 범위의 임의의 수의 "중간 바이트" (ASCII 공간 및!"#$%&'()*+,-./마지막으로 0x40~0x7E(ASCII) 범위의 1개의 "최종 바이트"를 사용합니다.@A–Z[\]^_`a–z{ }~를 참조해 주세요.[5]: 5.4

모든 공통 시퀀스는 다음과 같이 일련의 세미콜론으로 구분된 숫자로 파라미터를 사용합니다.1;2;3. 누락된 번호는 다음과 같이 처리됩니다.0(1;;3중간 수치인 것처럼 행동하다0파라미터는 일절 없습니다.ESC[m와 같이 행동하다0를 리셋 합니다).일부 시퀀스(예: CUU)는0~하듯이1누락된 매개 변수를 [5]: F.4.2 유용하게 만들기 위해.

단말기 제조업체가 표준과 충돌하지 않고 자체 시퀀스를 삽입할 수 있도록 일부 약정이 "개인"으로 선언되었습니다.파라미터 바이트를 포함하는 시퀀스<=>?또는 마지막 바이트 0x70~0x7E (p–z{ }~)는 비공개입니다.

CSI 시퀀스에 0x20 ~0x7E 의 범위를 넘는 문자가 포함되어 있는 경우는, 단말기의 동작은 정의되어 있지 않습니다.이러한 부정한 문자는 C0 제어 문자(0~0x1F 범위), DEL(0x7F) 또는 높은 비트가 설정된 바이트입니다.가능한 응답은 바이트를 무시하거나 즉시 처리하거나 CSI 시퀀스를 계속할지, 즉시 중단할지,[citation needed] 또는 나머지 바이트를 무시할지입니다.

일부 ANSI 제어 시퀀스(전체 목록은 아님)
코드 아바르 이름. 영향
CSIn A CUU 커서 위 커서를 이동합니다.n(디폴트)1( ) 셀이 지정된 방향으로 이동합니다.커서가 이미 화면 가장자리에 있는 경우, 이 조작은 무효입니다.
CSIn B 커드 커서 아래
CSIn C CUF 커서 포워드
CSIn D 큐브 커서 되돌리기
CSIn E CNL 커서 다음 행 커서를 줄의 선두로 이동합니다.n(디폴트)1) 행이 다운됩니다.(ANSI가 아닙니다).시스템)
CSIn F CPL 커서 앞줄 커서를 줄의 선두로 이동합니다.n(디폴트)1(ANSI가 아닙니다).시스템)
CSIn G 커서 수평 절대 커서를 열로 이동합니다.n(디폴트)1(ANSI가 아닙니다).시스템)
CSIn;m H 커서 위치 커서를 행으로 이동합니다.n,기둥.m값은 1 베이스이며 기본값은 입니다.1생략된 경우 (왼쪽 상단 모서리)다음과 같은 시퀀스CSI ;5H와 동의어이다.CSI 1;5H게다가CSI 17;H와 같다CSI 17H그리고.CSI 17;1H
CSIn J ED 디스플레이에서 지우기 화면의 일부를 클리어 합니다.한다면n0(또는 누락), 커서부터 화면 끝까지 지워집니다.한다면n1커서에서 화면 시작까지 클리어합니다.한다면n2전체 화면을 지웁니다(DOS ANSI에서 커서를 왼쪽 상단으로 이동).SYS)의 경우n3화면 전체를 클리어하고 스크롤백버퍼에 저장된 모든 행을 삭제합니다(이 기능은 xterm용으로 추가되었으며 다른 단말 어플리케이션에서 지원됩니다).
CSIn K EL 줄에서 지우기 회선의 일부를 소거합니다.한다면n0(또는 누락), 커서에서 행 끝까지 클리어합니다.한다면n1, 커서에서 행의 선두까지 클리어 합니다.한다면n2, 행 전체를 클리어 합니다.커서 위치는 변경되지 않습니다.
CSIn S SU 위로 스크롤 전체 페이지 스크롤 기준n(디폴트)1회선).맨 아래에 새 행이 추가됩니다.(ANSI가 아닙니다).시스템)
CSIn T SD 아래로 스크롤 전체 페이지를 아래로 스크롤n(디폴트)1회선).맨 위에 새 행이 추가됩니다.(ANSI가 아닙니다).시스템)
CSIn;m f HVP 수평 수직 위치 CUP와 동일하지만 편집기 기능(CUD 또는 CNL 등)이 아닌 형식 이펙터 기능(CR 또는 LF )으로 카운트됩니다.이로 인해 특정 터미널 [5]: Annex A 모드에서 다른 취급이 발생할 수 있습니다.
CSIn m SGR 그래픽 렌더링 선택 이 코드 다음에 나오는 문자의 색상과 스타일을 설정합니다.
CSI 5i AUX 포트 온 보통 로컬 시리얼 프린터에 보조 시리얼 포트 사용
CSI 4i AUX 포트 오프 보통 로컬 시리얼 프린터의 보조 시리얼 포트 사용 안 함

CSI 6n DSR 디바이스 상태 보고서 전송하여 커서 위치(CPR)를 보고합니다.ESC[n;mR,어디에n행과m는 컬럼입니다.
인기 있는 개인 시퀀스
코드 아바르 이름. 영향
CSI SCP, SCOSC 현재 커서 위치 저장 SCO 콘솔모드의 [31]커서 위치/상태를 저장합니다.수직 분할 화면 모드에서는 대신 다음과 같이 설정합니다.CSI n ; n s또는 좌우 [32]여백을 리셋합니다.
CSIu RCP, SCORC 저장된 커서 위치 복원 SCO 콘솔모드에서 [33]커서 위치/상태를 복원합니다.
CSI? 25시간 검출하다 VT220 에서 커서를 표시합니다.
CSI ® 25 l 검출하다 커서를 숨깁니다.
CSI 1049시간 xterm에서 대체 화면 버퍼 사용
CSI ® 1049 l xterm부터 대체 화면 버퍼 사용 안 함
CSI 2004 시간 괄호 부착 [34]모드를 켭니다.괄호로 묶은 붙여넣기 모드에서는 터미널에 붙여넣은 텍스트는 다음과 같이 둘러싸여 있습니다.ESC [200~그리고.ESC [201~; 단말기에서 실행 중인 프로그램은 이러한 시퀀스로 묶인 문자를 명령어로 처리하지 않아야 합니다(를 들어 Vim은 [35]명령어로 처리하지 않습니다).xterm부터[36]
CSI ® 2004 l 괄호 부착 모드를 끕니다.

SGR(Select Graphic Renderation) 파라미터

제어 시퀀스CSI n mSelect Graphic Rendition(SGR)이라는 이름을 사용하여 표시 속성을 설정합니다.여러 속성을 [37]세미콜론으로 구분하여 동일한 시퀀스로 설정할 수 있습니다.다음에 SGR이 발생할 때까지 [5]각 표시 Atribut은 유효합니다.암호가 지정되지 않으면CSI m로 취급되다CSI 0 m(표준/정상).

n 이름. 메모
0 리셋 또는 정상 모든 속성 꺼짐
1 대담하거나 강도를 높임 스멀과 마찬가지로 색상의 변화는 PC([38][better source needed]SCO/CGA)의 발명입니다.
2 희미함, 강도의 저하 또는 희미함 굵은 [39]글꼴과 같은 가벼운 글꼴로 구현될 수 있습니다.
3 이탤릭체 널리 지원되지 않습니다.때로는 반전 또는 [38]깜박임으로 처리됩니다.
4 밑줄 치다 Kitty, VTE, minty 및 iTerm2에 [40][41]대한 스타일 확장 기능이 있습니다.
5 느린 점멸 점멸을 분당 150회 미만으로 설정
6 급속 점멸 MS-DOS ANSISYS, 분당 150 이상, 널리 지원되지 않음
7 비디오 반전 또는 반전 전경색과 배경색 스왑, 일관성[42] 없는 에뮬레이션
8 숨김 또는 숨김 널리 지원되지 않습니다.
9 십자선 또는 스트라이크 읽을 수 있지만 삭제할 것으로 표시된 문자입니다.Terminal.app에서는 지원되지 않습니다.
10 프라이머리(디폴트) 글꼴
11–19 대체 글꼴 대체 글꼴 n - 10을 선택합니다.
20 프라크투르(고딕) 거의 지원되지 않음
21 이중으로 밑줄이 그어져 있거나 굵은 글씨로 되어 있지 않다. ECMA-48마다 [5]: 8.3.117 더블 언더라인을 표시하지만 대신 [43]4.17 이전 버전의 Linux 커널 콘솔을 포함한 여러 터미널에서 굵은 글씨로 강조 표시를 해제합니다.
22 정상 강도 굵지도 않고 희미하지도 않으며 강도가 적용되면 색이 변합니다.
23 이탤릭체도 블랙글씨도 없음
24 밑줄 없음 단일 밑줄도 이중 밑줄도 없음
25 점멸하지 않다 깜박임 끄기
26 비례 간격 ITU T.61 및 T.416, 단말기에서 사용할 수 없음
27 반전 없음
28 드러내다 숨김이 없다
29 소거되지 않음
30–37 전경색 설정
38 전경색 설정 다음 인수는5;n또는2;r;g;b
39 기본 전경색 구현 정의(표준에 따름)
40–47 배경색 설정
48 배경색 설정 다음 인수는5;n또는2;r;g;b
49 기본 배경색 구현 정의(표준에 따름)
50 비례 간격 사용 안 함 T.61 및 T.416
51 프레임 민트에서 '[44]에모지 바리에이션 셀렉터'로 구현.
52 동그라미로 둘러싸였다
53 오버라인 Terminal.app에서는 지원되지 않습니다.
54 테두리도, 테두리도 없습니다.
55 오버라인 없음
58 밑줄 색상 설정 표준이 아닙니다.Kitty, VTE, mintty 및 iTerm2에서 구현됩니다.[40][41]다음 인수는 또는 입니다.
59 기본 밑줄 색상 표준이 아닙니다.Kitty, VTE, mintty 및 iTerm2에서 구현됩니다.[40][41]
60 표의문자 밑줄 또는 오른쪽 선 거의 지원되지 않음
61 표의문자는 오른쪽의 이중 밑줄 또는 이중선
62 표의문자의 오버라인 또는 왼쪽 라인
63 표의문자는 왼쪽의 이중 오버라인 또는 이중선입니다.
64 표의 문자 강조 표시
65 IDEO그램 속성 없음 모든 효과 리셋6064
73 위첨자 [44] 제품으로만 구현
74 서브스크립트
75 위첨자도 아래첨자도 없음
90–97 밝은 전경색 설정 표준이 아닙니다. 원래 axterm에[29] 의해 구현되었습니다.
100–107 밝은 배경색 설정

색상

3비트 및 4비트

원래 사양은 8가지 색상으로 이름만 붙였습니다.SGR 파라미터 30~37은 전경색을, 40~47은 배경을 선택했습니다.상당수의 단말기가 다른 폰트가 아닌 밝은 색상으로 "bold"(SGR 코드 1)를 구현하여 8개의 전경색을 추가하였다.통상, 이것들을 배경색으로 취득할 수 없습니다만, 경우에 따라서는 반전 비디오(SGR 코드 7)로 취득할 수 있습니다.예: 흰색 바탕에 검은색 문자를 받는 방법 사용ESC[30;47m, 빨간색으로 사용ESC[31m, 선홍색으로 사용하다ESC[1;31m색상을 기본값으로 리셋하려면ESC[39;49m(일부 단말기에서는 지원되지 않음)또는 모든 Atribute를 사용하여 리셋합니다.ESC[0m이후 단말기는 90~97과 100~107의 밝은 색상을 직접 지정할 수 있는 기능을 추가했습니다.

하드웨어가 8비트 DAC(Digital-to-Analog Converters)를 사용하기 시작했을 때 이들 이름에 24비트 컬러 번호를 할당한 소프트웨어가 여러 개 있었습니다.다음 표에 일반적인 하드웨어 및 소프트웨어에 대해 DAC로 전송되는 기본값을 나타냅니다.대부분의 경우 설정 가능합니다.[citation needed]

FG BG 이름. VGA[b] 윈도 XP
콘솔
[c]
창문들
PowerShell
[d]
Visual Studio 코드[e] 윈도 10
콘솔
[f]
Terminal.app PUTY mIRC xterm 우분투[g] 이클립스 터미널
30 40 블랙입니다. 0, 0, 0 12, 12, 12 0, 0, 0 1, 1, 1 0, 0, 0
31 41 빨간. 170, 0, 0 128, 0, 0 205, 49, 49 197, 15, 31 194, 54, 33 187, 0, 0 127, 0, 0 205, 0, 0 222, 56, 43 205, 0, 0
32 42 초록의 0, 170, 0 0, 128, 0 13, 188, 121 19, 161, 14 37, 188, 36 0, 187, 0 0, 147, 0 0, 205, 0 57, 181, 74 0, 205, 0
33 43 노란 색 170, 85, 0[h] 128, 128, 0 238, 237, 240 229, 229, 16 193, 156, 0 173, 173, 39 187, 187, 0 252, 127, 0 205, 205, 0 255, 199, 6 205, 205, 0
34 44 파랑색 0, 0, 170 0, 0, 128 36, 114, 200 0, 55, 218 73, 46, 225 0, 0, 187 0, 0, 127 0, 0, 238[45] 0, 111, 184 0, 0, 238
35 45 마젠타 170, 0, 170 128, 0, 128 1, 36, 86 188, 63, 188 136, 23, 152 211, 56, 211 187, 0, 187 156, 0, 156 205, 0, 205 118, 38, 113 205, 0, 205
36 46 청록색 0, 170, 170 0, 128, 128 17, 168, 205 58, 150, 221 51, 187, 200 0, 187, 187 0, 147, 147 0, 205, 205 44, 181, 233 205, 0, 205
37 47 하얀색 170, 170, 170 192, 192, 192 229, 229, 229 204, 204, 204 203, 204, 205 187, 187, 187 210, 210, 210 229, 229, 229 204, 204, 204 229, 229, 229
90 100 밝은 검정(회색) 85, 85, 85 128, 128, 128 102, 102, 102 118, 118, 118 129, 131, 131 85, 85, 85 127, 127, 127 127, 127, 127 128, 128, 128 0, 0, 0
91 101 선홍색 255, 85, 85 255, 0, 0 241, 76, 76 231, 72, 86 252, 57, 31 255, 85, 85 255, 0, 0
92 102 밝은 녹색 85, 255, 85 0, 255, 0 35, 209, 139 22, 198, 12 49, 231, 34 85, 255, 85 0, 252, 0 0, 255, 0
93 103 밝은 노란색 255, 255, 85 255, 255, 0 245, 245, 67 249, 241, 165 234, 236, 35 255, 255, 85 255, 255, 0
94 104 밝은 파란색 85, 85, 255 0, 0, 255 59, 142, 234 59, 120, 255 88, 51, 255 85, 85, 255 0, 0, 252 92, 92, 255[46] 0, 0, 255 92, 92, 255
95 105 밝은 마젠타 255, 85, 255 255, 0, 255 214, 112, 214 180, 0, 158 249, 53, 248 255, 85, 255 255, 0, 255
96 106 밝은 청록색 85, 255, 255 0, 255, 255 41, 184, 219 97, 214, 214 20, 240, 240 85, 255, 255 0, 255, 255
97 107 밝은 흰색 255, 255, 255 229, 229, 229 242, 242, 242 233, 235, 235 255, 255, 255
8비트

256 색상의 룩업테이블이 그래픽카드로 보편화됨에 따라 에스케이프 시퀀스가 추가되어 256 [citation needed]색상의 사전 정의된 세트에서 선택되게 되었습니다.

ESC[38;5;nnmm] 여기서 n은 ESC[48;5;nnmm] 아래의 표에서 숫자이다. 배경색 0-7 선택: 표준색(ESC[30-37m] 8-15: 고강도 색상(ESC [90–97m] 16-231: 6 × 6 × 6 × 6 x 6 r + 36)스텝

ITU의 T.416 정보기술 - 오픈 문서 아키텍처(ODA) 및 교환 형식:문자 컨텐츠[47] 아키텍처에서는 대신 ':'를 구분 문자로 사용합니다.

ESC [ 38 : 5 : n m m ]전경색을 선택합니다.여기서 n은 ESC [ 48 : 5 : n m m ]배경색 선택
256 컬러 모드 — 전경: ESC[38;5;#m 배경: ESC[48;5;#m]
표준 색상 고휘도 색상
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
216 색
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
그레이스케일 컬러
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

또, 같은 이스케이프 시퀀스를 사용한88 색 부호화도, 에 나타나 있습니다만, 호환성이 없습니다).rxvt그리고.xterm-88color·컬러 코드 외에 스킴에 대해서는 잘 알려져 있지 않습니다.4×4×4 컬러 큐브를 사용합니다.

24비트

16~24비트 컬러의 '진짜 컬러' 그래픽 카드가 보편화되면서 응용 프로그램이 24비트 컬러를 지원하기 시작했다.이스케이프 시퀀스로 24비트 전경 및 배경색 설정을 지원하는 터미널 에뮬레이터는 Xterm,[29] KDE의 Konsole [48][49]및 iTerm과 GNOME [citation needed]터미널을 포함한 모든 libvte 기반 [50]터미널을 포함합니다.

ESC[38;2;rr;g⟩;b mm RGB 전경색 선택 ESC[48;2;r⟩;g⟩;b mm RGB 배경색 선택]

이 구문은 ITU의 T.416 ODA(Open Document Architecture) 및 교환 형식을 기반으로 합니다.ISO/IEC 8613-6으로 채택되었지만 상업적인 실패로 끝난 캐릭터 콘텐츠 아키텍처.[47][citation needed]ODA 버전은 더 정교하기 때문에 호환되지 않습니다.

  • '2' 뒤에 있는 매개 변수, 즉 r, g, b는 옵션입니다.
  • 위와 같이 세미콜론은 콜론으로 대체됩니다.
  • 선두의 "colorspace ID"[29]가 있습니다.색공간 ID의 정의는 이 문서에 포함되어 있지 않으므로 지정되지 않은 기본값을 나타내려면 공백일 수 있습니다.
  • 48보다 뒤의 '2' 값은 빨간색-녹색-청색 형식(및 위의 '5'는 0-255 색인 색상의 경우)을 지정하며, 정의된 구현의 경우 '0'과 투과적인 경우 '1'을 선택할 수 있습니다.이 두 가지 모두 파라미터가 없습니다.「3」은 시안 마젠타 노란색 스킴을 사용하여 색상을 지정하고, 「4」는 시안 마젠타입니다.후자는 검은색 [47]구성 요소에 대해 "미사용"으로 표시된 위치를 사용한다.
ESC [ 38 : 2 : ]"Color-Space-ID" : "r" : "g" : "b" : "unused" :"CS 허용 오차":【공차 관련 색공간】「CIELUV」의 경우 0, 「CIELAB」의 경우 1 mRGB 전경색 ESC를 선택한다[48:2 :"Color-Space-ID" : "r" : "g" : "b" : "unused" :"CS 허용 오차":【공차 관련 색공간】「CIELUV」는 0, 「CIELAB」는 1 m배경색 선택

ITU-RGB 변동은 xterm에서 지원되며 색공간 ID 및 허용오차 파라미터는 무시됩니다.세미콜론을 사용한 간단한 구성은 처음에 [29]: Can I set a color by its number? Konsole에 있습니다.

색상 지원과 관련된 Unix 환경 변수

termcap과 termfo가 색상 지원을 나타낼 수 있는 이전에는 S-Lang 라이브러리가 사용되었습니다.$COLORTERM터미널 에뮬레이터가 색상을 사용할 수 있는지 여부(나중에 256비트 [51]컬러로 재해석됨)와 24비트 [52][53]컬러를 지원하는지 여부를 나타냅니다.이 시스템은 문서화가 잘 되지 않았지만 Fedora와 RHEL이 현재 [54]업데이트된 라이브러리를 쿼리하는 것에 비해 더 단순하고 보편적인 탐지 메커니즘으로 사용하는 것을 고려할 정도로 널리 보급되었다.그러나 gnome-terminal 3.14는 이 변수가 잘못되어 [51]더 이상 필요하지 않다고 판단했기 때문에 이 변수를 삭제했습니다.

일부 터미널 에뮬레이터(urxvt, konsole) 세트$COLORFGBG단말기의 색상표를 보고한다(조명 대 어두운 배경).이 동작은 S-Lang에서[53] 시작되어 vim에서 사용됩니다.다시 말하지만 gnome-terminal은 이 동작을 추가하기를 거부합니다.이는 더 "적절한" xterm OSC 4/10/11 시퀀스가 이미 [55]존재하기 때문입니다.

OSC(Operating System Command) 시퀀스

대부분의 운영체제명령어 시퀀스는 Xterm에 의해 정의되지만 많은 시퀀스는 다른 터미널 에뮬레이터에 의해서도 지원됩니다.과거의 이유로 Xterm은 명령어를 표준과 함께 종료할 수 있습니다.ST예를 들어 Xterm을 사용하면 창 제목을 다음과 같이 설정할 수 있습니다.[29]ESC ]0;this is the window title BEL.

비 xterm 확장자는 하이퍼링크입니다.ESC ]8;;link ST2017년부터 [56][discuss]VTE, iTerm2,[56] [57]민트티에서 사용되고 있습니다.

리눅스 콘솔은ESC ] P n rr gg bb팔레트를 변경합니다.어플리케이션으로 하드코드 되어 있는 경우는, 다른 [58]단말기가 행업 할 가능성이 있습니다.단, 추가STLinux 에서는 무시되고 다른 [citation needed]단말에서는 무시해도 좋을 정도의 시퀀스를 형성합니다.

FS 이스케이프 시퀀스

이 경우,ESC0x60~0x7E 범위의 바이트 뒤에 이어지는 이스케이프 시퀀스는 타입입니다.Fs이 유형은 ISO-IR 레지스트리에[59] 개별적으로 등록된 제어 기능에 사용되며, 따라서 다른 C1 제어 코드 세트가 사용되는 컨텍스트에서도 사용할 수 있습니다.구체적으로는 ISO/IEC JTC 1/SC 2에 의해 승인되고 ISO 또는 ISO 인정 [28]: 6.5.1 기관에 의해 표준화되는 단일 제어 기능에 해당한다.그 중 일부는 ECMA-35(ISO 2022/ANSI X3.41)로 지정되며, 다른 일부는 ECMA-48(ISO 6429/ANSI X3.64)[28]: 6.5.4 로 지정됩니다.ECMA-48은 이러한 기능을 "독립 제어 기능"[5]: 5.5 이라고 합니다.

일부 유형 Fs(독립 기능) 단말기가 인식하는 ANSI 이스케이프 시퀀스(전체 목록이 아님)
아바르 이름. 영향
ESC c RIS 초기 상태로 리셋 단말기를 원래 [29]상태로 완전히 리셋합니다.여기에는 (해당하는 경우) 그래픽 렌더링 리셋, 표 정리 중지 클리어, 기본 글꼴 [60]리셋 등이 포함될 수 있습니다.

Fp 이스케이프 시퀀스

이 경우,ESC0x30 ~0x3F 범위의 바이트 뒤에 이어지는 이스케이프 시퀀스는 타입입니다.Fp최대 16개의 개인 사용 제어 [28]: 6.5.3 기능을 위해 별도로 설정됩니다.

VT100, 그 후계자 및 xterm 등의 터미널 에뮬레이터에 의해 인식되는 일부 타입 Fp(프라이빗 용도의) 이스케이프 시퀀스
아바르 이름. 영향
ESC 7 DECSC DEC 커서 저장 커서 위치, 인코딩 시프트 상태 및 형식 [61][29]속성을 저장합니다.
ESC 8 DECRC DEC 복원 커서 이전 DECSC에서 커서 위치, 부호화 시프트 상태 및 포맷 속성을 복원합니다(있는 경우). 그렇지 않으면 모두 기본값으로 [61][29]리셋됩니다.

nF 이스케이프 시퀀스

이 경우,ESC0x20 ~0x2F 범위의 바이트 뒤에 이어지는 이스케이프 시퀀스는 타입입니다.nF. 해당 바이트 뒤에 이 범위에서 임의의 수의 추가 바이트가 이어지며 0x30~0x7E 범위의 바이트가 이어집니다.이러한 이스케이프 시퀀스는 첫 번째 바이트의 하위 4비트에 의해 하위 분류됩니다(예: "type").2F첫 번째 바이트가 0x22인 시퀀스의 경우 및 최종 바이트가 0x30~0x3F 범위에 있는지 여부에 따라 프라이빗 사용을 나타냅니다(예: "type").2Fp") 또는 "type" (예: "type")2Ft"[28]: 13.2.1 ) 。

이 타입의 이스케이프시퀀스는 ISO-2022-JP에서 사용되는 것과 같은 ANSI/ISO 코드 스위칭메커니즘에 주로 사용됩니다(타입 제외).3F시퀀스(첫 번째 중간 바이트가 다음과 같은 경우)0x23개별 제어 기능에 사용됩니다.유형3Ft시퀀스는 추가 ISO-IR 등록 개별 제어 [28]: 6.5.2 기능을 위해 예약되며, 반면,3Fp시퀀스는 개인 사용 제어 [28]: 6.5.3 기능에 사용할 수 있습니다.타입과 달리Fs시퀀스, 유형 없음3Ft시퀀스가 [59]현재 등록되어 있습니다.

단말기가 인식하는 일부 타입 0Ft(알림) ANSI 이스케이프 시퀀스
아바르 이름. 영향
ESC SP F
  • ACS6
  • S7C1T
  • 공지 코드 구조 6
  • 호스트에 7비트 C1 제어 문자 전송
ECMA-35(ANSI X3.41/ISO 2022)[28]: 15.2 에 정의되어 있습니다.함수 키가 8비트 C1 [29]코드 대신 ESC + 문자를 보내도록 합니다.
ESC SP G
  • ACS7
  • S8C1T
  • 공지 코드 구조 7
  • 호스트에 8비트 C1 제어 문자 전송
ECMA-35에 [28]: 15.2 정의되어 있습니다.기능 키가 8비트 C1 코드를 [29]전송하도록 합니다.
VT100, 그 후계기 및 xterm 등의 터미널 에뮬레이터에 의해 인식되는 일부 타입 3Fp(개인용) 이스케이프 시퀀스
아바르 이름. 영향
ESC # 3 DECDHL DEC 더블 하이트 레터, 상반신 현재 행에서 두 배 높이의 문자를 사용하도록 설정합니다.이 코드는 상위 [62]절반을 위한 것입니다.
ESC # 4 DECDHL DEC 더블 하이트 레터(하반) 현재 행에서 두 배 높이의 문자를 사용하도록 설정합니다.이 코드는 하반신을 [62]위한 것입니다.
ESC # 5 인식하다 DEC 단일 폭 회선 현재 행에 기본 [63][29]동작별로 단일 너비 문자를 사용하도록 설정합니다.
ESC # 6 DECDWL DEC 배폭선 현재 행에서 두 배 너비 문자를 사용하도록 하고 [64][29]행의 후반부에 있는 모든 문자를 삭제합니다.

CSI 2 J— 그러면 화면이 지워지고 일부 디바이스에서는 커서가 y,x 위치 1.1(왼쪽 상단 모서리)에 위치합니다.

CSI 32 m- 이렇게 하면 텍스트가 녹색으로 바뀝니다.녹색은 어둡고 칙칙한 녹색일 수 있으므로 시퀀스에서 굵은 글씨(Bold)를 사용하도록 설정할 수 있습니다.CSI 1 m밝은 녹색으로 만들거나 결합해서CSI 32 ; 1 m. 일부 구현에서는 Bold 상태를 사용하여 글자를 밝게 만듭니다.

CSI 0 ; 6 8 ; "DIR" ; 13 p이것에 의해, 키보드 버퍼에 문자열 「DIR」와 ENTER 를 송신하는 키 F10 이 할당됩니다.이 문자열은 DOS 명령줄에 현재 디렉토리의 내용이 표시됩니다.(MS-DOS ANSI).SYS만)이것은 때때로 ANSI 폭탄에 사용되었다.이것은 개인사용 코드(문자 p로 표시됨)로, 비표준 확장자를 사용하여 문자열 값 파라미터를 포함합니다.이 기준서의 문자에 따르는 순서는 D로 끝나는 것으로 간주한다.

CSI s: 커서 위치가 저장됩니다.시퀀스 사용CSI u원래 위치로 복원됩니다.현재 커서 위치가 7(y) 및 10(x)이라고 가정합니다.순서CSI s이 두 숫자를 저장합니다.이제 시퀀스를 사용하여 20(y) 및 3(x)과 같은 다른 커서 위치로 이동할 수 있습니다.CSI 20 ; 3 H또는CSI 20 ; 3 fCSI u 시퀀스를 사용하면 커서 위치가 7(y) 및 10(x)로 돌아갑니다.일부 단말기는 DEC 시퀀스를 필요로 합니다.ESC 7/ESC 8대신 더 널리 지원되고 있습니다.

셸 스크립팅 중

ANSI 이스케이프 코드는 구문 강조 표시를 제공하기 위해 UNIX 및 UNIX 유사 단말기에서 자주 사용됩니다.예를 들어 호환되는 단말기에서 다음 list 명령은 파일 및 디렉터리 이름을 유형별로 컬러 코딩합니다.

ls --color

사용자는 이스케이프 코드를 표준 출력 또는 표준 오류의 일부로 포함시킴으로써 스크립트에 적용할 수 있습니다.예를 들어, 다음 GNU sed 명령어는 "WARN"으로 시작하는 단어를 포함하는 행을 리버스 비디오로 표시하고 "ERR"로 시작하는 단어를 어두운 빨간색 배경에 밝은 노란색으로 표시함으로써 make 명령어의 출력을 장식합니다(문자 대소문자는 무시됩니다).코드의 표현이 [65]강조 표시됩니다.

2 > & 1 sed - e s/ 를 만듭니다.*\bWARN.*/\x1b[7m&\x1b[0m/i] - e의 s/.*\bERR.*/\x1b[93;41m&\x1b] 

다음 Bash 기능은 사용자가 키를 누를 때까지 [66](반전 및 일반 비디오 모드 코드를 번갈아 전송하여) 단말기를 깜박입니다.

flasher () { while true; do printf \\e[?5시간; sleep 0.1; printf \\e[?5l; read -s -n1 -t1 && break; done; } 

이것은 프로그래머에게 다음과 같이 긴 명령어가 종료되었을 때 경고하기 위해 사용할 수 있습니다.make ; flasher 를 클릭합니다.[67]

printf \\033c

명령어와 마찬가지로 콘솔이 리셋됩니다.reset최신 Linux 시스템에서는 사용할 수 있지만 오래된 Linux 시스템이나 다른 (Linux 이외의) UNIX 버전에서도 사용할 수 있습니다.

주식회사

Output of example program on Gnome Terminal
#실패하다 <stdio.h>  인트 주된(무효) {     인트 i, j, n;      위해서 (i = 0; i < > 11; i++) {         위해서 (j = 0; j < > 10; j++) {             n = 10 * i + j;             한다면 (n > 108) 브레이크.;             인쇄물("\033[%dm %3d]\033[m], n, n);         }         인쇄물("\n");     }     돌아가다 0; } 

단말 입력 시퀀스

키보드의 특수 키를 누르고 다수의 xterm CSI, DCS 또는 OSC 시퀀스를 출력하면 사용자가 입력한 것처럼 단말기에서 컴퓨터로 CSI, DCS 또는 OSC 시퀀스가 생성되는 경우가 많습니다.

터미널 키에 입력을 입력할 때 일반 메인 영숫자 키보드 영역 밖에서 ANSI 시퀀스로 호스트에 전송할 수 있습니다.커서 키와 같이 동등한 출력 기능을 가진 키의 경우, 이러한 키는 종종 출력 시퀀스를 미러링합니다.그러나 대부분의 키 입력에는 동등한 출력 시퀀스가 없습니다.

부호화 방식에는 여러 가지가 있으며, 불행히도 대부분의 단말기는 다른 방식의 시퀀스를 혼재시키기 때문에 호스트소프트웨어는 임의의 방식을 사용하여 입력 시퀀스를 처리할 수 있어야 합니다.이 문제를 복잡하게 하기 위해 VT 단말기 자체에는 애플리케이션에 의해 전환될 수 있는 일반 모드애플리케이션 모드의 두 가지 방식이 있습니다.

(섹션 표시)

<>char>, ->, 골탄<>esc>,>nochar>, ->, esc<>esc>, <, esc>, ->, esc<>esc>,<>char>, ->, Alt-keypress 또는keycode 순서<>esc>.'[의<>nochar&gt을 말한다.                    ->, Alt-는 경우에는<>esc>.'['(<>modifier>.)<>char>-.> 키코드 시퀀스, <modifier>는 10진수이며 기본값은 1(xterm) <esc> '[]'(<keycode>) '~' 키코드시퀀스, <keycode> 및 <modifier>는 10진수이며 기본값은 1(소수)입니다.

끝 문자가 '~'이고 첫 번째 숫자가 존재해야 하며 키 코드 번호일 경우 두 번째 숫자는 선택적 수식자 값입니다.끝 문자가 문자일 경우 문자는 키 코드 값이고 옵션 번호는 수식자 값입니다.

수식자 값은 기본 1로, 1을 뺀 후 누르면 수식자 키의 비트맵이 됩니다.Meta-Ctrl-Alt-Shift.예를 들어 <esc>[4;2~]는 Shift-End, <esc>[20~]는 펑션키 9, <esc>[5C는 Ctrl+Right]입니다.

즉, 수식자는 다음 숫자의 합계입니다.

키를 눌렀다 번호 댓글
1 항상 추가되고 나머지는 옵션입니다.
시프트 1
(왼쪽) Alt 2
통제 4
메타 8
Vt 순서:<>esc>, -LSB- 1~-홈<>esc>, -LSB- 16~-<>esc>, -LSB- 31~-F17<>esc>, -LSB- 2~-삽입<>esc>, -LSB- 17~-F6키<>esc>, -LSB- 32~-F18<>esc>, -LSB- 3~-삭제하라<>esc>, -LSB- 18~-b<>esc>, -LSB- 33~-F19<>esc>, -LSB- 4~-끝<>esc>, -LSB- 19~-F8을<>esc&.그레이트;-LSB- 34~-F20<>esc>, -LSB- 5~-페이지 업<>esc>, -LSB- 20~-F9<>esc.>-LSB- 35~-<>esc>, -LSB- 6~-페이지 다운<>esc>, -LSB- 21~-F10<>esc>, -LSB- 7~-홈<>esc>, -LSB- 22~-<>esc>, -LSB- 8~-끝<>esc>, -LSB- 23~-F<>esc>, -LSB- 9~-<>esc>, -LSB- 24~-F12키<>esc>, -LSB- 10~- 심하<>esc>, -LSB- 25~-F13<>esc&gt을 말한다.-LSB- 11~-F1<>esc>, -LSB- 26~-F14<>esc>, -LSB- 12~-F2.<>esc>, -LSB- 27~-<>esc>, -LSB- 13~-F3<>esc>, -LSB- 28~-F15<>esc>, -LSB- 14~-F4<>esc>, -LSB- 29~-F16<>esc>, -LSB- 15~-F5키<>esc>, -LSB- 30~-xterm 순서:<>esc&gt을 말한다.경우에는 A-업<>esc>.[K-<>esc>.[U-<>esc>.[B-다운<>esc>.[L-<>esc>.[V-<>esc>.[C- 맞아요.<>esc>.[M-<>esc>.[W-<>esc>.[D-왼쪽<>esc>.[N-<>esc>.[X-<>esc>.[E-<>esc&gt을 말한다.[O-<>esc>.[Y-<>esc>.[F-끝<>esc>, -LSB- 1P-F1<>esc>.[Z-<>esc>.[G-Keypad 5<>esc>, -LSB- 1Q-F2<>esc&gt을 말한다.[H-홈<>esc>, -LSB- 1R-F3<>esc&gt을 말한다.나는- <esc> [1S - F4 <esc> [ J - <esc > [ T -

<esc>[A에서 <esc>[D]는 ANSI 출력 시퀀스와 동일합니다.보통 수식 키를 누르지 않으면 <수정자>는 생략되지만 대부분의 구현에서는 항상 F1-F4의 <수정자>가 출력됩니다.( 드래프트섹션)

Xterm에는 DEC의 VT단말기 및 [29]에뮬레이트된 기타 다양한 단말기의 다양한 기능 키 및 마우스 입력 시퀀스 스킴에 관한 포괄적인 문서 페이지가 있습니다.Thomas Dickey는 시간이 [68]지남에 따라 많은 지원을 추가했습니다.또한 비교를 [69]위해 다른 터미널 에뮬레이터가 사용하는 기본 키 목록도 유지합니다.

  • Linux 콘솔에서는 특정 기능 키가 폼의 시퀀스를 생성합니다.CSI [ charCSI 시퀀스는 에서 종료됩니다.[.
  • 이전 버전의 터미네이터 생성SS3 1; modifiers charF1~F4를 수식어로 눌렀을 때.장애가 발생한 동작[citation needed]GNOME 터미널에서 복사되었습니다.
  • xterm 응답CSI row ; column R커서 위치를 묻는 경우CSI 1 ; modifiers RF3 키를 수식어와 함께 누르면 행 == 1인 경우 충돌합니다.이는 ? 개인 수식자를 다음과 같이 사용하면 피할 수 있습니다.CSI ? 6 n이는 응답에 반영됩니다.CSI ? row ; column R.
  • 많은 터미널 프리펜드ESCAlt 키를 누른 상태로 입력된 모든 문자를 표시합니다.이로 인해 대문자 및 기호에 모호성이 생깁니다.@[\]^_C1 [clarification needed]코드를 형성합니다.
  • Konsole에서 생성SS3 modifiers charF1~F4를 [clarification needed]수식어로 눌렀을 때.

「 」를 참조해 주세요.

메모들

  1. ^ 화면 디스플레이는 새 화면 내용을 모두 하단에 그려 이전 화면을 위로 스크롤하여 이전 텍스트를 모두 지우는 방식으로 대체할 수 있습니다.사용자는 스크롤을 볼 수 있으며 하드웨어 커서는 맨 아래에 남아 있습니다.일부 초기 배치 파일은 이러한 방식으로 기본적인 "전체 화면" 표시를 실현했습니다.
  2. ^ PC 부팅 시 사용되는 일반적인 색상으로 16엔트리 컬러 테이블을 사용한 텍스트모드입니다.EGA/VGA 그래픽 모드에서는 색상이 다릅니다.
  3. ^ Windows XP에서 Windows 8.1로 표시됨
  4. ^ PowerShell 6까지
  5. ^ 디버깅 콘솔, "Dark+" 테마
  6. ^ Campbell 테마. Windows 10 버전 1709에서 사용됩니다.PowerShell 6에서도 사용됩니다.
  7. ^ 가상 터미널의 경우 /etc/vtrgb에서.
  8. ^ ANSI 등의 CGA 호환 하드웨어를 기반으로 한 단말기.DOS에서 실행되는 SYS. 이 일반 명암 전경색은 주황색으로 렌더링됩니다.CGA RGBI 모니터에는 녹색 컴포넌트를 줄임으로써 어두운 노란색을 오렌지/갈색으로 변경하는 하드웨어가 포함되어 있습니다.를 들어 이 ansi 아트 Archived 2011년 7월 25일 Wayback Machine을 참조하십시오.

레퍼런스

  1. ^ a b "Standard ECMA-48: Control Functions for Character-Imaging I/O Devices" (PDF) (Second ed.). Ecma International. August 1979. Brief History.
  2. ^ Williams, Paul (2006). "Digital's Video Terminals". VT100.net. Retrieved 17 August 2011.
  3. ^ Heathkit Company (1979). "Heathkit Catalog 1979". Heathkit Company. Archived from the original on 13 January 2012. Retrieved 4 November 2011.
  4. ^ "Withdrawn FIPS Listed by Number" (PDF). National Institute of Standards and Technology. 15 December 2016. Retrieved 2 January 2022.
  5. ^ a b c d e f g h i j k l m n o p "Standard ECMA-48: Control Functions for Coded Character Sets" (PDF) (Fifth ed.). Ecma International. June 1991.
  6. ^ MITS (August 1975). "World's Most Inexpensive BASIC language system". Popular Electronics. Vol. 8, no. 2. Ziff Davis. p. 1.
  7. ^ Hogan, Thom; Iannamico, Mike (1981). Osborne 1 User's Guide. Osborne Computer Corporation. p. 350.
  8. ^ The Kaypro user's guide. Kaypro Corporation. 1984. p. 56.
  9. ^ System programmer's guide for the TRS-80 Model 4/4P using Montezuma Micro CP/M 2.2 (PDF). Montezuma Micro. 1985. p. 11.
  10. ^ "CP/M 2.2 Manual". Xerox 820 Information Processor. Xerox. 1981. p. 7.
  11. ^ Gilmour, Jean (1985). The PCW8256 and PCW8512 User Guide. AMSOFT. pp. 56, 139.
  12. ^ "Appendix—ANSI escape sequences". Z-89 Computer System Operation Manuals. Zenith Data Systems. 1981. p. 112.
  13. ^ SoftCard. Vol. 1. Microsoft. 1980. pp. 18, 31, 32, 42.
  14. ^ Softcard—Software and hardware details (PDF). Microsoft. 1980. p. 15.
  15. ^ Mefford, Michael (7 February 1989). "ANSI.com: Download It Here". PC Magazine. Archived from the original on 14 October 2010. Retrieved 10 August 2011.
  16. ^ Kegel, Dan; Auer, Eric (28 February 1999). "Nansi and NNansi – ANSI Drivers for MS-DOS". Dan Kegel's Web Hostel. Retrieved 10 August 2011.
  17. ^ "PTS-DOS 2000 Pro User Manual" (PDF). Buggingen, Germany: Paragon Technology GmbH. 1999. Archived (PDF) from the original on 12 May 2018. Retrieved 12 May 2018.
  18. ^ Günther, Jens; Ernst, Tobias (25 April 2004) [1996]. Ellsässer, Wolfgang (ed.). "Inoffizielle deutschsprachige PTS-DOS-FAQ (PTS/FAQD)" [Inofficial German PTS-DOS FAQ] (in German). Retrieved 2 October 2018.
  19. ^ CCI Multiuser DOS 7.22 GOLD Online Documentation. Concurrent Controls, Inc. (CCI). 10 February 1997. HELP.HLP.
  20. ^ Hood, Jason (2005). "Process ANSI escape sequences for Windows console programs". Jason Hood's Home page. Retrieved 9 May 2013.
  21. ^ "colorama · PyPI". Python Package Index. Retrieved 27 February 2022.
  22. ^ bitcrazed. "Console Virtual Terminal Sequences - Windows Console". docs.microsoft.com. Retrieved 30 May 2018.
  23. ^ "PowerShell Help: About Special Characters".
  24. ^ "Windows Console and Terminal Ecosystem Roadmap". Microsoft. 2018. Retrieved 13 March 2021. this includes retiring the classic console host user interface from its default position in favor of Windows Terminal, ConPTY, and virtual terminal sequences.
  25. ^ "Printer and terminal escape codes". Concise Atari ST 68000 Programming Guide. Archived from the original on 20 September 2016. Retrieved 22 June 2020.
  26. ^ "Amiga Printer Command Definitions". Commodore. Retrieved 10 July 2013.
  27. ^ "Escape Sequence - OpenVMS Wiki".
  28. ^ a b c d e f g h i j k l "Standard ECMA-35: Character Code Structure and Extension Techniques" (PDF) (Sixth ed.). Ecma International. 1994.
  29. ^ a b c d e f g h i j k l m n o p Moy, Edward; Gildea, Stephen; Dickey, Thomas (2019). "XTerm Control Sequences (ctlseqs)". Invisible Island.
  30. ^ Frank da Cruz; Christine Gianone (1997). Using C-Kermit. Digital Press. p. 278. ISBN 978-1-55558-164-0.
  31. ^ "SCOSC—Save Current Cursor Position". VT510 Video Terminal Programmer Information. DEC.
  32. ^ "DECSLRM—Set Left and Right Margins". VT510 Video Terminal Programmer Information. DEC.
  33. ^ "SCORC—Restore Saved Cursor Position". VT510 Video Terminal Programmer Information. DEC.
  34. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "XTerm Control Sequences". Functions using CSI, ordered by the final character(s). Retrieved 4 February 2022.
  35. ^ Conrad Irwin (April 2013). "bracketed paste mode". cirw.in.
  36. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "XTerm Control Sequences". Bracketed Paste Mode. Retrieved 4 February 2022.
  37. ^ "console_codes(4) - Linux manual page". man7.org. Retrieved 23 March 2018.
  38. ^ a b "screen(HW)". SCO OpenServer Release 5.0.7 Manual. 11 February 2003.
  39. ^ "Bug 791596 – Thoughts about faint (SGR 2)". bugzilla.gnome.org.
  40. ^ a b c "Curly and colored underlines (#6382) · Issues · George Nachman / iterm2". GitLab.
  41. ^ a b c "Extensions to the xterm protocol". kitty documentation. Retrieved 1 July 2020.
  42. ^ "console-termio-realizer". jdebp.uk.
  43. ^ "console_codes(4)". Linux Programmer's Manual. 5.10. Linux man-pages project.
  44. ^ a b "mintty/mintty: Text attributes and rendering". GitHub.
  45. ^ 2004년 7월에 0, 0, 205에서 변경
  46. ^ 2004년 7월에 0, 0, 255에서 변경
  47. ^ a b c "T.416 Information technology - Open Document Architecture (ODA) and interchange format: Character content architectures".
  48. ^ "color-spaces.pl (a copy of 256colors2.pl from xterm dated 1999-07-11)". KDE. 6 December 2006.[영구 데드링크]
  49. ^ "README.moreColors". KDE. 22 April 2010.
  50. ^ "libvte's bug report and patches: Support for 16 million colors". GNOME Bugzilla. 4 April 2014. Retrieved 5 June 2016.
  51. ^ a b "Bug #1429584 "gnome-terminal doesn't set $COLORTERM from 3.14 on..." : Bugs : gnome-terminal package : Ubuntu". Launchpad. $COLORTERM should not be necessary ever. [...] COLORTERM's semantics have nothing to do with 256 color support per se, it was a mere coincidence that all terminals that set this variable also supported 256 colors.
  52. ^ "Midnight Commander: lib/tty/color-slang.c". Fossies.
  53. ^ a b Dickey, Thomas E. (2017). "NCURSES — comments on S-Lang". invisible-island.net.
  54. ^ "Features/256 Color Terminals - Fedora Project Wiki". Fedora Project. Archived from the original on 4 October 2012.
  55. ^ "Bug 733423 – Please set COLORFGBG environment variable for automatic color detection". bugzilla.gnome.org.
  56. ^ a b Koblinger, Egmont. "Hyperlinks (a.k.a. HTML-like anchors) in terminal emulators". GitHub Gists.
  57. ^ "mintty/mintty: Control Sequences". GitHub.
  58. ^ "console_codes — Linux console escape and control sequences". Linux Programmer's Manual.
  59. ^ a b ISO-IR: ISO/IEC International Register of Coded Character Sets To Be Used With Escape Sequences (PDF). ITSCJ/IPSJ.
  60. ^ ISO/TC 97/SC 2 (30 December 1976). Reset to Initial State (RIS) (PDF). ITSCJ/IPSJ. ISO-IR-35.
  61. ^ a b Digital. "DECSC—Save Cursor". VT510 Video Terminal Programmer Information.
  62. ^ a b ANSI Escape sequences - VT100 / VT52, archived from the original on 27 February 2009, retrieved 21 August 2020
  63. ^ Digital. "DECSWL—Single-Width, Single-Height Line". VT510 Video Terminal Programmer Information.
  64. ^ Digital. "DECDWL—Double-Width, Single-Height Line". VT510 Video Terminal Programmer Information.
  65. ^ "Chapter 9. System tips". debian.org.
  66. ^ "VT100.net: Digital VT100 User Guide". Retrieved 19 January 2015.
  67. ^ "bash – How to get a notification when my commands are done – Ask Different". Retrieved 19 January 2015.
  68. ^ Dickey, Thomas. "XTerm FAQ: Comparing versions, by counting controls". Invisible Island. Retrieved 25 January 2020.
  69. ^ Dickey, Thomas (2016). "Table of function-keys for XTerm and other Terminal Emulators". Invisible Island. Retrieved 25 January 2020.

외부 링크