대부분의 Linux 쉘에서는 이 키를 누르면 Up-arrow명령줄 기록에 이전 명령줄이 표시됩니다.
내 질문은 ksh
쉘 의 경우
이전 명령줄을 표시하도록 다른 키를 어떻게 설정합니까?
내가 어떻게 할장애를 입히다Up-arrow이전 명령줄이 표시되지 않도록 키를 사용 하시겠습니까?
답변1
찾을 수 있는 대부분의 튜토리얼은 bash에 관한 것입니다. Ksh는 스크립팅에는 적합하지만 대화형 사용에는 적합하지 않습니다. 가능하다면 명령줄에 zsh(최고) 또는 bash(두 번째 최고)를 사용하십시오.
현재 ksh에는 실제 Korn 셸 ksh93과 복제본 mksh(오랫동안 유지 관리되지 않은 pdksh에서 파생됨)의 두 가지 주요 구현이 있습니다. 그들은 서로 다른 키 바인딩 기능을 가지고 있습니다.
ksh93에서는 기본적으로 명령줄 기록에서 키가 이동되지 않습니다 Up. Down기본 키는 Ctrl+ P및 Ctrl+ 입니다 N. 트랩을 통해 키 바인딩을 변경할 수 있습니다 KEYBD
. 키를 다른 키로만 변환할 수 있고 모든 바인딩을 동일한 위치에서 정의해야 하기 때문에 다소 다루기 어렵습니다. 기록을 Up만들고 탐색하는 방법은 다음과 같습니다 Down(이 코드는 에 들어갑니다 ~/.kshrc
).
set -o emacs
function KEYBD_trap {
case ${.sh.edchar} in
$'\e'[[O]A) .sh.edchar=$'\e>';;
$'\e'[[O]B) .sh.edchar=$'\e<';;
esac
}
trap KEYBD_trap KEYBD
\e[A
및 \eOA
는 다음을 \e
나타냅니다 .ASCII 이스케이프 문자는 사용자가 키를 누를 때 터미널이 보낼 수 있는 두 개의 이스케이프 시퀀스입니다 Up(터미널과 현재 모드에 따라 다름). 마찬가지로, \e[B
및 \eOB
은 입니다 Down. $'\e
문자를 이스케이프하기 위해 ksh에서 사용할 수 있는 표기법입니다. 패턴은 [[O]
a [
또는 a 와 일치합니다 O
.
mksh에서는 내장을 통해 키 바인딩을 정의할 수 있습니다 bind
. Up그리고 Down기본 탐색 기록(kbd>Ctrl+ P및 Ctrl+ 제외 N). 다음 코드( 에 배치됨 ~/.mkshrc
)는 화살표 키를 비활성화합니다.
bind '^[OA'=
bind '^[[A'=
bind '^[OB'=
bind '^[[B'=
^[
mskh 키 바인딩에서 문자를 이스케이프하는 데 사용할 수 있는 표기법입니다.
이 모든 정보는 쉘의 매뉴얼 페이지에 있으며 아직 Unix 쉘에 익숙하지 않은 경우 이해할 수 있는 형식일 필요는 없습니다.