터미널을 원시 모드로 설정했을 때 예기치 않은 들여 쓰기 동작 – 왜 이런 일이 발생합니까?


27

내가 읽은 내용에 따라 터미널이 원시 모드 일 때 문자는 터미널 드라이버에서 처리되지 않지만 직접 전송됩니다.

명령을 사용하여 터미널을 원시 모드로 설정하고 stty raw더 이상 공간이 없을 때까지 출력이 오른쪽으로 들여 쓰기되는 것을 알았습니다. 이것이 내가 의미하는 바입니다.

enter image description here

왜 이런 행동이 일어나고 있습니까?!

답변:


45

stty설정 중 하나 ( onlcr)는 터미널 드라이버 에게 줄 바꾸기 (실제로 ASCII 줄 바꿈)를 캐리지 리턴 + 줄 바꿈 으로 변환하도록 지시합니다 .

유닉스 계열 시스템은 끝줄에 줄 바꿈 을 작성 하여 터미널 드라이버가 올바른 일을 할 수있게합니다 ( 줄 바꾸기 를 캐리지 리턴과 줄 바꿈으로 바꿈).

캐리지 리턴은 "왼쪽으로 이동"하고 줄 바꿈은 "아래로 이동"합니다.

터미널을 원시 모드로 설정하면 줄 바꿈 이 더 이상 캐리지 리턴 + 라인 피드로 변환되지 않습니다. 캐리지 리턴이 없으면 계단 효과가 나타납니다.


그리고 깊이있는 뷰를 들어, @ 스테판 - Chazelas가 정말 좋은 게시물을 살펴 가질 수 있습니다 unix.stackexchange.com/questions/151916/... 터미널 변환 (및 부작용)에 대한 일을 인터 휴식을 많이 보여줍니다, . 간단히 말해서 : 대화식 명령을 사용하려면 "ssh -t"만 있지만 스크립트에서 명령이 생성 한 정확한 것을 얻으려면 스크립트에서 ssh 만 사용하십시오 (예 : ssh의 한쪽에 작성되고 읽기 / 쓰기 된 tar 파일). 반대편 : "-t"를 추가하지 마십시오. 그렇지 않으면 바이너리가 엉망이 될 수 있습니다.
Olivier Dulac
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.