Screen을 사용하여 입력 내용을 전체 셸에서 분리할 수 있습니까? 내 목표는 상태 줄과 같은 것입니다. 한 줄의 내용보다 더 많이 입력하면 상태 줄이 확장되고 Enter 키를 누르면 상태 줄이 셸에 "커밋됨"/"전송됨"이 됩니다.
나는 MUSH/MUD/MUCK/MOO 클라이언트 역할을 하기 위해 스크린+텔넷 조합을 사용하는 간단한 구성을 사용하기를 바라고 있습니다. 현재 텔넷을 사용할 때의 문제점은 원격 서버에서 보낸 데이터가 커서 위치에 삽입된다는 점인데, 이는 긴 문단을 입력할 경우 좋지 않습니다.
답변1
좋은 아키텍처는 화면을 두 개의 창(명령 입력용 창과 프로그램 표시용 창)으로 나누는 것입니다. 이는 기본적으로 일반 MUD 클라이언트가 수행하는 작업입니다. 화면에서 split
( ) 명령을 사용하여 C-a S
이를 수행 할 수 있습니다.
만들다명명된 파이프입력 창에서 텔넷 창으로 입력을 전송합니다: mkfifo mud-input-fifo
. 창 중 하나에서 telnet mud.example.com 1234 <mud-input-fifo
또는 nc mud.example.com 1234 <mud-input-fifo
( nc
예인터넷 고양이, 네트워크의 스위스 군용 칼). 다른 창에서 다음을 실행합니다 rlwrap tee mud-input-fifo
(되감기모든 라인 입력 프로그램에 대한 라인 버전을 제공합니다.
Emacs도 이것을 할 수 있습니다. 그러나 결국 이전에 수행되었던 Emacs에서 MUD 클라이언트를 구현하게 됩니다(mu.el
,mud.el
,mudel.el
,eMUD,...).
답변2
이것은 당신이 요구하는 것을 수행하지 않지만 많은 시스템(리눅스 및 대부분의 BSD 포함)에서 "rpnt" 작업에 대한 키를 설정할 수 있습니다:
stty rprnt '^R'
입력 처리를 위해 tty 드라이버를 사용하는 프로그램에서 이 키를 누르면(이와 같은 기본 서비스에 연결할 때 텔넷이 이 작업을 수행하는 것 같습니다) 입력 줄이 다음 줄에 다시 표시됩니다.
그러면 화면은 다음과 같이 보일 것입니다:
SERVER PROMPT> your text your text your text your textOUTPUT FROM SERVER^R
your text your text your text your text your text_
그 외에도tinyfugue와 같은 실제 MUD 클라이언트도 필요합니다.