제가 질문을 잘못한 탓인지, 질문에 대한 답을 찾기가 조금 어려웠습니다.
나는 Bash 스크립팅을 이해합니다. 나는 계속해서 작은 유용한 일을 하기 위해 그것들을 쓰고 있습니다.
하지만 쉘 스크립트와 쉘에서 실행되는 프로그램의 차이점을 알고 싶습니다. 예를 들어 소나무란 무엇인가? 어떤 언어로 쓰여 있나요? 셸에서 실행되지만 내가 아는 한 셸 스크립트는 아니고 탐색할 수 있는 별도의 프로그램이며, 종료하면 셸을 시작했을 때 있었던 위치로 돌아갑니다.
다양한 기능을 가진 프로그램으로 셸에서 실행된다는 점에서 Pine과 같은 기능을 하는 프로그램을 작성하려면 어디서부터 시작해야 합니까? 이런 방식으로 작성된 프로그램의 예는 어디에서 찾을 수 있습니까?
답변1
shell
터미널 에뮬레이터(명령줄 해석기)와 혼동하고 계신 것 같습니다 .
쉘이 대화형으로 실행될 때 pine
사용자와 상호 작용하려면 터미널 또는 터미널 에뮬레이터가 필요합니다. pine
그러나 그것은 껍질과 아무 관련이 없습니다.
과거의 터미널은 컴퓨터(자체에는 모니터나 키보드가 없었음)와 상호 작용하기 위해 직렬 회선을 통해 컴퓨터에 연결된 모니터와 키보드가 있는 장치였습니다. 인터페이스는 간단하고 텍스트 기반입니다.
컴퓨터의 직렬 회선은 문자 장치 파일입니다( /dev/ttyS0
예: Linux에서도 유사). 터미널과 상호 작용하는 애플리케이션은 터미널에 표시하기 위해 장치에 데이터를 씁니다.
예를 들어, 가장 간단한 경우 pine
ASCII에 쓰면 해당 문자에 해당하는 일련의 비트가 직렬 회선을 통해 전송되고 터미널이 화면의 현재 커서 위치에 표시됩니다 a
./dev/ttyS0
a
a
가장 간단한 경우 사용자가 a
키보드를 누르면 터미널은 동일한 비트 시퀀스를 다른 라인의 컴퓨터로 보내고 시스템은 해당 문자를 a
버퍼에 배치하고 on 문자가 pine
실행 되면 해당 문자를 반환합니다 .read()
/dev/ttyS0
a
터미널은 텔레타이프(화면 없음, 종이에 인쇄)와 같은 것에서 a
CRT 모니터가 있는 터미널로 발전했으며, 커서 위치 지정, 영역 지우기/스크롤, 색상 지원과 같은 더 많은 기능을 갖춘 일부 터미널은 이러한 모든 pine
기능을 사용하거나 심지어 그래픽 기능까지 사용합니다. 일부 이스케이프 시퀀스.
그럼에도 불구하고 우리는 수십 년 동안 이 터미널에 대한 애플리케이션을 작성해 왔습니다. X가 할 수 없는 일을 터미널로 할 수 있는 일이 많이 있습니다. 데이터는 양방향의 2문자 스트림이므로 네트워크(텔넷, SSH 등)를 통해 터미널 세션을 내보내는 것이 쉽고 유사한 애플리케이션을 cat
사용하여 터미널에 기록하여 파일 내용을 표시할 수 있습니다. 사용자는 화면에서 볼 수 있으며 정확히 동일한 방식으로 사용되며 동일한 콘텐츠를 파일에 저장하거나 네트워크를 통해 일부 서버로 보내는 데 수정이 필요하지 않습니다... (필요한 것은 출력을 리디렉션하는 것뿐입니다. 그것이 어디에 있는지). 일반적으로 하나의 목적만 갖고 서로 쉽게 협력할 수 없는 X 응용 프로그램에서는 동일한 작업을 수행할 수 없습니다.
이러한 이유 등으로 인해 X가 널리 보급된 후에도 오랫동안 터미널이 계속 사용되었습니다.
이제 실제 터미널은 없지만 터미널을 에뮬레이션하지만 그 자체로는 X 응용 프로그램(컴퓨터에서 실행되고 X 서버, 동일한 컴퓨터 또는 다른 컴퓨터에 표시되는 , xterm
, gnome-terminal
... )과 같은 터미널 에뮬레이터가 있습니다. eterm
)).
기본적으로 이러한 터미널 에뮬레이터 응용 프로그램을 시작하면 해당 응용 프로그램 내에서 셸이 시작되므로 둘 사이에 혼동이 발생하는 경우가 있습니다. 터미널 에뮬레이터에서 셸을 실행할 필요는 없으며 pine
셸에서 시작할 필요도 없지만 터미널이 필요합니다. 세미 그래픽 터미널 애플리케이션입니다. 이는 터미널 장치와 상호 작용하며 해당 장치의 다른 쪽 끝에는 커서 위치 지정, 문자 강조 표시 등과 같은 최소한의 기능 세트를 갖춘 터미널 또는 터미널 에뮬레이터가 필요합니다.