ksh93 속이 빈 프롬프트의 위쪽 화살표

ksh93 속이 빈 프롬프트의 위쪽 화살표

이는 설명을 요청하거나 문서를 요청하는 것입니다.

저는 KornShell93( kshMac OS X 또는 ksh93다른 곳) 사용자입니다. 나는 대화형 셸로서의 상대적 단순성과 스크립팅 기능 때문에 이 셸을 좋아하며, 코드가 더욱 자유로워진 2000년부터 이 셸을 사용해 왔습니다. 및 옵션이 vi설정된 편집 모드 에서 사용하고 있습니다 .viviraw

ksh93명령줄에 명령 입력을 시작한 다음 키를 눌러 Up-arrow명령줄 기록에서 일치하는 최신 명령줄을 가져올 수 있는 깔끔한 기능이 있습니다 . 이에 대한 문서와 편집 모드에서 바인딩하는 방법을 찾을 수 있습니다 . 문제 없습니다 [count][A.vi

그러나 Up-arrow빈 프롬프트를 누르면 가장 최근에 실행된 명령이 먼저 제공되고 이전에 찾고 있던 명령 접두어를 통해 반복이 시작됩니다. 이것은 나를 끝없이 괴롭힌다.

예:

다음 세 가지 명령을 실행합니다.

$ ls -l
$ ls -ld test
$ ls -ld testdir

입력 ls한 다음 Up-arrow세 번 누르면 역순으로 순환됩니다.

나중에 더 많은 명령이 실행되었지만 기록 검색도 호출도 없었습니다 ls.

$ cc -o testrun mytest.c
$ man strncmp

지금 한 번 누르면 Up-arrow가 표시됩니다 man strncmp. Up-arrow다시 누르면 명령 대신 ls -ld testdir이전 명령이 표시됩니다.ls -ld testcc -o testrun mytest.c

Up-arrow이전에 사용한 접두사를 검색하지 않고 미리 명령줄에 아무 것도 입력하지 않고도 최근 기록을 반복할 수 있도록 이 문제를 "수정"하는 방법에 대한 지침을 찾고 있습니다 . 위의 동작이 문서화된 위치에 대한 포인터라도 좋을 것입니다.

편집하다:

설명서 ksh93에 따르면

[count]k 이전 명령을 가져옵니다. 입력할 때 마다 k이전 명령에 액세스됩니다.

/string 포함된 이전 명령에 대해 기록에서 뒤로 검색합니다 string. 또는 에 의해 String종료되었습니다 . 앞에 가 있으면 일치하는 줄은 다음으로 시작해야 합니다. null인 경우 이전 항목이 사용됩니다.RETURNNEW LINEstring^stringstringstring

[count][A 커서가 줄의 끝에 있으면 현재 줄의 내용을 / 설정하는 것과 같습니다. string그렇지 않으면 와 동일합니다 k.

이것은 실제로아니요내가 왜 그런지 설명해주세요첫 번째man strncmp(누르듯이 k) 가져오고그 다음에ls -ld testdir위의 예를 입력하세요 . 설명서에 적힌 내용을 고려해 볼 때, 나는 ls -ld testdir첫 번째 프레스를 선호했을 것입니다 Up-arrow(그런데 더 짜증날 것입니다).

답변1

이는 문서화된 동작으로 밝혀졌습니다. ksh93 매뉴얼 페이지에서:

편집 명령을 검색합니다. 이 명령은 명령 기록에 액세스합니다.

[count]k 이전 명령을 가져옵니다. k를 입력할 때마다 이전 명령에 액세스합니다.

[count]- k와 동일합니다.

[count][A커서가 줄의 끝에 있으면 /with 와 동일합니다.현재 줄의 내용으로 설정합니다. 그렇지 않으면 와 동일합니다 k.

[count]j 다음 명령을 받으세요. 다음 전달 명령은 각 입력 j에서 액세스됩니다 .

/ 포함된 이전 명령에 대해 기록에서 뒤로 검색. 새 줄로 종료됩니다 RETURN' or. 만약에앞에 가 ^있고 일치하는 줄은 다음으로 시작해야 합니다.. 만약에null인 경우 이전 문자열이 사용됩니다.

참고: 문자열을 입력한 후 위쪽 화살표를 사용하면 검색 문자열이고정된이전에 입력 한 대로 줄의 시작 부분으로 이동합니다 ^.

예:

$ ls[Up-Arrow]

동등하다

$ [ESC]/^ls

관련 정보