[리눅스/유닉스 완전정복 목차]
안녕하세요
이전 포스팅에서 터미널이란 개념과 tty 명령어에 대해 알아봤었는데요!!
tty는 현재 내가 사용하고 있는 가상 콘솔이 뭔지 알려주는 명령어였죠?
오늘은 stty 명령어에 대해 알아볼게요
stty는 Set Teletype의 약자안데요, setting tty로 기억하는게 저는 의미전달도 명확하고 쉽더라고요 ㅋㅋ
혹시나 tty 명령어를 아직 모르시는 분은 아래 포스팅을 참고해주세요
▶ 2019.02.05 - [별걸다하는 IT/리눅스 유닉스] - 가상콘솔이란?(Virtual Consoles)-변환 단축키와 tty 명령어, shutdown 확인 실습
[목차]
1. stty란 무엇인가
2. stty 명령어 언제, 왜 사용하는가?
3. stty 문법
4. stty 특수문자 종류
5. stty 컨트롤 문자 의미 (캐럿문자)
6. 컨트롤 세팅 옵션
stty란 무엇인가
stty는 터미널 라인(terminal line) 설정을 출력하거나 변경하는 명령어입니다.
아무런 인자 없이 stty 명령어만 치면, 보드 전송속도, 회선, stty 기존라인에서 변경된 부분을 보여줍니다.
사실 stty명령어만으로는 잘 쓰지 않고요, 단독으로 사용하기 보단, stty -a로 전체 설정값을 확인하는 걸 좀 더 써요.
■ stty -a
현재 설정된 모든 터미널 정보를 사람이 보기 좋게 보여줍니다.
■ stty -g
이 건 사람이 읽기 좋게 보여주는건 아니고 stty가 읽는 형식으로 출력해주는 명령어예요.
딱 봐도, stty -a가 사람이 읽고 해석하기 좋죠?ㅎㅎ
개인적으로 stty -g는 잘 써본적이 없는 것 같아요
stty 명령어 언제, 왜 사용하나?
stty가 터미널 라인 설정하고 확인하는데 사용한다 했는데 도대체 뭘 설정하는거냐~~~ 할 수 있겠죠?
한 예로, 배시를 사용했던 유저분은 잘 모를 수 있지만,,
ksh같은 셸에서는 Delete키나 백스페이스 키보드를 눌렀을 때 글자가 지워지지 않습니다.
이전 명령어 확인할 때 위화살표 눌러서 불러오죠?
ksh 기본 설정에서 위 화살표 눌러도 이전 명령어가 불러지지 않아요!!
이렇게 단축키가 다르면 사용하는데 있어서 불편할 수 있어요.
이를 터미널 세팅 변경으로 통일해줄 수 있답니다.
stty erase ^H
참고로 위 명령어가 커맨드창에서 한글자 지우는걸 BS(백스페이스) 키보드에 매핑한다는 의미입니다.
erase는 '마지막 입력한 글자를 지운다'라는 특수문자인데요
터미널에 세팅할 수 있는 요소들은 단순히 지우는거 뿐만 아니라 엄청 다양하게 있겠죠??
그래서 위에 사진처럼 엄청 많은 특수문자들이 있습니다.
자세한 내용은 man stty 를 통해 살펴볼 수 있어요.
오늘은 몇 개만 간단히 살펴볼거예요.
stty 문법 - 터미널 설정하기
stty 명령어로 변경한 사항은 현재 로그인 상태에서만 유효하고, 로그아웃하면 사라집니다.
만약에 다음에 로그인했을 때에도 적용될 수 있도록 설정하고 싶으면 .cshrc(csh셸일 경우) / .profile과 같은 환경설정파일에 추가해주면 돼요.
stty 특수 문자
stty 특수문자를 알아봅시다.
특수문자 | 의미 |
erase | 마지막 입력한 글자를 지운다. |
intr | 인터럽트 시그널을 전송한다. (잠시 중지가 아니라 아예 중단) |
kill | 현재 라인을 지운다. |
quit | 종료 신호를 보낸다. |
stop | 출력을 멈춘다. (출력이 빨라서 잠시 정지시킬 때 사용) |
start | 출력을 다시 시작한다. |
susp | 터미널 정지 신호를 보내 현재 작업을 멈춘다. |
dsusp | 입력을 메모리에서 삭제한 후 터미널 정지 신호를 보낸다. (man stty로 있는지 체크) |
reprint (rprnt) | 현재 라인을 다시 보여준다. (man stty로 체크) |
werase | 마지막 단어를 지운다. |
운영체제에 따라서, 특수 문자가 다를 수 있어요
예를 들어 우분투에서는 rprnt로 뜨는데 AIX에서는 reprint로 뜨네요
그러니까 사용하고자 하는 특수문자를 man stty로 확인해주기!
stty 컨트롤 문자 의미
stty erase ^H
erase는 맨 뒤의 글자를 지운다는 특수문자라고 했었죠!
erase를 ^H로 설정한다 라는 뜻인데, ^H가 무엇을 의미할까요?
물론 Ctrl+h도 해당이 되지만, 백스페이스 키보드를 눌렀을 때에도 ^H를 받습니다.
궁금한 사람들이 있을 것 같아서 캐럿문자 목록을 가져왔어요 ㅎㅎ
stty erase ^?
그렇다면 이 명령어는 무슨 뜻일까요?
DEL키를 눌렀을 때 뒤에서부터 한 글자씩 지워진다는 의미입니다.
DEL키를 눌렀을 때 커서 뒤의 글자가 하나씩 지워지는 모습입니다.
컨트롤 세팅 옵션
stty 설정에는 이렇게 특수문자 설정만 있는게 아니예요.
컨트롤 모드, 인풋모드, 출력모드, 윈도우크기 제어 모드 등, 터미널을 제어하기 위한 다양한 옵션들을 지원합니다.
이 또한 man stty에서 확인해볼 수 있어요.
간혹 한글을 지원하는 터미널인데도 한글이 깨지는 경우가 있는데요.
이럴 때에는 stty로 터미널 세팅을 아래처럼 해주면 해결됩니다.
stty cs8 -istrip -parenb
cs8은 8bit 크기의 문자를 의미합니다.
istrip은 8bit의 문자가 입력되면, 상위(8번째)비트를 삭제하고 7비트로 바꾼다는 제어옵션이예요
-istrip은 8bit짜리를 7bit짜리 문자로 벗겨내지 않는다는 의미입니다.
parenb은 패리티비트를 생성하고 감지한다는 건데,
-parenb는 반대로 패리티비트를 생성하지 않는 다는 설정이예요 (disable)
이게 아스키코드 때문에 있는 옵션인데요,
1바이트가 8bits인데 기존 아스키코드는 7비트만 사용하고 나머지 1비트를 패리티비트로 사용했었어요.
그런데 기존 아스키코드로는 다른 언어를 표현하기에 부족했기 때문에 확장형 아스키코드(8bits)가 나오게됐죠.
한글이 깨지지 않도록 문자 인코딩에 8bits를 사용할 수 있게 해주는 설정이라 생각하면 됩니다.
혹시 stty의 모든 옵션과 특수문자들을 살펴보고 싶다면, 아래 페이지를 참고해주세요.
https://man7.org/linux/man-pages/man1/stty.1.html
stty(1) - Linux manual page
stty(1) — Linux manual page STTY(1) User Commands STTY(1) NAME top stty - change and print terminal line settings SYNOPSIS top stty [-F DEVICE | --file=DEVICE] [SETTING]... stty [-F DEVICE | --file=DEVICE] [-a|--all] stty [-F DEVI
man7.org
오늘은 터미널 설정을 확인하고 변경하는 stty 명령어에 대해 살펴봤습니다~~!
도움이 되었다면 공감은 어떤가요? 정보 공유에 큰 동기부여가 됩니다.
'별걸다하는 IT > 리눅스 유닉스' 카테고리의 다른 글
[리눅스/유닉스] 우분투 컴퓨터명 변경하기, 호스트이름 변경하는 법, pc명 변경 (2) | 2022.05.06 |
---|---|
[리눅스/유닉스] expect 사용법, sftp/ssh 다른 서버 원격 제어하기 컨트롤하기 (2) | 2022.01.21 |
[VMmware 오류] VMware Player and Device/Credential Guard are not compatible 해결 -가상화 끄기 (1) | 2022.01.12 |
[리눅스/유닉스] alias, unalias란 무엇인가, 등록 삭제 사용법과 관리파일(profile, cshrc, bashrc) (0) | 2022.01.11 |
가상머신 VMware 버전 수동 업데이트 하는 법 (0) | 2022.01.10 |
최신 댓글