퍼티를 사용하여 Red Hat Linux 서버에 연결하고 있습니다. Linux에서 내 쉘은 Korn 쉘입니다. 화면을 지우려면 "Ctrl + l" 조합을 사용하는 데 익숙합니다. 이 콤보가 Ksh에서 작동하지 않는 몇 가지 이유. ksh에 ""를 입력 하면 ctrl + l
새 줄로 이동합니다.
나는 노력했다
alias "^L"=clear
여전히 같은 결과입니다.
나도 시도했다
bind -m '^L'=clear'^J'
그런데 바인드 명령을 찾을 수 없다고 뜹니다. 컴퓨터에 새로운 것을 설치할 수 없습니다.
이 문제를 해결하는 방법을 제안해 주실 수 있나요? 감사해요.
답변1
Red Hat은 명령이 없는 "ksh-93"을 제공합니다 bind
. 이는 특수 기능을 통해 트리거되는 KEYBD
이름 을 제공합니다 . trap
매뉴얼 페이지에 따르면 수정하는 데 사용할 수 있습니다.Emacs 편집 모드.
예제는 다음 위치에 있습니다.[Korn Shell] Home, End, pgup, pgdown 및 삭제 키 수정^L
화면을 깨끗하게 만드는 방법을 보여주는 유용한 시작점입니다. 기본적으로 metacontrolL( ^[^L
)는 화면 지우기 기능에 바인딩되어 있으며 일반은 ^L
변경하려는 다음 줄입니다.
^L Line feed and print current line.
M-^L Clear the screen.
요청한 내용을 수행하려면 예제에 한 줄만 추가하면 됩니다.
set -o emacs
keybd_trap () {
case ${.sh.edchar} in
$'\f') .sh.edchar=$'\e\f';; # clear-screen (THIS QUESTION)
$'\e[1~') .sh.edchar=$'\001';; # Home = beginning-of-line
$'\e[4~') .sh.edchar=$'\005';; # End = end-of-line
$'\e[5~') .sh.edchar=$'\e>';; # PgUp = history-previous
$'\e[6~') .sh.edchar=$'\e<';; # PgDn = history-next
$'\e[3~') .sh.edchar=$'\004';; # Delete = delete-char
esac
}
trap keybd_trap KEYBD
어떤 이유로든 vi 모드는 ksh
.
키가 실제로 기능에 어떻게 매핑되는지에 대한 문서가 모호합니다. 이 예에서는 기능이 src/cmd/ksh93/edit/emacs.c
스위치/케이스 문의 일부로 구현됩니다.
#ifdef _cmd_tput
case cntl('L'): /* clear screen */
sh_trap("tput clear", 0);
draw(ep,REFRESH);
return(-1);
#endif
이스케이프 기능(즉, "메타" 처리)에서. 따라서 사용자 정의할 수 있는 기본 제공 동작입니다.
추가 자료:
Q4. 키바인딩은 어떻게 이루어지나요? A4. ksh93은 키를 누를 때마다 실행되는 KEYBD 트랩을 제공합니다. 키보드로 입력됩니다. 이 함정을 사용하고 공범자 ksh93의 배열 기능은 키 바인딩 기능을 쉽게 작성할 수 있습니다. 입력된 키 시퀀스를 다른 키 시퀀스에 매핑합니다.
- 10.3. 사용자 정의 편집 모드(Korn Shell 알아보기)