bash에서 이런 일이 발생하는 이유를 찾으려고 노력 중입니다.
글쎄요, 쉽습니다.
$ echo -e 'a\txy\bc' a xc
글쎄요, 쉽습니다.
$ echo -e 'a\txy\b\b\b\b\b\b\b\b\bc' ac xy
글쎄요, 쉽습니다.
$ echo -e 'a\txy\b\b\b\b\b\b\b\b\b\bc' c xy
자, 왜
c
아직 왼쪽 끝이 떨어지지 않았나요?$ echo -e 'a\txy\b\b\b\b\b\b\b\b\b\b\b\bc' c xy
내 예상 결과는 다음과 같습니다
<a tab>xy
그러나 분명히 그렇지 않습니다. 무슨 일이 일어날지 아는 사람 있나요? 감사해요.
답변1
이것은 주문과는 아무런 관련이 없습니다 echo
. cat
이나 다른 프로그램을 사용하여 출력을 작성하면 printf
동일한 동작을 볼 수 있습니다. 이것은 당신의 한 측면이다단말기.
이 측면은 터미널마다 다를 수 있습니다. 터미널의 경우 terminfo 데이터베이스에는 termcap auto_left_margin
이라는 기능이 있을 수도 있고 없을 수도 있습니다 bw
. 이는 일부 터미널에서처럼 왼쪽 여백을 감싸는 데 백스페이스 키를 사용할 수 있는지 여부를 프로그램에 알려줍니다. 자동 왼쪽 여백이 있는 터미널을 사용하면 이전 줄에 나타 c
납니다 .
탭을 다시 프로그래밍하면 더 다양한 동작을 볼 수 있습니다.
그런데 와 를 결합 TAB
하면 흥미로운 일이 일어납니다 . BS
termcap 매뉴얼의 25년 된 경고는 자동 왼쪽 여백 기능이 보고되지 않거나 커서가 첫 번째 줄에 있을 때 백스페이스가 여백을 초과한다는 것입니다.System V 인터페이스 정의FreeBSD 매뉴얼에 따르면 이것은 언뜻 보기에는 이상하고 지나치게 조심스러워 보일 수 있습니다.가지다알려진 터미널 제어 코드 처리는 이 작업을 완전히 올바르게 수행하지 않습니다.
추가 읽기
- Zed M. Ben Halim, Eric S. Raymond 및 Thomas E. Dickey. 용어 정보. FreeBSD 매뉴얼 페이지.
- https://superuser.com/a/711019/38062
- 조나단 드보인 폴라드(2001).Windows NT 4/NT 2000/NT XP의 CSRSS 백스페이스 버그.. 일반적인 답변.
답변2
에코는 시작된 곳으로 돌아갈 수 없습니다. 백스페이스 키를 몇 번 눌러도 출력한 내용을 모두 지우면 원래 위치에 그대로 유지됩니다. 그렇기 때문에 백스페이스를 몇 번이나 눌러도 항상 "c" 문자가 표시됩니다.