내가 이것을 묻는 이유는 무엇입니까?
짐작할 수 있듯이 이는 대부분 호기심에서 비롯된 것입니다. 그런데 왜 내 마음 속에 호기심이 생겼습니까?
글쎄, 한동안 나는 clear
터미널 화면을 지우기 위해 달려간 후 화면 하단에서 눈을 떼야했고 일련의 명령과 해당 명령 후에 프롬프트가 끝났다는 사실에 불만을 느꼈습니다. 화면 상단으로 출력합니다.
그것이 내가 내 안에 삽입한 것입니다 ~/.bashrc
:
__prompt_to_bottom_line() {
tput cup $LINES
}
alias clear='clear && __prompt_to_bottom_line'
나에게 실행 후 하단의 프롬프트 clear
는 프롬프트가언제나맨 아래가 아니라 맨 위가 아닙니다. 다른 모든 것은 정상과 같습니다.
나머지는 어떻습니까?
이런 필요성을 느끼는 사람은 나뿐만이 아닐 것 같습니다.이 문제예를 들어, 사용자는 프롬프트가 항상 맨 위에 있고 출력이 그 아래에 있기를 원합니다.하지만 역순으로(그러나 여러 줄이라도 명령의 한 출력은 분명히 반전되지 않습니다.)
생각해 보면 사용자가 화면에서 보기를 기대하는 것이 정확히 tac
내가 기대하는 것과 같습니다(여러 줄 출력이 반전되지 않는다는 점만 제외하면).
그래서 내 질문은
터미널 설계에 이렇게 일관성 없는 동작이 나타나는 이유는 무엇입니까? 균일하지 않다는 말은 시작된 상황이 1 clear
s를 제외하고는 절대 반복되지 않는다는 것입니다. 이로 인해 명령이 계속 변경되고 프롬프트가 화면 아래로 이동하고 결국 프롬프트가 "안정적" 위치로 끝납니다. 누군가 거기에 있지 않으면 화면이 다시 움직이지 않습니다 clear
.
라인이 항상 위/아래에 있고 출력이 아래/위로 눌려져 있어서 좀 더 눈에 편한 디자인이지 않나요?
답변1
나는 터미널 에뮬레이터와 가상 콘솔에 대해 이야기하고 있습니다. 둘 다 사용
bash
하지만 다른 쉘을 사용할 수 있으므로 그렇다고 생각합니다. 쉘의 동작에 대해 묻고 있습니다.
터미널 에뮬레이터 동작 내역은 다음 위치에 포함되어야 합니다.터미널 에뮬레이터에서 입력 커서가 항상 위에서 아래로 이동하는 이유는 무엇입니까?내 답변을 포함한 답변에는 Lear Siegler ADM 터미널의 역사에 대한 개요가 부족합니다. 왜냐하면 대부분의 동작이 터미널의 진화와 관련되어 있기 때문입니다. 초기 터미널은 "밑줄 입력"만 지원했습니다. 현재 우리에게 친숙한 "밑줄 스크롤" 동작은 ADM-3A에 도입된 옵션이었습니다.
쉘 동작의 이러한 측면에 대한 기록은 실제로 존재하지 않는다는 것입니다. sh
-style 쉘은 터미널이나 그 기능에 대해 아무것도 모릅니다. 본질적으로 쉘은 입력이 터미널에서 오는지와 출력이 터미널인 것처럼 가장하는 장치로 전송되는지 여부에만 관심이 있습니다(다음에 의해 결정됨).isatty
기능); 텔레프린터, 유리 터미널, 터미널 에뮬레이터 또는 기타 터미널 호환 장치(가상 또는 기타)인지는 알 수 없습니다.
sh
¹ 현재 스타일의 쉘의 일부 기능 으로 인해 "기본적으로"예를 들어 select
Bash에서 터미널은 주어진 수의 열과 행을 갖는 것으로 알려져 있습니다.